diff --git a/nixos/lib/systemd-lib.nix b/nixos/lib/systemd-lib.nix index 72c5f798068d..8397eca39c51 100644 --- a/nixos/lib/systemd-lib.nix +++ b/nixos/lib/systemd-lib.nix @@ -688,17 +688,19 @@ rec { }; }; - stage2ServiceConfig = { - imports = [ serviceConfig ]; - # Default path for systemd services. Should be quite minimal. - config.path = mkAfter [ - pkgs.coreutils - pkgs.findutils - pkgs.gnugrep - pkgs.gnused - systemd - ]; - }; + stage2ServiceConfig = + { config, ... }: + { + imports = [ serviceConfig ]; + # Default path for systemd services. Should be quite minimal. + config.path = mkIf config.enableDefaultPath (mkAfter [ + pkgs.coreutils + pkgs.findutils + pkgs.gnugrep + pkgs.gnused + systemd + ]); + }; stage1ServiceConfig = serviceConfig; diff --git a/nixos/lib/systemd-unit-options.nix b/nixos/lib/systemd-unit-options.nix index eff78fef265d..5e85a9c2a1d9 100644 --- a/nixos/lib/systemd-unit-options.nix +++ b/nixos/lib/systemd-unit-options.nix @@ -379,6 +379,14 @@ rec { ''; }; + enableDefaultPath = mkOption { + default = true; + type = types.bool; + description = '' + Whether to append a minimal default {env}`PATH` environment variable to the service, containing common system utilities. + ''; + }; + serviceConfig = mkOption { default = { }; example = {