Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions nixos/doc/manual/configuration/x-windows.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,14 @@
<programlisting>
<xref linkend="opt-services.xserver.displayManager.defaultSession"/> = "none+i3";
</programlisting>
And, finally, to enable auto-login for a user <literal>johndoe</literal>:
Every display manager in NixOS supports auto-login, here is an example
using lightdm for a user <literal>alice</literal>:
<programlisting>
<xref linkend="opt-services.xserver.displayManager.auto.enable"/> = true;
<xref linkend="opt-services.xserver.displayManager.auto.user"/> = "johndoe";
<xref linkend="opt-services.xserver.displayManager.lightdm.enable"/> = true;
<xref linkend="opt-services.xserver.displayManager.lightdm.autoLogin.enable"/> = true;
<xref linkend="opt-services.xserver.displayManager.lightdm.autoLogin.user"/> = "alice";
</programlisting>
The options are named identically for all other display managers.
</para>
</simplesect>
<simplesect xml:id="sec-x11-graphics-cards-nvidia">
Expand Down
33 changes: 33 additions & 0 deletions nixos/doc/manual/release-notes/rl-2003.xml
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,39 @@ users.users.me =
The <literal>gcc5</literal> and <literal>gfortran5</literal> packages have been removed.
</para>
</listitem>
<listitem>
<para>
The <option>services.xserver.displayManager.auto</option> module has been removed.
It was only intended for use in internal NixOS tests, and gave the false impression
of it being a special display manager when it's actually LightDM.
Please use the <xref linkend="opt-services.xserver.displayManager.lightdm.autoLogin"/> options instead,
or any other display manager in NixOS as they all support auto-login. If you used this module specifically
because it permitted root auto-login you can override the lightdm-autologin pam module like:
<programlisting>
<link xlink:href="#opt-security.pam.services._name__.text">security.pam.services.lightdm-autologin.text</link> = lib.mkForce ''
auth requisite pam_nologin.so
auth required pam_succeed_if.so quiet
auth required pam_permit.so

account include lightdm

password include lightdm

session include lightdm
'';
</programlisting>
The difference is the:
<programlisting>
auth required pam_succeed_if.so quiet
</programlisting>
line, where default it's:
<programlisting>
auth required pam_succeed_if.so uid >= 1000 quiet
</programlisting>
not permitting users with uid's below 1000 (like root).
All other display managers in NixOS are configured like this.
</para>
</listitem>
</itemizedlist>
</section>

Expand Down
1 change: 0 additions & 1 deletion nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -865,7 +865,6 @@
./services/x11/unclutter.nix
./services/x11/unclutter-xfixes.nix
./services/x11/desktop-managers/default.nix
./services/x11/display-managers/auto.nix
./services/x11/display-managers/default.nix
./services/x11/display-managers/gdm.nix
./services/x11/display-managers/lightdm.nix
Expand Down
7 changes: 7 additions & 0 deletions nixos/modules/rename.nix
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,13 @@ with lib;
as the underlying package isn't being maintained. Working alternatives are
libinput and synaptics.
'')
(mkRemovedOptionModule [ "services" "xserver" "displayManager" "auto" ] ''
The services.xserver.displayManager.auto module has been removed
because it was only intended for use in internal NixOS tests, and gave the
false impression of it being a special display manager when it's actually
LightDM. Please use the services.xserver.displayManager.lightdm.autoLogin options
instead, or any other display manager in NixOS as they all support auto-login.
'')

# Do NOT add any option renames here, see top of the file
];
Expand Down
3 changes: 1 addition & 2 deletions nixos/modules/services/x11/xserver.nix
Original file line number Diff line number Diff line change
Expand Up @@ -556,8 +556,7 @@ in

services.xserver.displayManager.lightdm.enable =
let dmconf = cfg.displayManager;
default = !( dmconf.auto.enable
|| dmconf.gdm.enable
default = !(dmconf.gdm.enable
|| dmconf.sddm.enable
|| dmconf.xpra.enable );
in mkIf (default) true;
Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/chromium.nix
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ mapAttrs (channel: chromiumPkg: makeTest rec {

machine.imports = [ ./common/user-account.nix ./common/x11.nix ];
machine.virtualisation.memorySize = 2047;
machine.services.xserver.displayManager.auto.user = "alice";
machine.test-support.displayManager.auto.user = "alice";
machine.environment.systemPackages = [ chromiumPkg ];

startupHTML = pkgs.writeText "chromium-startup.html" ''
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ with lib;
let

dmcfg = config.services.xserver.displayManager;
cfg = dmcfg.auto;
cfg = config.test-support.displayManager.auto;

in

Expand All @@ -15,7 +15,7 @@ in

options = {

services.xserver.displayManager.auto = {
test-support.displayManager.auto = {

enable = mkOption {
default = false;
Expand Down
9 changes: 7 additions & 2 deletions nixos/tests/common/x11.nix
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
{ lib, ... }:

{ services.xserver.enable = true;
{
imports = [
./auto.nix
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is better than before but I would much rather do something like

imports = [
  (import ./common/auto-login.nix { user = "alice"; })
];

at each individual modules.

But it would not be idiomatic and I am not sure if it would not affect the performance negatively.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This whole thing could really turn into a common testing lib which I think we actually might need.
But I don't think I really want to improve this more just yet, I'd like to see this in 20.03.

];

services.xserver.enable = true;

# Automatically log in.
services.xserver.displayManager.auto.enable = true;
test-support.displayManager.auto.enable = true;

# Use IceWM as the window manager.
# Don't use a desktop manager.
Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/i3wm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {

machine = { lib, ... }: {
imports = [ ./common/x11.nix ./common/user-account.nix ];
services.xserver.displayManager.auto.user = "alice";
test-support.displayManager.auto.user = "alice";
services.xserver.displayManager.defaultSession = lib.mkForce "none+i3";
services.xserver.windowManager.i3.enable = true;
};
Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/signal-desktop.nix
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
];

services.xserver.enable = true;
services.xserver.displayManager.auto.user = "alice";
test-support.displayManager.auto.user = "alice";
environment.systemPackages = [ pkgs.signal-desktop ];
};

Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/systemd.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import ./make-test.nix ({ pkgs, ... }: {
systemd.extraConfig = "DefaultEnvironment=\"XXX_SYSTEM=foo\"";
systemd.user.extraConfig = "DefaultEnvironment=\"XXX_USER=bar\"";
services.journald.extraConfig = "Storage=volatile";
services.xserver.displayManager.auto.user = "alice";
test-support.displayManager.auto.user = "alice";

systemd.shutdown.test = pkgs.writeScript "test.shutdown" ''
#!${pkgs.stdenv.shell}
Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/virtualbox.nix
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ let
virtualisation.qemu.options =
if useKvmNestedVirt then ["-cpu" "kvm64,vmx=on"] else [];
virtualisation.virtualbox.host.enable = true;
services.xserver.displayManager.auto.user = "alice";
test-support.displayManager.auto.user = "alice";
users.users.alice.extraGroups = let
inherit (config.virtualisation.virtualbox.host) enableHardening;
in lib.mkIf enableHardening (lib.singleton "vboxusers");
Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/xautolock.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ with lib;
nodes.machine = {
imports = [ ./common/x11.nix ./common/user-account.nix ];

services.xserver.displayManager.auto.user = "bob";
test-support.displayManager.auto.user = "bob";
services.xserver.xautolock.enable = true;
services.xserver.xautolock.time = 1;
};
Expand Down
14 changes: 11 additions & 3 deletions nixos/tests/xfce.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,20 @@ import ./make-test-python.nix ({ pkgs, ...} : {
machine =
{ pkgs, ... }:

{ imports = [ ./common/user-account.nix ];
{
imports = [
./common/user-account.nix
];

services.xserver.enable = true;

services.xserver.displayManager.auto.enable = true;
services.xserver.displayManager.auto.user = "alice";
services.xserver.displayManager.lightdm = {
enable = true;
autoLogin = {
enable = true;
user = "alice";
};
};

services.xserver.desktopManager.xfce.enable = true;

Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/xmonad.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {

machine = { pkgs, ... }: {
imports = [ ./common/x11.nix ./common/user-account.nix ];
services.xserver.displayManager.auto.user = "alice";
test-support.displayManager.auto.user = "alice";
services.xserver.displayManager.defaultSession = "none+xmonad";
services.xserver.windowManager.xmonad = {
enable = true;
Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/xrdp.nix
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {

client = { pkgs, ... }: {
imports = [ ./common/x11.nix ./common/user-account.nix ];
services.xserver.displayManager.auto.user = "alice";
test-support.displayManager.auto.user = "alice";
environment.systemPackages = [ pkgs.freerdp ];
services.xrdp.enable = true;
services.xrdp.defaultWindowManager = "${pkgs.icewm}/bin/icewm";
Expand Down
4 changes: 2 additions & 2 deletions nixos/tests/xss-lock.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ with lib;
simple = {
imports = [ ./common/x11.nix ./common/user-account.nix ];
programs.xss-lock.enable = true;
services.xserver.displayManager.auto.user = "alice";
test-support.displayManager.auto.user = "alice";
};

custom_lockcmd = { pkgs, ... }: {
imports = [ ./common/x11.nix ./common/user-account.nix ];
services.xserver.displayManager.auto.user = "alice";
test-support.displayManager.auto.user = "alice";

programs.xss-lock = {
enable = true;
Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/yabar.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ with lib;
machine = {
imports = [ ./common/x11.nix ./common/user-account.nix ];

services.xserver.displayManager.auto.user = "bob";
test-support.displayManager.auto.user = "bob";

programs.yabar.enable = true;
programs.yabar.bars = {
Expand Down