Merge pull request #231316 from hercules-ci/nixos-system.checks
NixOS: add `system.checks`
This commit is contained in:
commit
25f227fc67
|
@ -283,7 +283,7 @@ in
|
||||||
'';
|
'';
|
||||||
|
|
||||||
###### wrappers consistency checks
|
###### wrappers consistency checks
|
||||||
system.extraDependencies = lib.singleton (pkgs.runCommandLocal
|
system.checks = lib.singleton (pkgs.runCommandLocal
|
||||||
"ensure-all-wrappers-paths-exist" { }
|
"ensure-all-wrappers-paths-exist" { }
|
||||||
''
|
''
|
||||||
# make sure we produce output
|
# make sure we produce output
|
||||||
|
|
|
@ -489,7 +489,7 @@ in
|
||||||
"/share/postgresql"
|
"/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 =
|
systemd.services.postgresql =
|
||||||
{ description = "PostgreSQL Server";
|
{ description = "PostgreSQL Server";
|
||||||
|
|
|
@ -99,7 +99,7 @@ in
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
# check .vcl syntax at compile time (e.g. before nixops deployment)
|
# 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" {} ''
|
(pkgs.runCommand "check-varnish-syntax" {} ''
|
||||||
${cfg.package}/bin/varnishd -C ${commandLine} 2> $out || (cat $out; exit 1)
|
${cfg.package}/bin/varnishd -C ${commandLine} 2> $out || (cat $out; exit 1)
|
||||||
'')
|
'')
|
||||||
|
|
|
@ -776,7 +776,7 @@ in
|
||||||
xorg.xf86inputevdev.out
|
xorg.xf86inputevdev.out
|
||||||
];
|
];
|
||||||
|
|
||||||
system.extraDependencies = singleton (pkgs.runCommand "xkb-validated" {
|
system.checks = singleton (pkgs.runCommand "xkb-validated" {
|
||||||
inherit (cfg) xkbModel layout xkbVariant xkbOptions;
|
inherit (cfg) xkbModel layout xkbVariant xkbOptions;
|
||||||
nativeBuildInputs = with pkgs.buildPackages; [ xkbvalidate ];
|
nativeBuildInputs = with pkgs.buildPackages; [ xkbvalidate ];
|
||||||
preferLocalBuild = true;
|
preferLocalBuild = true;
|
||||||
|
|
|
@ -263,8 +263,23 @@ in
|
||||||
default = [];
|
default = [];
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
A list of packages that should be included in the system
|
A list of packages that should be included in the system
|
||||||
closure but not otherwise made available to users. This is
|
closure but generally not visible to users.
|
||||||
primarily used by the installation tests.
|
|
||||||
|
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.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -363,7 +378,17 @@ in
|
||||||
fi
|
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;
|
inherit (config.system) forbiddenDependenciesRegex;
|
||||||
closureInfo = pkgs.closureInfo { rootPaths = [
|
closureInfo = pkgs.closureInfo { rootPaths = [
|
||||||
# override to avoid infinite recursion (and to allow using extraDependencies to add forbidden dependencies)
|
# override to avoid infinite recursion (and to allow using extraDependencies to add forbidden dependencies)
|
||||||
|
@ -371,6 +396,7 @@ in
|
||||||
]; };
|
]; };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
system.build.toplevel = if config.system.includeBuildDependencies then systemWithBuildDeps else system;
|
system.build.toplevel = if config.system.includeBuildDependencies then systemWithBuildDeps else system;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue