mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-09 15:58:05 +02:00
b41cc1a755
This ensures just `nix build`-ing the flake doesn't forget to run all tests. One can still specifiy specific attributes to just build one thing. Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
48 lines
1.5 KiB
Nix
48 lines
1.5 KiB
Nix
test@{ lib, extendModules, ... }:
|
|
let
|
|
inherit (lib) mkOption types;
|
|
in
|
|
{
|
|
options = {
|
|
quickBuild = mkOption {
|
|
description = ''
|
|
Whether to perform a "quick" build of the Nix package to test.
|
|
|
|
When iterating on the functional tests, it's recommended to "set" this
|
|
to `true`, so that changes to the functional tests don't require any
|
|
recompilation of the package.
|
|
You can do so by building the `.quickBuild` attribute on the check package,
|
|
e.g:
|
|
```console
|
|
nix build .#hydraJobs.functional_user.quickBuild
|
|
```
|
|
|
|
We don't enable this by default to avoid the mostly unnecessary work of
|
|
performing an additional build of the package in cases where we build
|
|
the package normally anyway, such as in our pre-merge CI.
|
|
'';
|
|
type = types.bool;
|
|
default = false;
|
|
};
|
|
};
|
|
|
|
config = {
|
|
passthru.quickBuild =
|
|
let withQuickBuild = extendModules { modules = [{ quickBuild = true; }]; };
|
|
in withQuickBuild.config.test;
|
|
|
|
defaults = { pkgs, ... }: {
|
|
config = lib.mkIf test.config.quickBuild {
|
|
nix.package = pkgs.nixComponents.nix-cli;
|
|
|
|
system.forbiddenDependenciesRegexes = [
|
|
# This would indicate that the quickBuild feature is broken.
|
|
# It could happen if NixOS has a dependency on pkgs.nix instead of
|
|
# config.nix.package somewhere.
|
|
(builtins.unsafeDiscardStringContext pkgs.nix.outPath)
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|