sway: add a safeguard to catch if the systemd environ race condition is re-introduced
This commit is contained in:
parent
8886177c23
commit
0b6b98bba6
|
@ -188,12 +188,23 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
services.sway-session = {
|
services.sway-session = {
|
||||||
description = "no-op unit to signal that sway is operational";
|
description = "sway-session: active iff sway desktop environment is baseline operational";
|
||||||
documentation = [
|
documentation = [
|
||||||
"https://github.com/swaywm/sway/issues/7862"
|
"https://github.com/swaywm/sway/issues/7862"
|
||||||
"https://github.com/alebastr/sway-systemd"
|
"https://github.com/alebastr/sway-systemd"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# we'd like to start graphical-session after sway is ready, but it's marked `RefuseManualStart` because Lennart.
|
||||||
|
# instead, create `sway-session.service` which `bindsTo` `graphical-session.target`.
|
||||||
|
# we can manually start `sway-session`, and the `bindsTo` means that it will start `graphical-session`,
|
||||||
|
# and then track `graphical-session`s state (that is: it'll stop when graphical-session stops).
|
||||||
|
#
|
||||||
|
# additionally, set `ConditionEnvironment` to guard that the sway environment variables *really have* been imported into systemd.
|
||||||
|
unitConfig.ConditionEnvironment = "SWAYSOCK";
|
||||||
|
# requiredBy = [ "graphical-session.target" ];
|
||||||
|
before = [ "graphical-session.target" ];
|
||||||
bindsTo = [ "graphical-session.target" ];
|
bindsTo = [ "graphical-session.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.coreutils}/bin/true";
|
ExecStart = "${pkgs.coreutils}/bin/true";
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
|
@ -294,14 +305,17 @@ in
|
||||||
|
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
services.blueman.enable = true;
|
services.blueman.enable = true;
|
||||||
|
|
||||||
# gsd provides Rfkill, which is required for the bluetooth pane in gnome-control-center to work
|
# gsd provides Rfkill, which is required for the bluetooth pane in gnome-control-center to work
|
||||||
# services.gnome.gnome-settings-daemon.enable = true;
|
# services.gnome.gnome-settings-daemon.enable = true;
|
||||||
|
|
||||||
# start the components of gsd we need at login
|
# start the components of gsd we need at login
|
||||||
# systemd.user.targets."org.gnome.SettingsDaemon.Rfkill".wantedBy = [ "graphical-session.target" ];
|
# systemd.user.targets."org.gnome.SettingsDaemon.Rfkill".wantedBy = [ "graphical-session.target" ];
|
||||||
# go ahead and `systemctl --user cat gnome-session-initialized.target`. i dare you.
|
# go ahead and `systemctl --user cat gnome-session-initialized.target`. i dare you.
|
||||||
# the only way i can figure out how to get Rfkill to actually load is to just disable all the shit it depends on.
|
# the only way i can figure out how to get Rfkill to actually load is to just disable all the shit it depends on.
|
||||||
# it doesn't actually seem to need ANY of them in the first place T_T
|
# it doesn't actually seem to need ANY of them in the first place T_T
|
||||||
# systemd.user.targets."gnome-session-initialized".enable = false;
|
# systemd.user.targets."gnome-session-initialized".enable = false;
|
||||||
|
|
||||||
# bluez can't connect to audio devices unless pipewire is running.
|
# bluez can't connect to audio devices unless pipewire is running.
|
||||||
# a system service can't depend on a user service, so just launch it at graphical-session
|
# a system service can't depend on a user service, so just launch it at graphical-session
|
||||||
systemd.user.services."pipewire".wantedBy = [ "graphical-session.target" ];
|
systemd.user.services."pipewire".wantedBy = [ "graphical-session.target" ];
|
||||||
|
|
Loading…
Reference in New Issue
Block a user