mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-07-11 15:12:40 +02:00
feat: NixOS tests using systemd-nspawn containers
This commit is contained in:
@@ -1,8 +1,4 @@
|
|||||||
{
|
{ lib, ... }:
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
{
|
||||||
# auto upgrade nix to the unstable version
|
# auto upgrade nix to the unstable version
|
||||||
# https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/tools/package-management/nix/default.nix#L284
|
# https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/tools/package-management/nix/default.nix#L284
|
||||||
@@ -23,7 +19,20 @@
|
|||||||
|
|
||||||
# Manual optimise storage: nix-store --optimise
|
# Manual optimise storage: nix-store --optimise
|
||||||
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store
|
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store
|
||||||
nix.settings.auto-optimise-store = true;
|
nix.settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
|
|
||||||
|
# Reference: https://github.com/NixOS/nixpkgs/pull/478109
|
||||||
|
# NixOS tests using systemd-nspawn containers require the Nix daemon to be
|
||||||
|
# configured with the following settings:
|
||||||
|
auto-allocate-uids = true;
|
||||||
|
extra-system-features = [ "uid-range" ];
|
||||||
|
experimental-features = [
|
||||||
|
"auto-allocate-uids"
|
||||||
|
"cgroups"
|
||||||
|
];
|
||||||
|
sandbox-paths = [ "/dev/net" ];
|
||||||
|
};
|
||||||
|
|
||||||
nix.channel.enable = false; # remove nix-channel related tools & configs, we use flakes instead.
|
nix.channel.enable = false; # remove nix-channel related tools & configs, we use flakes instead.
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
outputs,
|
||||||
|
}:
|
||||||
|
lib.genAttrs (builtins.attrNames outputs.nixosConfigurations) (_: {
|
||||||
|
autoAllocateUids = true;
|
||||||
|
hasUidRange = true;
|
||||||
|
hasAutoAllocateUidsFeature = true;
|
||||||
|
hasCgroupsFeature = true;
|
||||||
|
hasDevNetSandboxPath = true;
|
||||||
|
})
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
outputs,
|
||||||
|
}:
|
||||||
|
lib.genAttrs (builtins.attrNames outputs.nixosConfigurations) (
|
||||||
|
name:
|
||||||
|
let
|
||||||
|
settings = outputs.nixosConfigurations.${name}.config.nix.settings;
|
||||||
|
effectiveSystemFeatures =
|
||||||
|
(settings.system-features or [ ]) ++ (settings.extra-system-features or [ ]);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
autoAllocateUids = settings.auto-allocate-uids or false;
|
||||||
|
hasUidRange = builtins.elem "uid-range" effectiveSystemFeatures;
|
||||||
|
hasAutoAllocateUidsFeature = builtins.elem "auto-allocate-uids" (
|
||||||
|
settings.experimental-features or [ ]
|
||||||
|
);
|
||||||
|
hasCgroupsFeature = builtins.elem "cgroups" (settings.experimental-features or [ ]);
|
||||||
|
hasDevNetSandboxPath = builtins.elem "/dev/net" (settings.sandbox-paths or [ ]);
|
||||||
|
}
|
||||||
|
)
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
outputs,
|
||||||
|
}:
|
||||||
|
lib.genAttrs (builtins.attrNames outputs.nixosConfigurations) (_: {
|
||||||
|
autoAllocateUids = true;
|
||||||
|
hasUidRange = true;
|
||||||
|
hasAutoAllocateUidsFeature = true;
|
||||||
|
hasCgroupsFeature = true;
|
||||||
|
hasDevNetSandboxPath = true;
|
||||||
|
})
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
outputs,
|
||||||
|
}:
|
||||||
|
lib.genAttrs (builtins.attrNames outputs.nixosConfigurations) (
|
||||||
|
name:
|
||||||
|
let
|
||||||
|
settings = outputs.nixosConfigurations.${name}.config.nix.settings;
|
||||||
|
effectiveSystemFeatures =
|
||||||
|
(settings.system-features or [ ]) ++ (settings.extra-system-features or [ ]);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
autoAllocateUids = settings.auto-allocate-uids or false;
|
||||||
|
hasUidRange = builtins.elem "uid-range" effectiveSystemFeatures;
|
||||||
|
hasAutoAllocateUidsFeature = builtins.elem "auto-allocate-uids" (
|
||||||
|
settings.experimental-features or [ ]
|
||||||
|
);
|
||||||
|
hasCgroupsFeature = builtins.elem "cgroups" (settings.experimental-features or [ ]);
|
||||||
|
hasDevNetSandboxPath = builtins.elem "/dev/net" (settings.sandbox-paths or [ ]);
|
||||||
|
}
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user