diff options
| author | Malo Bourgon <mbourgon@gmail.com> | 2022-08-14 13:38:11 -0700 |
|---|---|---|
| committer | Malo Bourgon <mbourgon@gmail.com> | 2022-08-16 10:41:51 -0700 |
| commit | 08edc0e19ac33435bd2b5dede373a2bea9f13b49 (patch) | |
| tree | 0577383ea890ac23e17878ff693c6f8a8522d41b /modules | |
| parent | 7e74c1c9fbb19638d95933b8bcac1757a184519e (diff) | |
Update/adapt daemon CPU/IO priority options in `nix` module
Stop using `nice` related options like NixOS, and because `launchd`
recommends using `ProcessType` instead. Note this commit also changes
the default `ProcessType` for the `nix-daemon` from `Interactive` to
`Standard`.
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/nix/default.nix | 43 | ||||
| -rw-r--r-- | modules/services/nix-daemon.nix | 5 |
2 files changed, 33 insertions, 15 deletions
diff --git a/modules/nix/default.nix b/modules/nix/default.nix index edc8d4f..c816648 100644 --- a/modules/nix/default.nix +++ b/modules/nix/default.nix @@ -131,12 +131,26 @@ let in { - imports = [ - (mkRemovedOptionModule [ "nix" "profile" ] "Use `nix.package` instead.") - (mkRemovedOptionModule [ "nix" "version" ] "Consider using `nix.package.version` instead.") - (mkRenamedOptionModule [ "users" "nix" "configureBuildUsers" ] [ "nix" "configureBuildUsers" ]) - (mkRenamedOptionModule [ "users" "nix" "nrBuildUsers" ] [ "nix" "nrBuildUsers" ]) - ] ++ mapAttrsToList (oldConf: newConf: mkRenamedOptionModule [ "nix" oldConf ] [ "nix" "settings" newConf ]) legacyConfMappings; + imports = + let + altOption = alt: "No `nix-darwin` equivilant to this NixOS option, consider using `${alt}` instead."; + consider = alt: "Consider using `${alt}` instead."; + in + [ + # Only ever in NixOS + (mkRemovedOptionModule [ "nix" "enable" ] "No `nix-darwin` equivilant to this NixOS option.") + (mkRemovedOptionModule [ "nix" "daemonCPUSchedPolicy" ] (altOption "nix.daemonProcessType")) + (mkRemovedOptionModule [ "nix" "daemonIOSchedClass" ] (altOption "nix.daemonProcessType")) + (mkRemovedOptionModule [ "nix" "daemonIOSchedPriority" ] (altOption "nix.daemonIOLowPriority")) + + # Option changes in `nix-darwin` + (mkRemovedOptionModule [ "nix" "profile" ] "Use `nix.package` instead.") + (mkRemovedOptionModule [ "nix" "version" ] (consider "nix.package.version")) + (mkRenamedOptionModule [ "users" "nix" "configureBuildUsers" ] [ "nix" "configureBuildUsers" ]) + (mkRenamedOptionModule [ "users" "nix" "nrBuildUsers" ] [ "nix" "nrBuildUsers" ]) + (mkRenamedOptionModule [ "nix" "daemonIONice" ] [ "nix" "daemonIOLowPriority" ]) + (mkRemovedOptionModule [ "nix" "daemonNiceLevel" ] (consider "nix.daemonProcessType")) + ] ++ mapAttrsToList (oldConf: newConf: mkRenamedOptionModule [ "nix" oldConf ] [ "nix" "settings" newConf ]) legacyConfMappings; ###### interface @@ -177,17 +191,22 @@ in }; # Not in NixOS module - daemonNiceLevel = mkOption { - type = types.int; - default = 0; + daemonProcessType = mkOption { + type = types.enum [ "Background" "Standard" "Adaptive" "Interactive" ]; + default = "Standard"; description = '' - Nix daemon process priority. This priority propagates to build processes. - 0 is the default Unix process priority, 19 is the lowest. + Nix daemon process resource limits class. These limits propagate to + build processes. <literal>Standard</literal> is the default process type + and will apply light resource limits, throttling its CPU usage and I/O + bandwidth. + + See <command>man launchd.plist</command> for explanation of other + process types. ''; }; # Not in NixOS module - daemonIONice = mkOption { + daemonIOLowPriority = mkOption { type = types.bool; default = false; description = '' diff --git a/modules/services/nix-daemon.nix b/modules/services/nix-daemon.nix index 735d92c..5e87e51 100644 --- a/modules/services/nix-daemon.nix +++ b/modules/services/nix-daemon.nix @@ -48,9 +48,8 @@ in "/bin/sh" "-c" "/bin/wait4path ${config.nix.package}/bin/nix-daemon && exec ${config.nix.package}/bin/nix-daemon" ]; - serviceConfig.ProcessType = mkDefault "Interactive"; - serviceConfig.LowPriorityIO = config.nix.daemonIONice; - serviceConfig.Nice = config.nix.daemonNiceLevel; + serviceConfig.ProcessType = config.nix.daemonProcessType; + serviceConfig.LowPriorityIO = config.nix.daemonIOLowPriority; 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; |
