45 lines
1.4 KiB
Nix
45 lines
1.4 KiB
Nix
|
{ pkgs, ... }:
|
||
|
|
||
|
{
|
||
|
name = "nixos-basics";
|
||
|
meta.maintainers = [ pkgs.lib.maintainers.rycee ];
|
||
|
|
||
|
nodes.machine = { ... }: {
|
||
|
imports = [ ../../../nixos ]; # Import the HM NixOS module.
|
||
|
|
||
|
users.users.alice = { isNormalUser = true; };
|
||
|
|
||
|
home-manager.users.alice = { ... }: {
|
||
|
home.stateVersion = "23.11";
|
||
|
home.file.test.text = "testfile";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
testScript = ''
|
||
|
start_all()
|
||
|
|
||
|
machine.wait_for_unit("home-manager-alice.service")
|
||
|
|
||
|
with subtest("Home Manager file"):
|
||
|
# The file should be linked with the expected content.
|
||
|
path = "/home/alice/test"
|
||
|
machine.succeed(f"test -L {path}")
|
||
|
actual = machine.succeed(f"cat {path}")
|
||
|
expected = "testfile"
|
||
|
assert actual == expected, f"expected {path} to contain {expected}, but got {actual}"
|
||
|
|
||
|
with subtest("GC root and profile"):
|
||
|
# There should be a GC root and Home Manager profile and they should point
|
||
|
# to the same path in the Nix store.
|
||
|
gcroot = "/home/alice/.local/state/home-manager/gcroots/current-home"
|
||
|
gcrootTarget = machine.succeed(f"readlink {gcroot}")
|
||
|
|
||
|
profile = "/home/alice/.local/state/nix/profiles"
|
||
|
profileTarget = machine.succeed(f"readlink {profile}/home-manager")
|
||
|
profile1Target = machine.succeed(f"readlink {profile}/{profileTarget}")
|
||
|
|
||
|
assert gcrootTarget == profile1Target, \
|
||
|
f"expected GC root and profile to point to same, but pointed to {gcrootTarget} and {profile1Target}"
|
||
|
'';
|
||
|
}
|