Add support for environment.systemPackages.

This commit is contained in:
r-vdp 2023-06-09 15:27:12 +02:00
parent c02d43aa97
commit d5f138f939
No known key found for this signature in database
5 changed files with 115 additions and 39 deletions

View file

@ -1,10 +1,16 @@
{ lib, ... }: {
{ lib, pkgs, ... }: {
config = {
nixpkgs.hostPlatform = "x86_64-linux";
services.nginx.enable = true;
environment.etc = {
environment = {
systemPackages = [
pkgs.ripgrep
pkgs.fd
];
etc = {
foo = {
text = ''
This is just a test!
@ -48,6 +54,8 @@
source = "/run/systemd/system/";
};
};
};
systemd.services =
lib.listToAttrs
(lib.flip lib.genList 10 (ix:

View file

@ -284,6 +284,13 @@ in
cp ${resultImg} $out
'';
mkTestPreamble = node: action: ''
${node}.succeed("/system-manager-profile/bin/${action} 2>&1 | tee /tmp/output.log")
${node}.succeed("grep -vF 'ERROR' /tmp/output.log")
'';
activateProfileSnippet = node: self.lib.mkTestPreamble node "activate";
make-vm-test =
name:
{ system

View file

@ -6,6 +6,7 @@
}:
{
imports = [
./environment.nix
./etc.nix
./systemd.nix
./upstream/nixpkgs
@ -16,7 +17,6 @@
inherit (lib) types;
in
{
nixpkgs = {
# TODO: switch to lib.systems.parsedPlatform
hostPlatform = lib.mkOption {

View file

@ -0,0 +1,17 @@
{ lib, config, pkgs, ... }:
{
options.environment = {
systemPackages = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = [ ];
};
};
config = {
environment.etc."profile.d/system-manager-path.sh".source =
pkgs.writeShellScript "system-manager-path.sh" ''
export PATH=${lib.makeBinPath config.environment.systemPackages}:''${PATH}
'';
};
}

View file

@ -222,3 +222,47 @@ forEachUbuntuImage
];
})
)
//
forEachUbuntuImage
(imgName: image: lib.nameValuePair
"vm-test-system-path-${imgName}"
(system-manager.lib.make-vm-test "vm-test-system-path-${imgName}" {
inherit system;
modules = [
({ config, ... }:
let
inherit (config) hostPkgs;
in
{
nodes = {
node1 = { config, ... }: {
modules = [
../../../examples/example.nix
];
virtualisation.rootImage = system-manager.lib.prepareUbuntuImage {
inherit hostPkgs image;
nodeConfig = config;
};
};
};
testScript = ''
# Start all machines in parallel
start_all()
${system-manager.lib.activateProfileSnippet "node1"}
node1.succeed("/system-manager-profile/bin/activate 2>&1 | tee /tmp/output.log")
node1.succeed("grep -vF 'ERROR' /tmp/output.log")
node1.wait_for_unit("system-manager.target")
node1.succeed("bash --login -c 'realpath $(which rg) | grep -F ${hostPkgs.ripgrep}/bin/rg'")
node1.succeed("bash --login -c 'realpath $(which fd) | grep -F ${hostPkgs.fd}/bin/fd'")
'';
})
];
})
)