diff --git a/modules/module-list.nix b/modules/module-list.nix index 0f8b47eb764..b81512efc08 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -112,12 +112,14 @@ ./services/x11/desktop-managers/none.nix ./services/x11/desktop-managers/xterm.nix ./services/x11/display-managers/default.nix + ./services/x11/display-managers/auto.nix ./services/x11/display-managers/kdm.nix ./services/x11/display-managers/slim.nix ./services/x11/hardware/synaptics.nix ./services/x11/hardware/wacom.nix ./services/x11/window-managers/compiz.nix ./services/x11/window-managers/default.nix + ./services/x11/window-managers/icewm.nix ./services/x11/window-managers/kwm.nix ./services/x11/window-managers/metacity.nix ./services/x11/window-managers/none.nix diff --git a/modules/services/x11/desktop-managers/none.nix b/modules/services/x11/desktop-managers/none.nix index a86bd5a7415..af7a376ae02 100644 --- a/modules/services/x11/desktop-managers/none.nix +++ b/modules/services/x11/desktop-managers/none.nix @@ -1,14 +1,7 @@ { - services = { - xserver = { - - desktopManager = { - session = [{ - name = "none"; - start = ""; - }]; - }; - - }; - }; + services.xserver.desktopManager.session = + [ { name = "none"; + start = ""; + } + ]; } diff --git a/modules/services/x11/display-managers/auto.nix b/modules/services/x11/display-managers/auto.nix new file mode 100644 index 00000000000..8805fbfd383 --- /dev/null +++ b/modules/services/x11/display-managers/auto.nix @@ -0,0 +1,55 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + dmcfg = config.services.xserver.displayManager; + cfg = dmcfg.auto; + +in + +{ + + ###### interface + + options = { + + services.xserver.displayManager.auto = { + + enable = mkOption { + default = false; + description = '' + Whether to enable the fake "auto" display manager, which + automatically logs in the user specified in the + option. This is mostly useful for + automated tests. + ''; + }; + + user = mkOption { + default = "root"; + description = "The user account to login automatically."; + }; + + }; + + }; + + + ###### implementation + + config = mkIf cfg.enable { + + services.xserver.displayManager.job = + { execCmd = + '' + ${pkgs.xorg.xinit}/bin/xinit \ + ${pkgs.su}/bin/su -c ${dmcfg.session.script} ${cfg.user} \ + -- ${dmcfg.xserverBin} ${dmcfg.xserverArgs} + ''; + }; + + }; + +} diff --git a/modules/services/x11/display-managers/kdm.nix b/modules/services/x11/display-managers/kdm.nix index 18a6623eb85..9ce87d64e48 100644 --- a/modules/services/x11/display-managers/kdm.nix +++ b/modules/services/x11/display-managers/kdm.nix @@ -72,7 +72,7 @@ in enableXDMCP = mkOption { default = false; description = '' - Whether to enable XDMCP, which allows remote logins"; + Whether to enable XDMCP, which allows remote logins. ''; }; diff --git a/tests/firefox.nix b/tests/firefox.nix index 17bfc3f9e4a..a76d46bb7bb 100644 --- a/tests/firefox.nix +++ b/tests/firefox.nix @@ -6,7 +6,15 @@ { config, pkgs, ... }: { services.xserver.enable = true; - environment.systemPackages = [ pkgs.icewm pkgs.firefox ]; + services.xserver.displayManager.slim.enable = false; + services.xserver.displayManager.auto.enable = true; + + services.xserver.windowManager.default = "icewm"; + services.xserver.windowManager.icewm.enable = true; + + services.xserver.desktopManager.default = "none"; + + environment.systemPackages = [ pkgs.firefox ]; }; testScript = @@ -15,10 +23,6 @@ sleep 10; - $machine->execute("DISPLAY=:0.0 icewm &"); - - sleep 10; - $machine->execute("DISPLAY=:0.0 HOME=/root firefox file://${pkgs.valgrind}/share/doc/valgrind/html/index.html &"); sleep 30;