9a283a038d
Since the introduction of option `containers.<name>.pkgs`, the `nixpkgs.*` options (including `nixpkgs.pkgs`, `nixpkgs.config`, ...) were always ignored in container configs, which broke existing containers. This was due to `containers.<name>.pkgs` having two separate effects: (1) It sets the source for the modules that are used to evaluate the container. (2) It sets the `pkgs` arg (`_module.args.pkgs`) that is used inside the container modules. This happens even when the default value of `containers.<name>.pkgs` is unchanged, in which case the container `pkgs` arg is set to the pkgs of the host system. Previously, the `pkgs` arg was determined by the `containers.<name>.config.nixpkgs.*` options. This commit reverts the breaking change (2) while adding a backwards-compatible way to achieve (1). It removes option `pkgs` and adds option `nixpkgs` which implements (1). Existing users of `pkgs` are informed by an error message to use option `nixpkgs` or to achieve only (2) by setting option `containers.<name>.config.nixpkgs.pkgs`.
35 lines
867 B
Nix
35 lines
867 B
Nix
import ./make-test-python.nix ({ pkgs, lib, ...} : let
|
|
|
|
customPkgs = pkgs.appendOverlays [ (self: super: {
|
|
hello = super.hello.overrideAttrs (old: {
|
|
name = "custom-hello";
|
|
});
|
|
}) ];
|
|
|
|
in {
|
|
name = "containers-custom-pkgs";
|
|
meta = with lib.maintainers; {
|
|
maintainers = [ adisbladis earvstedt ];
|
|
};
|
|
|
|
machine = { config, ... }: {
|
|
assertions = let
|
|
helloName = (builtins.head config.containers.test.config.system.extraDependencies).name;
|
|
in [ {
|
|
assertion = helloName == "custom-hello";
|
|
message = "Unexpected value: ${helloName}";
|
|
} ];
|
|
|
|
containers.test = {
|
|
autoStart = true;
|
|
config = { pkgs, config, ... }: {
|
|
nixpkgs.pkgs = customPkgs;
|
|
system.extraDependencies = [ pkgs.hello ];
|
|
};
|
|
};
|
|
};
|
|
|
|
# This test only consists of evaluating the test machine
|
|
testScript = "";
|
|
})
|