1{
2 config,
3 lib,
4 ...
5}: let
6 cfg = config.test-support;
7in {
8 options.test-support = with lib; {
9 user = mkOption {
10 default = "alice";
11 type = types.str;
12 };
13 desktop-environment = mkOption {
14 default = "icewm";
15 type = types.enum ["icewm"];
16 };
17 };
18
19 config = let
20 de = cfg.desktop-environment;
21 displayManager =
22 if de == "icewm"
23 then "lightdm"
24 else throw "unreachable";
25 windowManager =
26 if de == "icewm"
27 then "icewm"
28 else throw "unreachable";
29 in {
30 virtualisation.memorySize = lib.mkDefault 2000; # 2gb
31 services.displayManager.autoLogin.enable = true;
32 services.displayManager.autoLogin.user = "alice";
33 services.displayManager.defaultSession =
34 if de == "icewm"
35 then "none+icewm"
36 else null;
37
38 services.xserver.enable = true;
39 services.xserver.windowManager.${windowManager}.enable = true;
40 services.xserver.displayManager.${displayManager}.enable = true;
41
42 environment.sessionVariables = {
43 "ZED_ALLOW_EMULATED_GPU" = 1;
44 };
45
46 users.users.${cfg.user} = {
47 createHome = true;
48 home = "/home/${cfg.user}";
49 group = "users";
50 isNormalUser = true;
51 password = "password";
52 };
53 };
54}