Compare commits

...

4 Commits

Author SHA1 Message Date
ca3ea3166f thing 2025-08-07 21:23:07 -07:00
1242ba2274 improve testing infra 2025-08-07 21:19:22 -07:00
80d9e1029d refactor 2025-08-07 20:53:17 -07:00
003418b27b create handleTest function for future tests 2025-08-07 20:25:07 -07:00
5 changed files with 64 additions and 25 deletions

View File

@@ -62,6 +62,7 @@
username = "primary"; username = "primary";
hostname = "muffin"; hostname = "muffin";
eth_interface = "enp4s0"; eth_interface = "enp4s0";
system = "x86_64-linux";
service_configs = rec { service_configs = rec {
zpool_ssds = "tank"; zpool_ssds = "tank";
@@ -133,12 +134,17 @@
}; };
}; };
pkgs = nixpkgs.legacyPackages.x86_64-linux; pkgs = import nixpkgs {
inherit system;
hostPlatform = system;
buildPlatform = builtins.currentSystem;
};
lib = import ./lib.nix { inherit inputs pkgs; }; lib = import ./lib.nix { inherit inputs pkgs; };
in in
{ {
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style; formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
nixosConfigurations.${hostname} = nixpkgs.lib.nixosSystem { nixosConfigurations.${hostname} = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = rec { specialArgs = rec {
inherit inherit
username username
@@ -154,19 +160,17 @@
( (
{ lib, ... }: { lib, ... }:
{ {
config = { config.assertions = [
assertions = [ {
{ assertion =
assertion = let
let ports = lib.attrValues service_configs.ports;
ports = lib.attrValues service_configs.ports; uniquePorts = lib.unique ports;
uniquePorts = lib.unique ports; in
in (lib.length ports) == (lib.length uniquePorts);
(lib.length ports) == (lib.length uniquePorts); message = "Duplicate ports detected in 'ports' configuration";
message = "Duplicate ports detected in 'ports' configuration"; }
} ];
];
};
} }
) )
@@ -193,10 +197,7 @@
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
( (
{ {
pkgs,
username,
home-manager, home-manager,
stateVersion,
... ...
}: }:
{ {
@@ -217,13 +218,28 @@
profiles.system = { profiles.system = {
sshUser = "root"; sshUser = "root";
user = "root"; user = "root";
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.muffin; path = deploy-rs.lib.${system}.activate.nixos self.nixosConfigurations.muffin;
}; };
}; };
tests = import ./tests/tests.nix { packages.${system} =
inherit pkgs lib; let
config = self.nixosConfigurations.muffin.config; testSuite = import ./tests/tests.nix {
}; inherit pkgs lib;
config = self.nixosConfigurations.muffin.config;
};
in
{
tests = pkgs.linkFarm "all-tests" (
pkgs.lib.mapAttrsToList (name: test: {
name = name;
path = test;
}) testSuite
);
}
// (pkgs.lib.mapAttrs' (name: test: {
name = "test-${name}";
value = test;
}) testSuite);
}; };
} }

View File

@@ -19,7 +19,6 @@
swapDevices = [ ]; swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = true; hardware.cpu.amd.updateMicrocode = true;
hardware.enableRedistributableFirmware = true; hardware.enableRedistributableFirmware = true;
} }

20
tests/testTest.nix Normal file
View File

@@ -0,0 +1,20 @@
{
config,
lib,
pkgs,
...
}:
pkgs.testers.runNixOSTest {
name = "test of tests";
nodes.machine =
{ pkgs, ... }:
{
};
testScript = ''
start_all()
machine.wait_for_unit("multi-user.target")
machine.succeed("echo hello!")
'';
}

View File

@@ -4,6 +4,10 @@
pkgs, pkgs,
... ...
}: }:
let
handleTest = file: import file { inherit config lib pkgs; };
in
{ {
zfsTest = import ./zfs.nix { inherit config lib pkgs; }; zfsTest = handleTest ./zfs.nix;
testTest = handleTest ./testTest.nix;
} }

View File

@@ -5,7 +5,7 @@
... ...
}: }:
pkgs.testers.runNixOSTest { pkgs.testers.runNixOSTest {
name = "test of tests"; name = "zfs folder dependency and mounting test";
nodes.machine = nodes.machine =
{ pkgs, ... }: { pkgs, ... }: