1{ lib, ... }:
2{
3 name = "nixos-generate-config";
4 meta.maintainers = with lib.maintainers; [ basvandijk ];
5 nodes.machine = {
6 system.nixos-generate-config.configuration = ''
7 # OVERRIDDEN
8 { config, pkgs, ... }: {
9 imports = [ ./hardware-configuration.nix ];
10 $bootLoaderConfig
11 $desktopConfiguration
12 }
13 '';
14
15 system.nixos-generate-config.desktopConfiguration = [
16 ''
17 # DESKTOP
18 services.displayManager.gdm.enable = true;
19 services.desktopManager.gnome.enable = true;
20 ''
21 ];
22 };
23 testScript = ''
24 start_all()
25 machine.wait_for_unit("multi-user.target")
26 machine.succeed("nixos-generate-config")
27
28 machine.succeed("nix-instantiate --parse /etc/nixos/configuration.nix /etc/nixos/hardware-configuration.nix")
29
30 # Test if the configuration really is overridden
31 machine.succeed("grep 'OVERRIDDEN' /etc/nixos/configuration.nix")
32
33 # Test if desktop configuration really is overridden
34 machine.succeed("grep 'DESKTOP' /etc/nixos/configuration.nix")
35
36 # Test of if the Perl variable $bootLoaderConfig is spliced correctly:
37 machine.succeed(
38 "grep 'boot\\.loader\\.grub\\.enable = true;' /etc/nixos/configuration.nix"
39 )
40
41 # Test if the Perl variable $desktopConfiguration is spliced correctly
42 machine.succeed(
43 "grep 'services\\.desktopManager\\.gnome\\.enable = true;' /etc/nixos/configuration.nix"
44 )
45
46 machine.succeed("rm -rf /etc/nixos")
47 machine.succeed("nixos-generate-config --flake")
48 machine.succeed("nix-instantiate --parse /etc/nixos/flake.nix /etc/nixos/configuration.nix /etc/nixos/hardware-configuration.nix")
49
50 machine.succeed("mv /etc/nixos /etc/nixos-with-flake-arg")
51 machine.succeed("printf '[Defaults]\nFlake = 1\n' > /etc/nixos-generate-config.conf")
52 machine.succeed("nixos-generate-config")
53 machine.succeed("nix-instantiate --parse /etc/nixos/flake.nix /etc/nixos/configuration.nix /etc/nixos/hardware-configuration.nix")
54 machine.succeed("diff -r /etc/nixos /etc/nixos-with-flake-arg")
55 '';
56}