diff options
| author | Wael M. Nasreddine <wael@keeptruckin.com> | 2020-04-14 14:53:31 -0700 |
|---|---|---|
| committer | Wael M. Nasreddine <wael.nasreddine@gmail.com> | 2020-04-14 15:01:37 -0700 |
| commit | cee84f4ea04d0ce3a6dc1f2c34d09a0ae5beed95 (patch) | |
| tree | 218fe513d6e572e26bc5655e30d4a627b795bca0 | |
| parent | 053f2cb9cb0ce7ceb4933cbd76e2d28713ad85da (diff) | |
launchd: allow customization of the default launchd prefix
| -rw-r--r-- | modules/launchd/default.nix | 11 | ||||
| -rw-r--r-- | modules/services/nix-daemon.nix | 1 | ||||
| -rw-r--r-- | release.nix | 1 | ||||
| -rw-r--r-- | tests/services-activate-system-changed-label-prefix.nix | 15 | ||||
| -rw-r--r-- | tests/services-nix-daemon.nix | 1 | ||||
| -rw-r--r-- | tests/sockets-nix-daemon.nix | 1 |
6 files changed, 29 insertions, 1 deletions
diff --git a/modules/launchd/default.nix b/modules/launchd/default.nix index cbcac9c..f82df2a 100644 --- a/modules/launchd/default.nix +++ b/modules/launchd/default.nix @@ -88,7 +88,7 @@ let ${config.script} ''); - serviceConfig.Label = mkDefault "org.nixos.${name}"; + serviceConfig.Label = mkDefault "${cfg.labelPrefix}.${name}"; serviceConfig.ProgramArguments = mkIf (cmd != "") [ "/bin/sh" "-c" "exec ${cmd}" ]; serviceConfig.EnvironmentVariables = mkIf (env != {}) env; }; @@ -97,6 +97,15 @@ in { options = { + launchd.labelPrefix = mkOption { + type = types.str; + default = "org.nixos"; + description = '' + The default prefix of the service label. Individual services can + override this by setting the Label attribute. + ''; + }; + launchd.envVariables = mkOption { type = types.attrsOf (types.either types.str (types.listOf types.str)); default = {}; diff --git a/modules/services/nix-daemon.nix b/modules/services/nix-daemon.nix index 0e4909d..735d92c 100644 --- a/modules/services/nix-daemon.nix +++ b/modules/services/nix-daemon.nix @@ -51,6 +51,7 @@ in serviceConfig.ProcessType = mkDefault "Interactive"; serviceConfig.LowPriorityIO = config.nix.daemonIONice; serviceConfig.Nice = config.nix.daemonNiceLevel; + serviceConfig.Label = "org.nixos.nix-daemon"; # must match daemon installed by Nix regardless of the launchd label Prefix serviceConfig.SoftResourceLimits.NumberOfFiles = mkDefault 4096; serviceConfig.StandardErrorPath = cfg.logFile; diff --git a/release.nix b/release.nix index dd5e2b7..2f977aa 100644 --- a/release.nix +++ b/release.nix @@ -111,6 +111,7 @@ let tests.programs-zsh = makeTest ./tests/programs-zsh.nix; tests.security-pki = makeTest ./tests/security-pki.nix; tests.services-activate-system = makeTest ./tests/services-activate-system.nix; + tests.services-activate-system-changed-label-prefix = makeTest ./tests/services-activate-system-changed-label-prefix.nix; tests.services-buildkite-agent = makeTest ./tests/services-buildkite-agent.nix; tests.services-nix-daemon = makeTest ./tests/services-nix-daemon.nix; tests.sockets-nix-daemon = makeTest ./tests/sockets-nix-daemon.nix; diff --git a/tests/services-activate-system-changed-label-prefix.nix b/tests/services-activate-system-changed-label-prefix.nix new file mode 100644 index 0000000..5ac9969 --- /dev/null +++ b/tests/services-activate-system-changed-label-prefix.nix @@ -0,0 +1,15 @@ +{ config, pkgs, ... }: + +{ + services.activate-system.enable = true; + launchd.labelPrefix = "org.nix-darwin"; + + test = '' + echo checking activation service in /Library/LaunchDaemons >&2 + grep "org.nix-darwin.activate-system" ${config.out}/Library/LaunchDaemons/org.nix-darwin.activate-system.plist + + echo checking activation of /run/current-system >&2 + script=$(cat ${config.out}/Library/LaunchDaemons/org.nix-darwin.activate-system.plist | awk -F'[< ]' '$3 ~ "^/nix/store/.*" {print $3}') + grep "ln -sfn .* /run/current-system" "$script" + ''; +} diff --git a/tests/services-nix-daemon.nix b/tests/services-nix-daemon.nix index 52760eb..6c972df 100644 --- a/tests/services-nix-daemon.nix +++ b/tests/services-nix-daemon.nix @@ -8,6 +8,7 @@ in { services.nix-daemon.enable = true; nix.package = nix; + launchd.labelPrefix = "org.nix-darwin"; # should not have an effect on nix-daemon environment.variables.NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-certificates.crt"; diff --git a/tests/sockets-nix-daemon.nix b/tests/sockets-nix-daemon.nix index 6db6d5e..d1b2827 100644 --- a/tests/sockets-nix-daemon.nix +++ b/tests/sockets-nix-daemon.nix @@ -8,6 +8,7 @@ in services.nix-daemon.enable = true; services.nix-daemon.enableSocketListener = true; nix.package = nix; + launchd.labelPrefix = "org.nix-darwin"; # should not have an effect on nix-daemon test = '' echo checking nix-daemon service in /Library/LaunchDaemons >&2 |
