mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-11-11 02:07:27 +01:00
53 lines
2.1 KiB
Nix
53 lines
2.1 KiB
Nix
{ lib, pkgs, ... }:
|
|
|
|
{
|
|
name = "nixos-init";
|
|
|
|
meta.maintainers = with lib.maintainers; [ nikstur ];
|
|
|
|
nodes.machine =
|
|
{ modulesPath, ... }:
|
|
{
|
|
boot.initrd.systemd.enable = true;
|
|
system.etc.overlay.enable = true;
|
|
services.userborn.enable = true;
|
|
|
|
system.nixos-init.enable = true;
|
|
# Forcibly set this to only these specific values.
|
|
boot.nixStoreMountOpts = lib.mkForce [
|
|
"nodev"
|
|
"nosuid"
|
|
];
|
|
};
|
|
|
|
testScript =
|
|
{ nodes, ... }: # python
|
|
''
|
|
with subtest("init"):
|
|
with subtest("/nix/store is mounted with the correct options"):
|
|
findmnt_output = machine.succeed("findmnt --direction backward --first-only --noheadings --output OPTIONS /nix/store").strip()
|
|
print(findmnt_output)
|
|
t.assertIn("nodev", findmnt_output)
|
|
t.assertIn("nosuid", findmnt_output)
|
|
|
|
t.assertEqual("${nodes.machine.system.build.toplevel}", machine.succeed("readlink /run/booted-system").strip())
|
|
|
|
with subtest("activation"):
|
|
t.assertEqual("${nodes.machine.system.build.toplevel}", machine.succeed("readlink /run/current-system").strip())
|
|
t.assertEqual("${nodes.machine.hardware.firmware}/lib/firmware", machine.succeed("cat /sys/module/firmware_class/parameters/path").strip())
|
|
t.assertEqual("${pkgs.kmod}/bin/modprobe", machine.succeed("cat /proc/sys/kernel/modprobe").strip())
|
|
t.assertEqual("${nodes.machine.environment.usrbinenv}", machine.succeed("readlink /usr/bin/env").strip())
|
|
t.assertEqual("${nodes.machine.environment.binsh}", machine.succeed("readlink /bin/sh").strip())
|
|
|
|
machine.wait_for_unit("multi-user.target")
|
|
with subtest("systemd state passing"):
|
|
systemd_analyze_output = machine.succeed("systemd-analyze")
|
|
print(systemd_analyze_output)
|
|
t.assertIn("(initrd)", systemd_analyze_output, "systemd-analyze has no information about the initrd")
|
|
|
|
ps_output = machine.succeed("ps ax -o command | grep systemd | head -n 1")
|
|
print(ps_output)
|
|
t.assertIn("--deserialize", ps_output, "--deserialize flag wasn't passed to systemd")
|
|
'';
|
|
}
|