summaryrefslogtreecommitdiff
path: root/modules/launchd/default.nix
diff options
context:
space:
mode:
authorMike Vink <59492084+ivi-vink@users.noreply.github.com>2025-01-16 22:22:34 +0100
committerGitHub <noreply@github.com>2025-01-16 22:22:34 +0100
commit8e7bd91f353caacc0bc4105f573eb3e17f09e03a (patch)
treec5059edcbebd9644290cad7c653c49a36d593021 /modules/launchd/default.nix
parent6bd39d420578aacf7c0bab7de3e7027b952115ae (diff)
parentbd921223ba7cdac346477d7ea5204d6f4736fcc6 (diff)
Merge branch 'LnL7:master' into masterHEADmaster
Diffstat (limited to 'modules/launchd/default.nix')
-rw-r--r--modules/launchd/default.nix29
1 files changed, 16 insertions, 13 deletions
diff --git a/modules/launchd/default.nix b/modules/launchd/default.nix
index 5b24a9f..64b6af7 100644
--- a/modules/launchd/default.nix
+++ b/modules/launchd/default.nix
@@ -20,7 +20,6 @@ let
{ config, name, ... }:
let
- cmd = config.command;
env = config.environment // optionalAttrs (config.path != "") { PATH = config.path; };
in
@@ -30,14 +29,14 @@ let
type = types.attrsOf (types.either types.str (types.listOf types.str));
default = {};
example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
- description = lib.mdDoc "Environment variables passed to the service's processes.";
+ description = "Environment variables passed to the service's processes.";
apply = mapAttrs (n: v: if isList v then concatStringsSep ":" v else v);
};
path = mkOption {
type = types.listOf (types.either types.path types.str);
default = [];
- description = lib.mdDoc ''
+ description = ''
Packages added to the service's {env}`PATH`
environment variable. Only the {file}`bin`
and subdirectories of each package is added.
@@ -48,13 +47,13 @@ let
command = mkOption {
type = types.either types.str types.path;
default = "";
- description = lib.mdDoc "Command executed as the service's main process.";
+ description = "Command executed as the service's main process.";
};
script = mkOption {
type = types.lines;
default = "";
- description = lib.mdDoc "Shell commands executed as the service's main process.";
+ description = "Shell commands executed as the service's main process.";
};
# preStart = mkOption {
@@ -73,7 +72,7 @@ let
KeepAlive = true;
};
default = {};
- description = lib.mdDoc ''
+ description = ''
Each attribute in this set specifies an option for a key in the plist.
<https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html>
'';
@@ -88,7 +87,11 @@ let
'');
serviceConfig.Label = mkDefault "${cfg.labelPrefix}.${name}";
- serviceConfig.ProgramArguments = mkIf (cmd != "") [ "/bin/sh" "-c" "exec ${cmd}" ];
+ serviceConfig.ProgramArguments = mkIf (config.command != "") [
+ "/bin/sh"
+ "-c"
+ "/bin/wait4path /nix/store &amp;&amp; exec ${config.command}"
+ ];
serviceConfig.EnvironmentVariables = mkIf (env != {}) env;
};
};
@@ -99,7 +102,7 @@ in
launchd.labelPrefix = mkOption {
type = types.str;
default = "org.nixos";
- description = lib.mdDoc ''
+ description = ''
The default prefix of the service label. Individual services can
override this by setting the Label attribute.
'';
@@ -109,7 +112,7 @@ in
type = types.attrsOf (types.either types.str (types.listOf types.str));
default = {};
example = { LANG = "nl_NL.UTF-8"; };
- description = lib.mdDoc ''
+ description = ''
A set of environment variables to be set on all future
processes launched by launchd in the caller's context.
The value of each variable can be either a string or a list of
@@ -123,7 +126,7 @@ in
type = types.attrsOf (types.either types.str (types.listOf types.str));
default = {};
example = { LANG = "nl_NL.UTF-8"; };
- description = lib.mdDoc ''
+ description = ''
A set of environment variables to be set on all future
processes launched by launchd in the caller's context.
The value of each variable can be either a string or a list of
@@ -136,7 +139,7 @@ in
launchd.agents = mkOption {
default = {};
type = types.attrsOf (types.submodule serviceOptions);
- description = lib.mdDoc ''
+ description = ''
Definition of per-user launchd agents.
When a user logs in, a per-user launchd is started.
@@ -152,7 +155,7 @@ in
launchd.daemons = mkOption {
default = {};
type = types.attrsOf (types.submodule serviceOptions);
- description = lib.mdDoc ''
+ description = ''
Definition of launchd daemons.
After the system is booted and the kernel is running, launchd is run to finish the system initialization.
@@ -168,7 +171,7 @@ in
launchd.user.agents = mkOption {
default = {};
type = types.attrsOf (types.submodule serviceOptions);
- description = lib.mdDoc ''
+ description = ''
Definition of per-user launchd agents.
When a user logs in, a per-user launchd is started.