From da1053d635f7c7cec8d13e4c098c3533aa060f8f Mon Sep 17 00:00:00 2001 From: Colin Date: Mon, 19 Feb 2024 12:57:44 +0000 Subject: [PATCH] programs: configure auto-launching programs to only start *after* graphical-session.target this ensures they really have their environment --- hosts/common/programs/conky/default.nix | 4 ++-- hosts/common/programs/dino.nix | 3 +++ hosts/common/programs/fractal.nix | 5 ++++- hosts/common/programs/geary.nix | 5 ++++- hosts/common/programs/gtkcord4.nix | 5 ++++- hosts/common/programs/mako.nix | 2 -- hosts/common/programs/signal-desktop.nix | 5 ++++- .../common/programs/swaynotificationcenter.nix | 17 +++++++++++------ hosts/common/programs/waybar/default.nix | 15 ++++++++++----- hosts/common/programs/wob/default.nix | 7 +++++-- 10 files changed, 47 insertions(+), 21 deletions(-) diff --git a/hosts/common/programs/conky/default.nix b/hosts/common/programs/conky/default.nix index be1d99a8..aa67418a 100644 --- a/hosts/common/programs/conky/default.nix +++ b/hosts/common/programs/conky/default.nix @@ -26,14 +26,14 @@ services.conky = { description = "conky dynamic desktop background"; + after = [ "graphical-session.target" ]; + # partOf = [ "graphical-session.target" ]; # propagate stop/restart signal from graphical-session to this unit wantedBy = [ "graphical-session.target" ]; - # partOf = [ "graphical-session.target" ]; serviceConfig.ExecStart = "${config.sane.programs.conky.package}/bin/conky"; serviceConfig.Type = "simple"; serviceConfig.Restart = "on-failure"; serviceConfig.RestartSec = "10s"; - # serviceConfig.Slice = "session.slice"; }; }; } diff --git a/hosts/common/programs/dino.nix b/hosts/common/programs/dino.nix index 46ada9f6..03892867 100644 --- a/hosts/common/programs/dino.nix +++ b/hosts/common/programs/dino.nix @@ -65,7 +65,10 @@ in services.dino = { description = "dino XMPP client"; + after = [ "graphical-session.target" ]; + # partOf = [ "graphical-session.target" ]; wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ]; + serviceConfig = { ExecStart = "${cfg.package}/bin/dino"; Type = "simple"; diff --git a/hosts/common/programs/fractal.nix b/hosts/common/programs/fractal.nix index 22f6b0aa..56016a17 100644 --- a/hosts/common/programs/fractal.nix +++ b/hosts/common/programs/fractal.nix @@ -64,8 +64,11 @@ in suggestedPrograms = [ "gnome-keyring" ]; services.fractal = { - description = "auto-start and maintain fractal Matrix connection"; + description = "fractal Matrix client"; + after = [ "graphical-session.target" ]; + # partOf = [ "graphical-session.target" ]; wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ]; + serviceConfig = { ExecStart = "${cfg.package}/bin/fractal"; Type = "simple"; diff --git a/hosts/common/programs/geary.nix b/hosts/common/programs/geary.nix index e6f538ef..2692498a 100644 --- a/hosts/common/programs/geary.nix +++ b/hosts/common/programs/geary.nix @@ -87,8 +87,11 @@ in secrets.".config/geary/account_02/geary.ini" = ../../../secrets/common/geary_account_02.ini.bin; services.geary = { - description = "Geary email client"; + description = "geary email client"; + after = [ "graphical-session.target" ]; + # partOf = [ "graphical-session.target" ]; wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ]; + serviceConfig = { ExecStart = "${cfg.package}/bin/geary"; Type = "simple"; diff --git a/hosts/common/programs/gtkcord4.nix b/hosts/common/programs/gtkcord4.nix index 448fe143..aa65fa7f 100644 --- a/hosts/common/programs/gtkcord4.nix +++ b/hosts/common/programs/gtkcord4.nix @@ -53,8 +53,11 @@ in ]; services.gtkcord4 = { - description = "unofficial Discord chat client"; + description = "gtkcord4 Discord client"; + after = [ "graphical-session.target" ]; + # partOf = [ "graphical-session.target" ]; wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ]; + serviceConfig = { ExecStart = "${cfg.package}/bin/gtkcord4"; Type = "simple"; diff --git a/hosts/common/programs/mako.nix b/hosts/common/programs/mako.nix index 327999fb..5cadb936 100644 --- a/hosts/common/programs/mako.nix +++ b/hosts/common/programs/mako.nix @@ -54,8 +54,6 @@ services.mako = { description = "mako desktop notification daemon"; wantedBy = [ "graphical-session.target" ]; - # XXX: should be part of graphical-session.target, but whatever mix of greetd/sway - # i'm using means that target's never reached... serviceConfig.ExecStart = "${config.sane.programs.mako.package}/bin/mako"; serviceConfig.Type = "simple"; diff --git a/hosts/common/programs/signal-desktop.nix b/hosts/common/programs/signal-desktop.nix index 7cbb5127..e975af2f 100644 --- a/hosts/common/programs/signal-desktop.nix +++ b/hosts/common/programs/signal-desktop.nix @@ -42,8 +42,11 @@ in ]; services.signal-desktop = { - description = "Signal Messenger"; + description = "signal-desktop Signal Messenger client"; + after = [ "graphical-session.target" ]; + # partOf = [ "graphical-session.target" ]; wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ]; + serviceConfig = { ExecStart = "${cfg.package}/bin/signal-desktop"; Type = "simple"; diff --git a/hosts/common/programs/swaynotificationcenter.nix b/hosts/common/programs/swaynotificationcenter.nix index 62f69379..39e7f610 100644 --- a/hosts/common/programs/swaynotificationcenter.nix +++ b/hosts/common/programs/swaynotificationcenter.nix @@ -501,13 +501,18 @@ in services.swaync = { # swaync ships its own service, but i want to add `environment` variables and flags for easier debugging. # seems that's not possible without defining an entire nix-native service (i.e. this). - description = "Swaync desktop notification daemon"; + description = "swaynotificationcenter (swaync) desktop notification daemon"; + after = [ "graphical-session.target" ]; + # partOf = [ "graphical-session.target" ]; wantedBy = [ "graphical-session.target" ]; - serviceConfig.ExecStart = "${cfg.package}/bin/swaync"; - serviceConfig.Type = "simple"; - # serviceConfig.BusName = "org.freedesktop.Notifications"; - serviceConfig.Restart = "on-failure"; - serviceConfig.RestartSec = "10s"; + + serviceConfig = { + ExecStart = "${cfg.package}/bin/swaync"; + Type = "simple"; + # BusName = "org.freedesktop.Notifications"; + Restart = "on-failure"; + RestartSec = "10s"; + }; environment.G_MESSAGES_DEBUG = "all"; }; }; diff --git a/hosts/common/programs/waybar/default.nix b/hosts/common/programs/waybar/default.nix index 815a4000..ca2f2e73 100644 --- a/hosts/common/programs/waybar/default.nix +++ b/hosts/common/programs/waybar/default.nix @@ -78,12 +78,17 @@ in (builtins.readFile ./waybar-style.css) + cfg.config.extra_style; services.waybar = { - description = "sway header bar"; + description = "swaybar graphical header bar/tray for sway"; + after = [ "graphical-session.target" ]; + # partOf = [ "graphical-session.target" ]; wantedBy = [ "graphical-session.target" ]; - serviceConfig.ExecStart = "${cfg.package}/bin/waybar"; - serviceConfig.Type = "simple"; - serviceConfig.Restart = "on-failure"; - serviceConfig.RestartSec = "10s"; + + serviceConfig = { + ExecStart = "${cfg.package}/bin/waybar"; + Type = "simple"; + Restart = "on-failure"; + RestartSec = "10s"; + }; # environment.G_MESSAGES_DEBUG = "all"; }; }; diff --git a/hosts/common/programs/wob/default.nix b/hosts/common/programs/wob/default.nix index a8f42189..7439f826 100644 --- a/hosts/common/programs/wob/default.nix +++ b/hosts/common/programs/wob/default.nix @@ -63,8 +63,11 @@ in ''; services.wob = { - description = "Wayland Overlay Bar (renders volume/backlight levels)"; + description = "Wayland Overlay Bar (wob) renders volume/backlight levels when requested"; + after = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; wantedBy = lib.mkIf cfg.config.autostart [ "graphical-session.target" ]; + serviceConfig = { # ExecStart = "${cfg.package}/bin/wob"; Type = "simple"; @@ -83,7 +86,7 @@ in }; services.wob-pulse = { - description = "notify wob when pulseaudio volume changes"; + description = "wob-pulse: monitor pulseaudio and display volume changes on-screen"; wantedBy = [ "wob.service" ]; serviceConfig = { ExecStart = "${wob-pulse}/bin/wob-pulse";