From 73668f41dafd3570987fef58808f125a1534c8c7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 5 Jan 2010 15:32:14 +0000 Subject: [PATCH] * Added an "auto" pseudo display manager that logs in a user automatically. This is mostly useful for testing. (KDM also has this feature, but it's nice not to depend on KDE for non-KDE tests.) svn path=/nixos/trunk/; revision=19239 --- modules/module-list.nix | 2 + .../services/x11/desktop-managers/none.nix | 17 ++---- .../services/x11/display-managers/auto.nix | 55 +++++++++++++++++++ modules/services/x11/display-managers/kdm.nix | 2 +- tests/firefox.nix | 14 +++-- 5 files changed, 72 insertions(+), 18 deletions(-) create mode 100644 modules/services/x11/display-managers/auto.nix 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;