Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion nixos/modules/security/wrappers/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ in
'';

###### wrappers consistency checks
system.extraDependencies = lib.singleton (pkgs.runCommandLocal
system.checks = lib.singleton (pkgs.runCommandLocal
"ensure-all-wrappers-paths-exist" { }
''
# make sure we produce output
Expand Down
2 changes: 1 addition & 1 deletion nixos/modules/services/databases/postgresql.nix
Original file line number Diff line number Diff line change
Expand Up @@ -489,7 +489,7 @@ in
"/share/postgresql"
];

system.extraDependencies = lib.optional (cfg.checkConfig && pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) configFileCheck;
system.checks = lib.optional (cfg.checkConfig && pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) configFileCheck;

systemd.services.postgresql =
{ description = "PostgreSQL Server";
Expand Down
2 changes: 1 addition & 1 deletion nixos/modules/services/web-servers/varnish/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ in
environment.systemPackages = [ cfg.package ];

# check .vcl syntax at compile time (e.g. before nixops deployment)
system.extraDependencies = mkIf cfg.enableConfigCheck [
system.checks = mkIf cfg.enableConfigCheck [
(pkgs.runCommand "check-varnish-syntax" {} ''
${cfg.package}/bin/varnishd -C ${commandLine} 2> $out || (cat $out; exit 1)
'')
Expand Down
2 changes: 1 addition & 1 deletion nixos/modules/services/x11/xserver.nix
Original file line number Diff line number Diff line change
Expand Up @@ -776,7 +776,7 @@ in
xorg.xf86inputevdev.out
];

system.extraDependencies = singleton (pkgs.runCommand "xkb-validated" {
system.checks = singleton (pkgs.runCommand "xkb-validated" {
inherit (cfg) xkbModel layout xkbVariant xkbOptions;
nativeBuildInputs = with pkgs.buildPackages; [ xkbvalidate ];
preferLocalBuild = true;
Expand Down
32 changes: 29 additions & 3 deletions nixos/modules/system/activation/top-level.nix
Original file line number Diff line number Diff line change
Expand Up @@ -263,8 +263,23 @@ in
default = [];
description = lib.mdDoc ''
A list of packages that should be included in the system
closure but not otherwise made available to users. This is
primarily used by the installation tests.
closure but generally not visible to users.

This option has also been used for build-time checks, but the
`system.checks` option is more appropriate for that purpose as checks
should not leave a trace in the built system configuration.
'';
};

system.checks = mkOption {
type = types.listOf types.package;
default = [];
description = lib.mdDoc ''
Packages that are added as dependencies of the system's build, usually
for the purpose of validating some part of the configuration.

Unlike `system.extraDependencies`, these store paths do not
become part of the built system configuration.
'';
};

Expand Down Expand Up @@ -363,14 +378,25 @@ in
fi
'';

system.systemBuilderArgs = lib.optionalAttrs (config.system.forbiddenDependenciesRegex != "") {
system.systemBuilderArgs = {
# Not actually used in the builder. `passedChecks` is just here to create
# the build dependencies. Checks are similar to build dependencies in the
# sense that if they fail, the system build fails. However, checks do not
# produce any output of value, so they are not used by the system builder.
# In fact, using them runs the risk of accidentally adding unneeded paths
# to the system closure, which defeats the purpose of the `system.checks`
# option, as opposed to `system.extraDependencies`.
passedChecks = concatStringsSep " " config.system.checks;
}
// lib.optionalAttrs (config.system.forbiddenDependenciesRegex != "") {
inherit (config.system) forbiddenDependenciesRegex;
closureInfo = pkgs.closureInfo { rootPaths = [
# override to avoid infinite recursion (and to allow using extraDependencies to add forbidden dependencies)
(config.system.build.toplevel.overrideAttrs (_: { extraDependencies = []; closureInfo = null; }))
]; };
};


system.build.toplevel = if config.system.includeBuildDependencies then systemWithBuildDeps else system;

};
Expand Down