Skip to content

Commit

Permalink
Merge pull request #85570 from adisbladis/nixos-containers-pkgs
Browse files Browse the repository at this point in the history
nixos-containers: Add support for custom nixpkgs argument
  • Loading branch information
adisbladis committed Apr 20, 2020
2 parents 636a5a6 + ab37d7e commit d79c2dd
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 2 deletions.
18 changes: 16 additions & 2 deletions nixos/modules/virtualisation/containers.nix
Original file line number Diff line number Diff line change
Expand Up @@ -463,10 +463,15 @@ in
A specification of the desired configuration of this
container, as a NixOS module.
'';
type = lib.mkOptionType {
type = let
confPkgs = if config.pkgs == null then pkgs else config.pkgs;
in lib.mkOptionType {
name = "Toplevel NixOS config";
merge = loc: defs: (import ../../lib/eval-config.nix {
merge = loc: defs: (import (confPkgs.path + "/nixos/lib/eval-config.nix") {
inherit system;
pkgs = confPkgs;
baseModules = import (confPkgs.path + "/nixos/modules/module-list.nix");
inherit (confPkgs) lib;
modules =
let
extraConfig = {
Expand Down Expand Up @@ -515,6 +520,15 @@ in
'';
};

pkgs = mkOption {
type = types.nullOr types.attrs;
default = null;
example = literalExample "pkgs";
description = ''
Customise which nixpkgs to use for this container.
'';
};

ephemeral = mkOption {
type = types.bool;
default = false;
Expand Down
1 change: 1 addition & 0 deletions nixos/tests/all-tests.nix
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ in
consul = handleTest ./consul.nix {};
cockroachdb = handleTestOn ["x86_64-linux"] ./cockroachdb.nix {};
containers-bridge = handleTest ./containers-bridge.nix {};
containers-custom-pkgs.nix = handleTest ./containers-custom-pkgs.nix {};
containers-ephemeral = handleTest ./containers-ephemeral.nix {};
containers-extra_veth = handleTest ./containers-extra_veth.nix {};
containers-hosts = handleTest ./containers-hosts.nix {};
Expand Down
42 changes: 42 additions & 0 deletions nixos/tests/containers-custom-pkgs.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Test for NixOS' container support.

import ./make-test-python.nix ({ pkgs, lib, ...} : let

customPkgs = pkgs // {
hello = pkgs.hello.overrideAttrs(old: {
name = "custom-hello";
});
};

in {
name = "containers-hosts";
meta = with lib.maintainers; {
maintainers = [ adisbladis ];
};

machine =
{ ... }:
{
virtualisation.memorySize = 256;
virtualisation.vlans = [];

containers.simple = {
autoStart = true;
pkgs = customPkgs;
config = {pkgs, config, ... }: {
environment.systemPackages = [
pkgs.hello
];
};
};

};

testScript = ''
start_all()
machine.wait_for_unit("default.target")
machine.succeed(
"test $(nixos-container run simple -- readlink -f /run/current-system/sw/bin/hello) = ${customPkgs.hello}/bin/hello"
)
'';
})

0 comments on commit d79c2dd

Please sign in to comment.