From def1e23be848848400d1d097d4f044e3c401f9dd Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Sun, 14 Apr 2024 23:02:32 +0200 Subject: treewide: remove lib.mdDoc --- modules/launchd/launchd.nix | 174 ++++++++++++++++++++++---------------------- 1 file changed, 87 insertions(+), 87 deletions(-) (limited to 'modules/launchd/launchd.nix') diff --git a/modules/launchd/launchd.nix b/modules/launchd/launchd.nix index 119d4f0..9fecde6 100644 --- a/modules/launchd/launchd.nix +++ b/modules/launchd/launchd.nix @@ -6,13 +6,13 @@ with lib; options = { Label = mkOption { type = types.str; - description = lib.mdDoc "This required key uniquely identifies the job to launchd."; + description = "This required key uniquely identifies the job to launchd."; }; Disabled = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key is used as a hint to `launchctl(1)` that it should not submit this job to launchd when loading a job or jobs. The value of this key does NOT reflect the current state of the job on the running system. If you wish to know whether a job is loaded in launchd, reading this key from a configuration @@ -35,7 +35,7 @@ with lib; UserName = mkOption { type = types.nullOr types.str; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies the user to run the job as. This key is only applicable when launchd is running as root. ''; @@ -44,7 +44,7 @@ with lib; GroupName = mkOption { type = types.nullOr types.str; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies the group to run the job as. This key is only applicable when launchd is running as root. If UserName is set and GroupName is not, the the group will be set to the default group of the user. @@ -54,7 +54,7 @@ with lib; inetdCompatibility = mkOption { default = null; example = { Wait = true; }; - description = lib.mdDoc '' + description = '' The presence of this key specifies that the daemon expects to be run as if it were launched from inetd. ''; type = types.nullOr (types.submodule { @@ -62,7 +62,7 @@ with lib; Wait = mkOption { type = types.nullOr (types.either types.bool types.str); default = null; - description = lib.mdDoc '' + description = '' This flag corresponds to the "wait" or "nowait" option of inetd. If true, then the listening socket is passed via the standard in/out/error file descriptors. If false, then `accept(2)` is called on behalf of the job, and the result is passed via the standard in/out/error descriptors. @@ -75,7 +75,7 @@ with lib; LimitLoadToHosts = mkOption { type = types.nullOr (types.listOf types.str); default = null; - description = lib.mdDoc '' + description = '' This configuration file only applies to the hosts listed with this key. Note: One should set kern.hostname in `sysctl.conf(5)` for this feature to work reliably. ''; @@ -84,7 +84,7 @@ with lib; LimitLoadFromHosts = mkOption { type = types.nullOr (types.listOf types.str); default = null; - description = lib.mdDoc '' + description = '' This configuration file only applies to hosts NOT listed with this key. Note: One should set kern.hostname in `sysctl.conf(5)` for this feature to work reliably. ''; @@ -93,7 +93,7 @@ with lib; LimitLoadToSessionType = mkOption { type = types.nullOr (types.oneOf [types.str (types.listOf types.str)]); default = null; - description = lib.mdDoc '' + description = '' This configuration file only applies to sessions of the type specified. This key is used in concert with the -S flag to {command}`launchctl`. ''; @@ -102,7 +102,7 @@ with lib; Program = mkOption { type = types.nullOr types.path; default = null; - description = lib.mdDoc '' + description = '' This key maps to the first argument of `execvp(3)`. If this key is missing, then the first element of the array of strings provided to the ProgramArguments will be used instead. This key is required in the absence of the ProgramArguments key. @@ -112,7 +112,7 @@ with lib; ProgramArguments = mkOption { type = types.nullOr (types.listOf types.str); default = null; - description = lib.mdDoc '' + description = '' This key maps to the second argument of `execvp(3)`. This key is required in the absence of the Program key. Please note: many people are confused by this key. Please read `execvp(3)` very carefully! ''; @@ -121,7 +121,7 @@ with lib; EnableGlobbing = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This flag causes launchd to use the `glob(3)` mechanism to update the program arguments before invocation. ''; }; @@ -129,7 +129,7 @@ with lib; EnableTransactions = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This flag instructs launchd that the job promises to use `vproc_transaction_begin(3)` and `vproc_transaction_end(3)` to track outstanding transactions that need to be reconciled before the process can safely terminate. If no outstanding transactions are in progress, then launchd is free to @@ -140,7 +140,7 @@ with lib; OnDemand = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This key was used in Mac OS X 10.4 to control whether a job was kept alive or not. The default was true. This key has been deprecated and replaced in Mac OS X 10.5 and later with the more powerful KeepAlive option. @@ -154,7 +154,7 @@ with lib; SuccessfulExit = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' If true, the job will be restarted as long as the program exits and with an exit status of zero. If false, the job will be restarted in the inverse condition. This key implies that "RunAtLoad" is set to true, since the job needs to run at least once before we can get an exit status. @@ -164,7 +164,7 @@ with lib; NetworkState = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' If true, the job will be kept alive as long as the network is up, where up is defined as at least one non-loopback interface being up and having IPv4 or IPv6 addresses assigned to them. If false, the job will be kept alive in the inverse condition. @@ -174,7 +174,7 @@ with lib; PathState = mkOption { type = types.nullOr (types.attrsOf types.bool); default = null; - description = lib.mdDoc '' + description = '' Each key in this dictionary is a file-system path. If the value of the key is true, then the job will be kept alive as long as the path exists. If false, the job will be kept alive in the inverse condition. The intent of this feature is that two or more jobs may create semaphores in @@ -185,7 +185,7 @@ with lib; OtherJobEnabled = mkOption { type = types.nullOr (types.attrsOf types.bool); default = null; - description = lib.mdDoc '' + description = '' Each key in this dictionary is the label of another job. If the value of the key is true, then this job is kept alive as long as that other job is enabled. Otherwise, if the value is false, then this job is kept alive as long as the other job is disabled. This feature should not be @@ -196,7 +196,7 @@ with lib; Crashed = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' If true, the the job will be restarted as long as it exited due to a signal which is typically associated with a crash (SIGILL, SIGSEGV, etc.). If false, the job will be restarted in the inverse condition. @@ -211,7 +211,7 @@ with lib; }; })); default = null; - description = lib.mdDoc '' + description = '' This optional key is used to control whether your job is to be kept continuously running or to let demand and conditions control the invocation. The default is false and therefore only demand will start the job. The value may be set to true to unconditionally keep the job alive. Alternatively, a dictionary @@ -226,7 +226,7 @@ with lib; RunAtLoad = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key is used to control whether your job is launched once at the time the job is loaded. The default is false. ''; @@ -235,7 +235,7 @@ with lib; RootDirectory = mkOption { type = types.nullOr types.str; default = null; - description = lib.mdDoc '' + description = '' This optional key is used to specify a directory to `chroot(2)` to before running the job. ''; }; @@ -243,7 +243,7 @@ with lib; WorkingDirectory = mkOption { type = types.nullOr types.str; default = null; - description = lib.mdDoc '' + description = '' This optional key is used to specify a directory to `chdir(2)` to before running the job. ''; }; @@ -251,7 +251,7 @@ with lib; EnvironmentVariables = mkOption { type = types.nullOr (types.attrsOf types.str); default = null; - description = lib.mdDoc '' + description = '' This optional key is used to specify additional environment variables to be set before running the job. ''; @@ -260,7 +260,7 @@ with lib; Umask = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies what value should be passed to `umask(2)` before running the job. Known bug: Property lists don't support octal, so please convert the value to decimal. ''; @@ -269,7 +269,7 @@ with lib; TimeOut = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The recommended idle time out (in seconds) to pass to the job. If no value is specified, a default time out will be supplied by launchd for use by the job at check in time. ''; @@ -278,7 +278,7 @@ with lib; ExitTimeOut = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The amount of time launchd waits before sending a SIGKILL signal. The default value is 20 seconds. The value zero is interpreted as infinity. ''; @@ -287,7 +287,7 @@ with lib; ThrottleInterval = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' This key lets one override the default throttling policy imposed on jobs by launchd. The value is in seconds, and by default, jobs will not be spawned more than once every 10 seconds. The principle behind this is that jobs should linger around just in case they are needed again in the near future. @@ -299,7 +299,7 @@ with lib; InitGroups = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies whether `initgroups(3)` should be called before running the job. The default is true in 10.5 and false in 10.4. This key will be ignored if the UserName key is not set. ''; @@ -308,7 +308,7 @@ with lib; WatchPaths = mkOption { type = types.nullOr (types.listOf types.path); default = null; - description = lib.mdDoc '' + description = '' This optional key causes the job to be started if any one of the listed paths are modified. ''; }; @@ -316,7 +316,7 @@ with lib; QueueDirectories = mkOption { type = types.nullOr (types.listOf types.str); default = null; - description = lib.mdDoc '' + description = '' Much like the WatchPaths option, this key will watch the paths for modifications. The difference being that the job will only be started if the path is a directory and the directory is not empty. ''; @@ -325,7 +325,7 @@ with lib; StartOnMount = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key causes the job to be started every time a filesystem is mounted. ''; }; @@ -333,7 +333,7 @@ with lib; StartInterval = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' This optional key causes the job to be started every N seconds. If the system is asleep, the job will be started the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into one event upon wake from sleep. @@ -343,7 +343,7 @@ with lib; StartCalendarInterval = mkOption { default = null; example = [{ Hour = 2; Minute = 30; }]; - description = lib.mdDoc '' + description = '' This optional key causes the job to be started every calendar interval as specified. Missing arguments are considered to be wildcard. The semantics are much like `crontab(5)`. Unlike cron which skips job invocations when the computer is asleep, launchd will start the job the next time the computer wakes @@ -355,7 +355,7 @@ with lib; Minute = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The minute on which this job will be run. ''; }; @@ -363,7 +363,7 @@ with lib; Hour = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The hour on which this job will be run. ''; }; @@ -371,7 +371,7 @@ with lib; Day = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The day on which this job will be run. ''; }; @@ -379,7 +379,7 @@ with lib; Weekday = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The weekday on which this job will be run (0 and 7 are Sunday). ''; }; @@ -387,7 +387,7 @@ with lib; Month = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The month on which this job will be run. ''; }; @@ -398,7 +398,7 @@ with lib; StandardInPath = mkOption { type = types.nullOr types.path; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies what file should be used for data being supplied to stdin when using `stdio(3)`. ''; @@ -407,7 +407,7 @@ with lib; StandardOutPath = mkOption { type = types.nullOr types.path; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies what file should be used for data being sent to stdout when using `stdio(3)`. ''; }; @@ -415,7 +415,7 @@ with lib; StandardErrorPath = mkOption { type = types.nullOr types.path; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies what file should be used for data being sent to stderr when using `stdio(3)`. ''; }; @@ -423,7 +423,7 @@ with lib; Debug = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies that launchd should adjust its log mask temporarily to LOG_DEBUG while dealing with this job. ''; @@ -432,7 +432,7 @@ with lib; WaitForDebugger = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies that launchd should instruct the kernel to have the job wait for a debugger to attach before any code in the job is executed. ''; @@ -440,7 +440,7 @@ with lib; SoftResourceLimits = mkOption { default = null; - description = lib.mdDoc '' + description = '' Resource limits to be imposed on the job. These adjust variables set with `setrlimit(2)`. The following keys apply: ''; @@ -449,7 +449,7 @@ with lib; Core = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The largest size (in bytes) core file that may be created. ''; }; @@ -457,7 +457,7 @@ with lib; CPU = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum amount of cpu time (in seconds) to be used by each process. ''; }; @@ -465,7 +465,7 @@ with lib; Data = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum size (in bytes) of the data segment for a process; this defines how far a program may extend its break with the `sbrk(2)` system call. ''; @@ -474,7 +474,7 @@ with lib; FileSize = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The largest size (in bytes) file that may be created. ''; }; @@ -482,7 +482,7 @@ with lib; MemoryLock = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum size (in bytes) which a process may lock into memory using the mlock(2) function. ''; }; @@ -490,7 +490,7 @@ with lib; NumberOfFiles = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum number of open files for this process. Setting this value in a system wide daemon will set the `sysctl(3)` kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResourceLimits) value in addition to the `setrlimit(2)` values. @@ -500,7 +500,7 @@ with lib; NumberOfProcesses = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum number of simultaneous processes for this user id. Setting this value in a system wide daemon will set the `sysctl(3)` kern.maxproc (SoftResourceLimits) or kern.maxprocperuid (HardResourceLimits) value in addition to the `setrlimit(2)` values. @@ -510,7 +510,7 @@ with lib; ResidentSetSize = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum size (in bytes) to which a process's resident set size may grow. This imposes a limit on the amount of physical memory to be given to a process; if memory is tight, the system will prefer to take memory from processes that are exceeding their declared resident set size. @@ -520,7 +520,7 @@ with lib; Stack = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum size (in bytes) of the stack segment for a process; this defines how far a program's stack segment may be extended. Stack extension is performed automatically by the system. ''; @@ -532,7 +532,7 @@ with lib; HardResourceLimits = mkOption { default = null; example = { NumberOfFiles = 4096; }; - description = lib.mdDoc '' + description = '' Resource limits to be imposed on the job. These adjust variables set with `setrlimit(2)`. The following keys apply: ''; @@ -541,7 +541,7 @@ with lib; Core = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The largest size (in bytes) core file that may be created. ''; }; @@ -549,7 +549,7 @@ with lib; CPU = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum amount of cpu time (in seconds) to be used by each process. ''; }; @@ -557,7 +557,7 @@ with lib; Data = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum size (in bytes) of the data segment for a process; this defines how far a program may extend its break with the `sbrk(2)` system call. ''; @@ -566,7 +566,7 @@ with lib; FileSize = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The largest size (in bytes) file that may be created. ''; }; @@ -574,7 +574,7 @@ with lib; MemoryLock = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum size (in bytes) which a process may lock into memory using the `mlock(2)` function. ''; }; @@ -582,7 +582,7 @@ with lib; NumberOfFiles = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum number of open files for this process. Setting this value in a system wide daemon will set the `sysctl(3)` kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResourceLimits) value in addition to the `setrlimit(2)` values. @@ -592,7 +592,7 @@ with lib; NumberOfProcesses = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum number of simultaneous processes for this user id. Setting this value in a system wide daemon will set the `sysctl(3)` kern.maxproc (SoftResourceLimits) or kern.maxprocperuid (HardResourceLimits) value in addition to the `setrlimit(2)` values. @@ -602,7 +602,7 @@ with lib; ResidentSetSize = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum size (in bytes) to which a process's resident set size may grow. This imposes a limit on the amount of physical memory to be given to a process; if memory is tight, the system will prefer to take memory from processes that are exceeding their declared resident set size. @@ -612,7 +612,7 @@ with lib; Stack = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' The maximum size (in bytes) of the stack segment for a process; this defines how far a program's stack segment may be extended. Stack extension is performed automatically by the system. ''; @@ -624,7 +624,7 @@ with lib; Nice = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies what nice(3) value should be applied to the daemon. ''; }; @@ -633,7 +633,7 @@ with lib; type = types.nullOr (types.enum [ "Background" "Standard" "Adaptive" "Interactive" ]); default = null; example = "Background"; - description = lib.mdDoc '' + description = '' This optional key describes, at a high level, the intended purpose of the job. The system will apply resource limits based on what kind of job it is. If left unspecified, the system will apply light resource limits to the job, throttling its CPU usage and I/O bandwidth. The following are valid values: @@ -660,7 +660,7 @@ with lib; AbandonProcessGroup = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' When a job dies, launchd kills any remaining processes with the same process group ID as the job. Setting this key to true disables that behavior. ''; @@ -669,7 +669,7 @@ with lib; LowPriorityIO = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies whether the kernel should consider this daemon to be low priority when doing file system I/O. ''; @@ -678,7 +678,7 @@ with lib; LaunchOnlyOnce = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies whether the job can only be run once and only once. In other words, if the job cannot be safely respawned without a full machine reboot, then set this key to be true. ''; @@ -687,7 +687,7 @@ with lib; MachServices = mkOption { default = null; example = { "org.nixos.service" = { ResetAtClose = true; }; }; - description = lib.mdDoc '' + description = '' This optional key is used to specify Mach services to be registered with the Mach bootstrap sub-system. Each key in this dictionary should be the name of service to be advertised. The value of the key must be a boolean and set to true. Alternatively, a dictionary can be used instead of a simple true value. @@ -700,7 +700,7 @@ with lib; ResetAtClose = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' If this boolean is false, the port is recycled, thus leaving clients to remain oblivious to the demand nature of job. If the value is set to true, clients receive port death notifications when the job lets go of the receive right. The port will be recreated atomically with respect to bootstrap_look_up() @@ -713,7 +713,7 @@ with lib; HideUntilCheckIn = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' Reserve the name in the namespace, but cause bootstrap_look_up() to fail until the job has checked in with launchd. ''; @@ -725,7 +725,7 @@ with lib; LaunchEvents = mkOption { type = types.nullOr (types.attrs); default = null; - description = lib.mdDoc '' + description = '' Specifies higher-level event types to be used as launch-on-demand event sources. Each sub-dictionary defines events for a particular event subsystem, such as "com.apple.iokit.matching", which can be used to @@ -750,7 +750,7 @@ with lib; ServiceIPC = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies whether the job participates in advanced communication with launchd. The default is false. This flag is incompatible with the inetdCompatibility key. @@ -760,7 +760,7 @@ with lib; SessionCreate = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This key specifies that the job should be spawned into a new security audit session rather than the default session for the context is belongs to. See auditon(2) for details. @@ -769,7 +769,7 @@ with lib; Sockets = mkOption { default = null; - description = lib.mdDoc '' + description = '' This optional key is used to specify launch on demand sockets that can be used to let launchd know when to run the job. The job must check-in to get a copy of the file descriptors using APIs outlined in launch(3). The keys of the top level Sockets dictionary can be anything. They are meant for the application @@ -786,7 +786,7 @@ with lib; SockType = mkOption { type = types.nullOr (types.enum [ "stream" "dgram" "seqpacket" ]); default = null; - description = lib.mdDoc '' + description = '' This optional key tells launchctl what type of socket to create. The default is "stream" and other valid values for this key are "dgram" and "seqpacket" respectively. ''; @@ -795,7 +795,7 @@ with lib; SockPassive = mkOption { type = types.nullOr types.bool; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies whether `listen(2)` or `connect(2)` should be called on the created file descriptor. The default is true ("to listen"). ''; @@ -804,7 +804,7 @@ with lib; SockNodeName = mkOption { type = types.nullOr types.str; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies the node to `connect(2)` or `bind(2)` to. ''; }; @@ -812,7 +812,7 @@ with lib; SockServiceName = mkOption { type = types.nullOr types.str; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies the service on the node to `connect(2)` or `bind(2)` to. ''; }; @@ -820,7 +820,7 @@ with lib; SockFamily = mkOption { type = types.nullOr (types.enum [ "IPv4" "IPv6" ]); default = null; - description = lib.mdDoc '' + description = '' This optional key can be used to specifically request that "IPv4" or "IPv6" socket(s) be created. ''; }; @@ -828,7 +828,7 @@ with lib; SockProtocol = mkOption { type = types.nullOr (types.enum [ "TCP" ]); default = null; - description = lib.mdDoc '' + description = '' This optional key specifies the protocol to be passed to `socket(2)`. The only value understood by this key at the moment is "TCP". ''; @@ -837,7 +837,7 @@ with lib; SockPathName = mkOption { type = types.nullOr types.path; default = null; - description = lib.mdDoc '' + description = '' This optional key implies SockFamily is set to "Unix". It specifies the path to `connect(2)` or `bind(2)` to. ''; @@ -846,7 +846,7 @@ with lib; SecureSocketWithKey = mkOption { type = types.nullOr types.str; default = null; - description = lib.mdDoc '' + description = '' This optional key is a variant of SockPathName. Instead of binding to a known path, a securely generated socket is created and the path is assigned to the environment variable that is inherited by all jobs spawned by launchd. @@ -856,7 +856,7 @@ with lib; SockPathMode = mkOption { type = types.nullOr types.int; default = null; - description = lib.mdDoc '' + description = '' This optional key specifies the mode of the socket. Known bug: Property lists don't support octal, so please convert the value to decimal. ''; @@ -865,7 +865,7 @@ with lib; Bonjour = mkOption { type = types.nullOr (types.either types.bool (types.listOf types.str)); default = null; - description = lib.mdDoc '' + description = '' This optional key can be used to request that the service be registered with the `mDNSResponder(8)`. If the value is boolean, the service name is inferred from the SockServiceName. ''; @@ -874,7 +874,7 @@ with lib; MulticastGroup = mkOption { type = types.nullOr types.str; default = null; - description = lib.mdDoc '' + description = '' This optional key can be used to request that the datagram socket join a multicast group. If the value is a hostname, then `getaddrinfo(3)` will be used to join the correct multicast address for a given socket family. If an explicit IPv4 or IPv6 address is given, it is required that the SockFamily -- cgit v1.2.3 From 9ed6009b2152128bbcd4e40841160b0bdc0274ba Mon Sep 17 00:00:00 2001 From: Enno Richter Date: Wed, 5 Jun 2024 06:40:05 +0200 Subject: launchd: add LowPriorityBackgroundIO config --- modules/launchd/launchd.nix | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'modules/launchd/launchd.nix') diff --git a/modules/launchd/launchd.nix b/modules/launchd/launchd.nix index 9fecde6..9e13a3b 100644 --- a/modules/launchd/launchd.nix +++ b/modules/launchd/launchd.nix @@ -675,6 +675,15 @@ with lib; ''; }; + LowPriorityBackgroundIO = mkOption { + type = types.nullOr types.bool; + default = null; + description = '' + This optional key specifies whether the kernel should consider this daemon to be low priority when + doing file system I/O when the process is throttled with the Darwin-background classification. + ''; + }; + LaunchOnlyOnce = mkOption { type = types.nullOr types.bool; default = null; -- cgit v1.2.3 From 861af0fc94df9454f4e92d6892f75588763164bb Mon Sep 17 00:00:00 2001 From: Tyler Miller Date: Thu, 29 Jun 2023 00:50:28 -0700 Subject: fix(launchd): improve `StartCalendarInterval` Stricter launchd -> StartCalendarInterval type: - Verify that the integers passed to `Minute`, `Hour`, etc. are within range. - When provided, the value for StartCalendarInterval must be a non-empty list of calendar intervals and must not contain duplicates entries (throw an error otherwise). - For increased flexibility and backwards-compatibility, allow an attrset to be passed as well (which will be type-checked and is functionally equivalent to passing a singleton list). Allowing an attrset or list is precisely in-line with what `launchd.plist(5)` accepts for StartCalendarInterval. Migrate `nix.gc.interval` and `nix.optimise.interval` over to use this new type, and update their defaults to run weekly instead of daily. Create `modules/launchd/types.nix` file for easier/modular use of launchd types needed in multiple files. Documentation: - Update and improve wording/documentation of launchd's `StartCalendarInterval`. - Improve wording/documentation of `nix.gc.interval` and `nix.optimise.interval` ("time interval" can be misleading as it's actually a "calendar interval"; e.g. `{ Hour = 3; Minute = 15;}` runs daily, not every 3.25 hours). --- modules/launchd/launchd.nix | 65 ++++++++++++--------------------------------- 1 file changed, 17 insertions(+), 48 deletions(-) (limited to 'modules/launchd/launchd.nix') diff --git a/modules/launchd/launchd.nix b/modules/launchd/launchd.nix index 9fecde6..add0514 100644 --- a/modules/launchd/launchd.nix +++ b/modules/launchd/launchd.nix @@ -2,6 +2,10 @@ with lib; +let + launchdTypes = import ./types.nix { inherit config lib; }; +in + { options = { Label = mkOption { @@ -344,55 +348,21 @@ with lib; default = null; example = [{ Hour = 2; Minute = 30; }]; description = '' - This optional key causes the job to be started every calendar interval as specified. Missing arguments - are considered to be wildcard. The semantics are much like `crontab(5)`. Unlike cron which skips job - invocations when the computer is asleep, launchd will start the job the next time the computer wakes + This optional key causes the job to be started every calendar interval as specified. The semantics are + much like {manpage}`crontab(5)`: Missing attributes are considered to be wildcard. Unlike cron which skips + job invocations when the computer is asleep, launchd will start the job the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into - one event upon wake from sleep. - ''; - type = types.nullOr (types.listOf (types.submodule { - options = { - Minute = mkOption { - type = types.nullOr types.int; - default = null; - description = '' - The minute on which this job will be run. - ''; - }; - - Hour = mkOption { - type = types.nullOr types.int; - default = null; - description = '' - The hour on which this job will be run. - ''; - }; - - Day = mkOption { - type = types.nullOr types.int; - default = null; - description = '' - The day on which this job will be run. - ''; - }; + one event upon waking from sleep. - Weekday = mkOption { - type = types.nullOr types.int; - default = null; - description = '' - The weekday on which this job will be run (0 and 7 are Sunday). - ''; - }; + ::: {.important} + The list must not be empty and must not contain duplicate entries (attrsets which compare equally). + ::: - Month = mkOption { - type = types.nullOr types.int; - default = null; - description = '' - The month on which this job will be run. - ''; - }; - }; - })); + ::: {.caution} + Since missing attrs become wildcards, an empty attrset effectively means "every minute". + ::: + ''; + type = types.nullOr launchdTypes.StartCalendarInterval; }; StandardInPath = mkOption { @@ -886,6 +856,5 @@ with lib; }; }; - config = { - }; + config = {}; } -- cgit v1.2.3