diff --git a/docs/release-notes/rl-2611.md b/docs/release-notes/rl-2611.md index 4243a294ba..a79d40d959 100644 --- a/docs/release-notes/rl-2611.md +++ b/docs/release-notes/rl-2611.md @@ -16,9 +16,9 @@ This release has the following notable changes: - On Darwin, Home Manager launchd agents now support [](#opt-launchd.agents._name_.domain) to choose either the user's GUI or - background launchd domain. Background services provided by Home Manager now - use the user domain, which allows activations from contexts such as SSH - sessions without requiring an active graphical login session. + background launchd domain. Agents use the GUI domain by default. Set the + domain to `user` for agents that should run without an active graphical login + session. ## State Version Changes {#sec-release-26.11-state-version-changes} diff --git a/modules/misc/news/2026/06/2026-06-18_02-02-00.nix b/modules/misc/news/2026/06/2026-06-18_02-02-00.nix index 2fcab71a69..a042085a98 100644 --- a/modules/misc/news/2026/06/2026-06-18_02-02-00.nix +++ b/modules/misc/news/2026/06/2026-06-18_02-02-00.nix @@ -6,10 +6,8 @@ message = '' Home Manager launchd agents now support the - `launchd.agents..domain` option. Background services provided by Home - Manager use the user launchd domain by default, so they can be managed from - SSH and other non-graphical sessions. Set - `launchd.agents..domain = "gui"` for agents that need the graphical - session. + `launchd.agents..domain` option. Agents use the GUI launchd domain by + default. Set `launchd.agents..domain = "user"` for agents that should + run without an active graphical login session. ''; } diff --git a/modules/programs/atuin.nix b/modules/programs/atuin.nix index 9ed4ae92e8..dcd6f9b84e 100644 --- a/modules/programs/atuin.nix +++ b/modules/programs/atuin.nix @@ -303,7 +303,6 @@ in launchd.agents.atuin-daemon = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (lib.getExe cfg.package) ] ++ daemonArgs; EnvironmentVariables = lib.optionalAttrs (daemonCfg.logLevel != null) { diff --git a/modules/programs/git.nix b/modules/programs/git.nix index 902521e318..3e9ddb2f6e 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -609,7 +609,6 @@ in { "git-maintenance-hourly" = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = baseArguments ++ [ "--schedule=hourly" ]; StartCalendarInterval = map (hour: { @@ -620,7 +619,6 @@ in }; "git-maintenance-daily" = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = baseArguments ++ [ "--schedule=daily" ]; StartCalendarInterval = map (weekday: { @@ -632,7 +630,6 @@ in }; "git-maintenance-weekly" = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = baseArguments ++ [ "--schedule=weekly" ]; StartCalendarInterval = [ diff --git a/modules/programs/nh.nix b/modules/programs/nh.nix index c6406a5ea7..81af59a2a6 100644 --- a/modules/programs/nh.nix +++ b/modules/programs/nh.nix @@ -151,7 +151,6 @@ in launchd.agents.nh-clean = lib.mkIf cfg.clean.enable { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ "${lib.getExe cfg.package}" diff --git a/modules/programs/opencode.nix b/modules/programs/opencode.nix index 9d2fbdb6fe..914ff442c2 100644 --- a/modules/programs/opencode.nix +++ b/modules/programs/opencode.nix @@ -631,7 +631,6 @@ in launchd.agents = mkIf webCfg.enable { opencode-web = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = let diff --git a/modules/programs/rclone.nix b/modules/programs/rclone.nix index 2a2a8757fd..10a40f4461 100644 --- a/modules/programs/rclone.nix +++ b/modules/programs/rclone.nix @@ -160,7 +160,6 @@ let in { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (lib.getExe rcloneSidecarWrapper) @@ -620,7 +619,6 @@ in mkLaunchdConfigService = lib.mkIf (cfg.remotes != { }) { rclone-config = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (lib.getExe rcloneConfigScript) ]; RunAtLoad = true; diff --git a/modules/services/borgmatic.nix b/modules/services/borgmatic.nix index 6ecd845771..a950c93b06 100644 --- a/modules/services/borgmatic.nix +++ b/modules/services/borgmatic.nix @@ -87,7 +87,6 @@ in launchd.agents.borgmatic = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (lib.getExe programConfig.package) diff --git a/modules/services/colima.nix b/modules/services/colima.nix index 154b4cd50b..bd43e51aba 100644 --- a/modules/services/colima.nix +++ b/modules/services/colima.nix @@ -265,7 +265,6 @@ in name: profile: lib.nameValuePair "colima-${name}" { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ "${lib.getExe cfg.package}" diff --git a/modules/services/emacs.nix b/modules/services/emacs.nix index 114f3f04dd..45e24952e8 100644 --- a/modules/services/emacs.nix +++ b/modules/services/emacs.nix @@ -218,7 +218,6 @@ in launchd.agents.emacs = { enable = true; - domain = lib.mkDefault (if cfg.startWithUserSession == "graphical" then "gui" else "user"); config = { ProgramArguments = [ "${cfg.package}/bin/emacs" diff --git a/modules/services/exo.nix b/modules/services/exo.nix index fda30a7594..366cbdd04e 100644 --- a/modules/services/exo.nix +++ b/modules/services/exo.nix @@ -60,7 +60,6 @@ in launchd.agents.exo = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (lib.getExe cfg.package) ] ++ cfg.extraArgs; EnvironmentVariables = cfg.environmentVariables; diff --git a/modules/services/git-sync.nix b/modules/services/git-sync.nix index fb8b246266..579012808a 100644 --- a/modules/services/git-sync.nix +++ b/modules/services/git-sync.nix @@ -108,7 +108,6 @@ in launchd.agents = services ( _name: repo: { enable = true; - domain = lib.mkDefault "user"; config = { StartInterval = repo.interval; ProcessType = "Background"; diff --git a/modules/services/glance.nix b/modules/services/glance.nix index a709376061..bbca1748b7 100644 --- a/modules/services/glance.nix +++ b/modules/services/glance.nix @@ -87,7 +87,6 @@ in launchd.agents.glance = mkIf (cfg.package != null) { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (getExe cfg.package) diff --git a/modules/services/home-manager-auto-expire.nix b/modules/services/home-manager-auto-expire.nix index 5d7038434a..147fe3b516 100644 --- a/modules/services/home-manager-auto-expire.nix +++ b/modules/services/home-manager-auto-expire.nix @@ -105,7 +105,6 @@ in launchd.agents.home-manager-auto-expire = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (toString script) ]; ProcessType = "Background"; diff --git a/modules/services/imapnotify/default.nix b/modules/services/imapnotify/default.nix index 5753b05cd6..b33d16b6aa 100644 --- a/modules/services/imapnotify/default.nix +++ b/modules/services/imapnotify/default.nix @@ -65,7 +65,6 @@ let name = "imapnotify-${name}"; value = { enable = true; - domain = lib.mkDefault "user"; config = { # Use the nix store path for config to ensure service restarts when it changes ProgramArguments = [ diff --git a/modules/services/mpd.nix b/modules/services/mpd.nix index 592639797f..d7c8b7a2e3 100644 --- a/modules/services/mpd.nix +++ b/modules/services/mpd.nix @@ -254,7 +254,6 @@ in launchd.agents.mpd = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (lib.getExe cfg.package) diff --git a/modules/services/nix-gc.nix b/modules/services/nix-gc.nix index 981007e61e..575412b388 100644 --- a/modules/services/nix-gc.nix +++ b/modules/services/nix-gc.nix @@ -121,7 +121,6 @@ in launchd.agents.nix-gc = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ "${nixPackage}/bin/nix-collect-garbage" diff --git a/modules/services/ollama.nix b/modules/services/ollama.nix index 7a630b643c..908b622daf 100644 --- a/modules/services/ollama.nix +++ b/modules/services/ollama.nix @@ -107,7 +107,6 @@ in launchd.agents.ollama = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ "${lib.getExe ollamaPackage}" diff --git a/modules/services/podman/darwin.nix b/modules/services/podman/darwin.nix index 575abe39a4..c63da79630 100644 --- a/modules/services/podman/darwin.nix +++ b/modules/services/podman/darwin.nix @@ -311,7 +311,6 @@ in name: machine: nameValuePair "podman-machine-${name}" { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ "${mkWatchdogScript name machine}" ]; KeepAlive = { diff --git a/modules/services/pueue.nix b/modules/services/pueue.nix index 1883175bff..5046bb5f5a 100644 --- a/modules/services/pueue.nix +++ b/modules/services/pueue.nix @@ -57,7 +57,6 @@ in launchd.agents.pueued = lib.mkIf (cfg.package != null) { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ diff --git a/modules/services/ssh-agent.nix b/modules/services/ssh-agent.nix index d82cea66a8..348a301edb 100644 --- a/modules/services/ssh-agent.nix +++ b/modules/services/ssh-agent.nix @@ -105,7 +105,6 @@ in launchd.agents.ssh-agent = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (lib.getExe pkgs.bash) diff --git a/modules/services/syncthing.nix b/modules/services/syncthing.nix index c2a958a5c1..c36495af47 100644 --- a/modules/services/syncthing.nix +++ b/modules/services/syncthing.nix @@ -943,7 +943,6 @@ in launchd.agents = { syncthing = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ "${pkgs.writers.writeBash "syncthing-wrapper" '' diff --git a/modules/services/tldr-update.nix b/modules/services/tldr-update.nix index a9c0247078..5322ac68e1 100644 --- a/modules/services/tldr-update.nix +++ b/modules/services/tldr-update.nix @@ -62,7 +62,6 @@ in launchd.agents.tldr-update = { enable = true; - domain = lib.mkDefault "user"; config = { ProgramArguments = [ (lib.getExe cfg.package) diff --git a/tests/modules/programs/git/expected-agent-daily.plist b/tests/modules/programs/git/expected-agent-daily.plist index aa5fcfe447..1ea3a38481 100644 --- a/tests/modules/programs/git/expected-agent-daily.plist +++ b/tests/modules/programs/git/expected-agent-daily.plist @@ -4,8 +4,6 @@ Label org.nix-community.home.git-maintenance-daily - LimitLoadToSessionType - Background ProgramArguments /bin/sh diff --git a/tests/modules/programs/git/expected-agent-hourly.plist b/tests/modules/programs/git/expected-agent-hourly.plist index dd17dfd826..90780fb8c7 100644 --- a/tests/modules/programs/git/expected-agent-hourly.plist +++ b/tests/modules/programs/git/expected-agent-hourly.plist @@ -4,8 +4,6 @@ Label org.nix-community.home.git-maintenance-hourly - LimitLoadToSessionType - Background ProgramArguments /bin/sh diff --git a/tests/modules/programs/git/expected-agent-weekly.plist b/tests/modules/programs/git/expected-agent-weekly.plist index 3e4c091206..e2c8a3f946 100644 --- a/tests/modules/programs/git/expected-agent-weekly.plist +++ b/tests/modules/programs/git/expected-agent-weekly.plist @@ -4,8 +4,6 @@ Label org.nix-community.home.git-maintenance-weekly - LimitLoadToSessionType - Background ProgramArguments /bin/sh diff --git a/tests/modules/programs/nh/darwin/launchd.plist b/tests/modules/programs/nh/darwin/launchd.plist index 173ae36278..987f210534 100644 --- a/tests/modules/programs/nh/darwin/launchd.plist +++ b/tests/modules/programs/nh/darwin/launchd.plist @@ -4,8 +4,6 @@ Label org.nix-community.home.nh-clean - LimitLoadToSessionType - Background ProgramArguments /bin/sh diff --git a/tests/modules/programs/opencode/web-service-environment-file.plist b/tests/modules/programs/opencode/web-service-environment-file.plist index e4e2f5c718..7c91f87a87 100644 --- a/tests/modules/programs/opencode/web-service-environment-file.plist +++ b/tests/modules/programs/opencode/web-service-environment-file.plist @@ -11,8 +11,6 @@ Label org.nix-community.home.opencode-web - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/programs/opencode/web-service.plist b/tests/modules/programs/opencode/web-service.plist index 40dfafdd95..086160812d 100644 --- a/tests/modules/programs/opencode/web-service.plist +++ b/tests/modules/programs/opencode/web-service.plist @@ -11,8 +11,6 @@ Label org.nix-community.home.opencode-web - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/borgmatic/darwin/expected-agent.plist b/tests/modules/services/borgmatic/darwin/expected-agent.plist index 60cb68eb24..53436923f6 100644 --- a/tests/modules/services/borgmatic/darwin/expected-agent.plist +++ b/tests/modules/services/borgmatic/darwin/expected-agent.plist @@ -4,8 +4,6 @@ Label org.nix-community.home.borgmatic - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/colima/darwin/colima-docker-cli-expected.plist b/tests/modules/services/colima/darwin/colima-docker-cli-expected.plist index 025f486307..6cc241d696 100644 --- a/tests/modules/services/colima/darwin/colima-docker-cli-expected.plist +++ b/tests/modules/services/colima/darwin/colima-docker-cli-expected.plist @@ -22,8 +22,6 @@ Label org.nix-community.home.colima-default - LimitLoadToSessionType - Background ProgramArguments /bin/sh diff --git a/tests/modules/services/colima/darwin/expected-agent.plist b/tests/modules/services/colima/darwin/expected-agent.plist index 86a8d57ad3..15a64c6aa8 100644 --- a/tests/modules/services/colima/darwin/expected-agent.plist +++ b/tests/modules/services/colima/darwin/expected-agent.plist @@ -18,8 +18,6 @@ Label org.nix-community.home.colima-default - LimitLoadToSessionType - Background ProgramArguments /bin/sh diff --git a/tests/modules/services/emacs/darwin/expected-agent.plist b/tests/modules/services/emacs/darwin/expected-agent.plist index 266e9ed86e..cc9b768245 100644 --- a/tests/modules/services/emacs/darwin/expected-agent.plist +++ b/tests/modules/services/emacs/darwin/expected-agent.plist @@ -11,8 +11,6 @@ Label org.nix-community.home.emacs - LimitLoadToSessionType - Background ProgramArguments /bin/sh diff --git a/tests/modules/services/git-sync/darwin/expected-agent.plist b/tests/modules/services/git-sync/darwin/expected-agent.plist index c55c385446..53d8156e1b 100644 --- a/tests/modules/services/git-sync/darwin/expected-agent.plist +++ b/tests/modules/services/git-sync/darwin/expected-agent.plist @@ -4,8 +4,6 @@ Label org.nix-community.home.git-sync-test - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/glance/default-settings.nix b/tests/modules/services/glance/default-settings.nix index f183fe7dbe..aea24ad942 100644 --- a/tests/modules/services/glance/default-settings.nix +++ b/tests/modules/services/glance/default-settings.nix @@ -18,12 +18,10 @@ serviceFile=$(normalizeStorePaths $serviceFile) assertFileExists "$serviceFile" assertFileContent "$serviceFile" ${./glance.plist} - assertFileContains "$serviceFile" 'LimitLoadToSessionType' - assertFileContains "$serviceFile" 'Background' domainFile=LaunchAgentDomains/org.nix-community.home.glance.domain - assertFileContent "$domainFile" ${builtins.toFile "expected-domain" "user\n"} - assertFileContains activate 'domain="user/$(id -u)"' + assertFileContent "$domainFile" ${builtins.toFile "expected-domain" "gui\n"} + assertFileContains activate 'domain="gui/$(id -u)"' assertFileContains activate 'launchctl kickstart -k "$domain/org.nix-community.home.glance"' '') ]; diff --git a/tests/modules/services/glance/domain-override.nix b/tests/modules/services/glance/domain-override.nix index 407b20840f..d2e755822c 100644 --- a/tests/modules/services/glance/domain-override.nix +++ b/tests/modules/services/glance/domain-override.nix @@ -2,13 +2,13 @@ { services.glance.enable = true; - launchd.agents.glance.domain = "gui"; + launchd.agents.glance.domain = "user"; nmt.script = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin '' domainFile=LaunchAgentDomains/org.nix-community.home.glance.domain assertFileExists "$domainFile" - assertFileContent "$domainFile" ${builtins.toFile "expected-domain" "gui\n"} - assertFileContains activate 'domain="gui/$(id -u)"' + assertFileContent "$domainFile" ${builtins.toFile "expected-domain" "user\n"} + assertFileContains activate 'domain="user/$(id -u)"' assertFileContains activate 'launchctl kickstart -k "$domain/org.nix-community.home.glance"' ''; } diff --git a/tests/modules/services/glance/glance.plist b/tests/modules/services/glance/glance.plist index ed418d3647..d6b84a53d6 100644 --- a/tests/modules/services/glance/glance.plist +++ b/tests/modules/services/glance/glance.plist @@ -6,8 +6,6 @@ Label org.nix-community.home.glance - LimitLoadToSessionType - Background ProgramArguments /bin/sh diff --git a/tests/modules/services/home-manager-auto-expire/darwin/expected-agent.plist b/tests/modules/services/home-manager-auto-expire/darwin/expected-agent.plist index 78c4d42082..5d9742466b 100644 --- a/tests/modules/services/home-manager-auto-expire/darwin/expected-agent.plist +++ b/tests/modules/services/home-manager-auto-expire/darwin/expected-agent.plist @@ -4,8 +4,6 @@ Label org.nix-community.home.home-manager-auto-expire - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/imapnotify/darwin/launchd.plist b/tests/modules/services/imapnotify/darwin/launchd.plist index 1b6dd6a8cf..4fb9555cb2 100644 --- a/tests/modules/services/imapnotify/darwin/launchd.plist +++ b/tests/modules/services/imapnotify/darwin/launchd.plist @@ -13,8 +13,6 @@ Label org.nix-community.home.imapnotify-hm-example.com - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/nix-gc/darwin/expected-agent.plist b/tests/modules/services/nix-gc/darwin/expected-agent.plist index 4566188626..4691c2e41d 100644 --- a/tests/modules/services/nix-gc/darwin/expected-agent.plist +++ b/tests/modules/services/nix-gc/darwin/expected-agent.plist @@ -4,8 +4,6 @@ Label org.nix-community.home.nix-gc - LimitLoadToSessionType - Background ProgramArguments /bin/sh diff --git a/tests/modules/services/ollama/darwin/expected-agent.plist b/tests/modules/services/ollama/darwin/expected-agent.plist index 05a46a477b..daeccc78b7 100644 --- a/tests/modules/services/ollama/darwin/expected-agent.plist +++ b/tests/modules/services/ollama/darwin/expected-agent.plist @@ -20,8 +20,6 @@ Label org.nix-community.home.ollama - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/podman/darwin/basic-expected-agent.plist b/tests/modules/services/podman/darwin/basic-expected-agent.plist index cb4b1657bf..341a43b33b 100644 --- a/tests/modules/services/podman/darwin/basic-expected-agent.plist +++ b/tests/modules/services/podman/darwin/basic-expected-agent.plist @@ -11,8 +11,6 @@ Label org.nix-community.home.podman-machine-podman-machine-default - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/podman/darwin/custom-machines-dev-expected-agent.plist b/tests/modules/services/podman/darwin/custom-machines-dev-expected-agent.plist index 0679c89af2..3668a1fc8c 100644 --- a/tests/modules/services/podman/darwin/custom-machines-dev-expected-agent.plist +++ b/tests/modules/services/podman/darwin/custom-machines-dev-expected-agent.plist @@ -11,8 +11,6 @@ Label org.nix-community.home.podman-machine-dev-machine - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/ssh-agent/darwin/basic-service-expected.plist b/tests/modules/services/ssh-agent/darwin/basic-service-expected.plist index e235fe89d7..8a44b3ce7d 100644 --- a/tests/modules/services/ssh-agent/darwin/basic-service-expected.plist +++ b/tests/modules/services/ssh-agent/darwin/basic-service-expected.plist @@ -11,8 +11,6 @@ Label org.nix-community.home.ssh-agent - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/ssh-agent/darwin/pkcs11-service-expected.plist b/tests/modules/services/ssh-agent/darwin/pkcs11-service-expected.plist index c54acf4dd9..a660ba35d5 100644 --- a/tests/modules/services/ssh-agent/darwin/pkcs11-service-expected.plist +++ b/tests/modules/services/ssh-agent/darwin/pkcs11-service-expected.plist @@ -11,8 +11,6 @@ Label org.nix-community.home.ssh-agent - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/ssh-agent/darwin/timeout-service-expected.plist b/tests/modules/services/ssh-agent/darwin/timeout-service-expected.plist index 32e28fe5df..6442e73c6f 100644 --- a/tests/modules/services/ssh-agent/darwin/timeout-service-expected.plist +++ b/tests/modules/services/ssh-agent/darwin/timeout-service-expected.plist @@ -11,8 +11,6 @@ Label org.nix-community.home.ssh-agent - LimitLoadToSessionType - Background ProcessType Background ProgramArguments diff --git a/tests/modules/services/syncthing/expected-agent.plist b/tests/modules/services/syncthing/expected-agent.plist index 18cecc9fbd..79550be9ea 100644 --- a/tests/modules/services/syncthing/expected-agent.plist +++ b/tests/modules/services/syncthing/expected-agent.plist @@ -11,8 +11,6 @@ Label org.nix-community.home.syncthing - LimitLoadToSessionType - Background ProcessType Background ProgramArguments