summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWael M. Nasreddine <wael@keeptruckin.com>2020-04-14 14:53:31 -0700
committerWael M. Nasreddine <wael.nasreddine@gmail.com>2020-04-14 15:01:37 -0700
commitcee84f4ea04d0ce3a6dc1f2c34d09a0ae5beed95 (patch)
tree218fe513d6e572e26bc5655e30d4a627b795bca0
parent053f2cb9cb0ce7ceb4933cbd76e2d28713ad85da (diff)
launchd: allow customization of the default launchd prefix
-rw-r--r--modules/launchd/default.nix11
-rw-r--r--modules/services/nix-daemon.nix1
-rw-r--r--release.nix1
-rw-r--r--tests/services-activate-system-changed-label-prefix.nix15
-rw-r--r--tests/services-nix-daemon.nix1
-rw-r--r--tests/sockets-nix-daemon.nix1
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