From 7ca9f3d5bb32b45733ed16c54264823adf03aebf Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Mon, 15 May 2017 08:34:53 +0200 Subject: launchd: add script option for services --- modules/launchd/default.nix | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'modules/launchd') diff --git a/modules/launchd/default.nix b/modules/launchd/default.nix index 3a7bfea..7505937 100644 --- a/modules/launchd/default.nix +++ b/modules/launchd/default.nix @@ -5,6 +5,8 @@ with lib; let + inherit (pkgs) stdenv; + cfg = config.launchd; toEnvironmentText = name: value: { @@ -51,6 +53,12 @@ let description = "Command executed as the service's main process."; }; + script = mkOption { + type = types.lines; + default = ""; + description = "Shell commands executed as the service's main process."; + }; + # preStart = mkOption { # type = types.lines; # default = ""; @@ -75,6 +83,12 @@ let }; config = { + command = mkIf (config.script != "") (pkgs.writeScript "${name}-start" '' + #! ${stdenv.shell} + + ${config.script} + ''); + serviceConfig.Label = mkDefault "org.nixos.${name}"; serviceConfig.ProgramArguments = mkIf (cmd != "") [ "/bin/sh" "-c" "exec ${cmd}" ]; serviceConfig.EnvironmentVariables = mkIf (env != {}) env; @@ -85,7 +99,6 @@ in { options = { - launchd.envVariables = mkOption { type = types.attrsOf (types.either types.str (types.listOf types.str)); default = {}; @@ -161,7 +174,6 @@ in 5. When the user logs out, it sends a SIGTERM signal to all of the user agents that it started. ''; }; - }; config = { -- cgit v1.2.3