nixos/display-managers/auto: remove

This module allows root autoLogin, so we would break that for users, but
they shouldn't be using it anyways. This gives the impression like auto
is some special display manager, when it's just lightdm and special pam
rules to allow root autoLogin. It was created for NixOS's testing
so I believe this is where it belongs.
This commit is contained in:
worldofpeace 2020-01-26 17:41:19 -05:00
parent 7adffb14cd
commit c95612a5a2
18 changed files with 78 additions and 24 deletions

View File

@ -85,11 +85,14 @@
<programlisting> <programlisting>
<xref linkend="opt-services.xserver.displayManager.defaultSession"/> = "none+i3"; <xref linkend="opt-services.xserver.displayManager.defaultSession"/> = "none+i3";
</programlisting> </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> <programlisting>
<xref linkend="opt-services.xserver.displayManager.auto.enable"/> = true; <xref linkend="opt-services.xserver.displayManager.lightdm.enable"/> = true;
<xref linkend="opt-services.xserver.displayManager.auto.user"/> = "johndoe"; <xref linkend="opt-services.xserver.displayManager.lightdm.autoLogin.enable"/> = true;
<xref linkend="opt-services.xserver.displayManager.lightdm.autoLogin.user"/> = "alice";
</programlisting> </programlisting>
The options are named identically for all other display managers.
</para> </para>
</simplesect> </simplesect>
<simplesect xml:id="sec-x11-graphics-cards-nvidia"> <simplesect xml:id="sec-x11-graphics-cards-nvidia">

View File

@ -457,6 +457,39 @@ users.users.me =
The <literal>gcc5</literal> and <literal>gfortran5</literal> packages have been removed. The <literal>gcc5</literal> and <literal>gfortran5</literal> packages have been removed.
</para> </para>
</listitem> </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> </itemizedlist>
</section> </section>

View File

@ -865,7 +865,6 @@
./services/x11/unclutter.nix ./services/x11/unclutter.nix
./services/x11/unclutter-xfixes.nix ./services/x11/unclutter-xfixes.nix
./services/x11/desktop-managers/default.nix ./services/x11/desktop-managers/default.nix
./services/x11/display-managers/auto.nix
./services/x11/display-managers/default.nix ./services/x11/display-managers/default.nix
./services/x11/display-managers/gdm.nix ./services/x11/display-managers/gdm.nix
./services/x11/display-managers/lightdm.nix ./services/x11/display-managers/lightdm.nix

View File

@ -34,6 +34,13 @@ with lib;
as the underlying package isn't being maintained. Working alternatives are as the underlying package isn't being maintained. Working alternatives are
libinput and synaptics. 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 # Do NOT add any option renames here, see top of the file
]; ];

View File

@ -556,8 +556,7 @@ in
services.xserver.displayManager.lightdm.enable = services.xserver.displayManager.lightdm.enable =
let dmconf = cfg.displayManager; let dmconf = cfg.displayManager;
default = !( dmconf.auto.enable default = !(dmconf.gdm.enable
|| dmconf.gdm.enable
|| dmconf.sddm.enable || dmconf.sddm.enable
|| dmconf.xpra.enable ); || dmconf.xpra.enable );
in mkIf (default) true; in mkIf (default) true;

View File

@ -23,7 +23,7 @@ mapAttrs (channel: chromiumPkg: makeTest rec {
machine.imports = [ ./common/user-account.nix ./common/x11.nix ]; machine.imports = [ ./common/user-account.nix ./common/x11.nix ];
machine.virtualisation.memorySize = 2047; machine.virtualisation.memorySize = 2047;
machine.services.xserver.displayManager.auto.user = "alice"; machine.test-support.displayManager.auto.user = "alice";
machine.environment.systemPackages = [ chromiumPkg ]; machine.environment.systemPackages = [ chromiumPkg ];
startupHTML = pkgs.writeText "chromium-startup.html" '' startupHTML = pkgs.writeText "chromium-startup.html" ''

View File

@ -5,7 +5,7 @@ with lib;
let let
dmcfg = config.services.xserver.displayManager; dmcfg = config.services.xserver.displayManager;
cfg = dmcfg.auto; cfg = config.test-support.displayManager.auto;
in in
@ -15,7 +15,7 @@ in
options = { options = {
services.xserver.displayManager.auto = { test-support.displayManager.auto = {
enable = mkOption { enable = mkOption {
default = false; default = false;

View File

@ -1,9 +1,14 @@
{ lib, ... }: { lib, ... }:
{ services.xserver.enable = true; {
imports = [
./auto.nix
];
services.xserver.enable = true;
# Automatically log in. # Automatically log in.
services.xserver.displayManager.auto.enable = true; test-support.displayManager.auto.enable = true;
# Use IceWM as the window manager. # Use IceWM as the window manager.
# Don't use a desktop manager. # Don't use a desktop manager.

View File

@ -6,7 +6,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
machine = { lib, ... }: { machine = { lib, ... }: {
imports = [ ./common/x11.nix ./common/user-account.nix ]; 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.displayManager.defaultSession = lib.mkForce "none+i3";
services.xserver.windowManager.i3.enable = true; services.xserver.windowManager.i3.enable = true;
}; };

View File

@ -15,7 +15,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
]; ];
services.xserver.enable = true; services.xserver.enable = true;
services.xserver.displayManager.auto.user = "alice"; test-support.displayManager.auto.user = "alice";
environment.systemPackages = [ pkgs.signal-desktop ]; environment.systemPackages = [ pkgs.signal-desktop ];
}; };

View File

@ -19,7 +19,7 @@ import ./make-test.nix ({ pkgs, ... }: {
systemd.extraConfig = "DefaultEnvironment=\"XXX_SYSTEM=foo\""; systemd.extraConfig = "DefaultEnvironment=\"XXX_SYSTEM=foo\"";
systemd.user.extraConfig = "DefaultEnvironment=\"XXX_USER=bar\""; systemd.user.extraConfig = "DefaultEnvironment=\"XXX_USER=bar\"";
services.journald.extraConfig = "Storage=volatile"; services.journald.extraConfig = "Storage=volatile";
services.xserver.displayManager.auto.user = "alice"; test-support.displayManager.auto.user = "alice";
systemd.shutdown.test = pkgs.writeScript "test.shutdown" '' systemd.shutdown.test = pkgs.writeScript "test.shutdown" ''
#!${pkgs.stdenv.shell} #!${pkgs.stdenv.shell}

View File

@ -356,7 +356,7 @@ let
virtualisation.qemu.options = virtualisation.qemu.options =
if useKvmNestedVirt then ["-cpu" "kvm64,vmx=on"] else []; if useKvmNestedVirt then ["-cpu" "kvm64,vmx=on"] else [];
virtualisation.virtualbox.host.enable = true; virtualisation.virtualbox.host.enable = true;
services.xserver.displayManager.auto.user = "alice"; test-support.displayManager.auto.user = "alice";
users.users.alice.extraGroups = let users.users.alice.extraGroups = let
inherit (config.virtualisation.virtualbox.host) enableHardening; inherit (config.virtualisation.virtualbox.host) enableHardening;
in lib.mkIf enableHardening (lib.singleton "vboxusers"); in lib.mkIf enableHardening (lib.singleton "vboxusers");

View File

@ -9,7 +9,7 @@ with lib;
nodes.machine = { nodes.machine = {
imports = [ ./common/x11.nix ./common/user-account.nix ]; 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.enable = true;
services.xserver.xautolock.time = 1; services.xserver.xautolock.time = 1;
}; };

View File

@ -4,12 +4,20 @@ import ./make-test-python.nix ({ pkgs, ...} : {
machine = machine =
{ pkgs, ... }: { pkgs, ... }:
{ imports = [ ./common/user-account.nix ]; {
imports = [
./common/user-account.nix
];
services.xserver.enable = true; services.xserver.enable = true;
services.xserver.displayManager.auto.enable = true; services.xserver.displayManager.lightdm = {
services.xserver.displayManager.auto.user = "alice"; enable = true;
autoLogin = {
enable = true;
user = "alice";
};
};
services.xserver.desktopManager.xfce.enable = true; services.xserver.desktopManager.xfce.enable = true;

View File

@ -6,7 +6,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
machine = { pkgs, ... }: { machine = { pkgs, ... }: {
imports = [ ./common/x11.nix ./common/user-account.nix ]; 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.displayManager.defaultSession = "none+xmonad";
services.xserver.windowManager.xmonad = { services.xserver.windowManager.xmonad = {
enable = true; enable = true;

View File

@ -14,7 +14,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
client = { pkgs, ... }: { client = { pkgs, ... }: {
imports = [ ./common/x11.nix ./common/user-account.nix ]; imports = [ ./common/x11.nix ./common/user-account.nix ];
services.xserver.displayManager.auto.user = "alice"; test-support.displayManager.auto.user = "alice";
environment.systemPackages = [ pkgs.freerdp ]; environment.systemPackages = [ pkgs.freerdp ];
services.xrdp.enable = true; services.xrdp.enable = true;
services.xrdp.defaultWindowManager = "${pkgs.icewm}/bin/icewm"; services.xrdp.defaultWindowManager = "${pkgs.icewm}/bin/icewm";

View File

@ -10,12 +10,12 @@ with lib;
simple = { simple = {
imports = [ ./common/x11.nix ./common/user-account.nix ]; imports = [ ./common/x11.nix ./common/user-account.nix ];
programs.xss-lock.enable = true; programs.xss-lock.enable = true;
services.xserver.displayManager.auto.user = "alice"; test-support.displayManager.auto.user = "alice";
}; };
custom_lockcmd = { pkgs, ... }: { custom_lockcmd = { pkgs, ... }: {
imports = [ ./common/x11.nix ./common/user-account.nix ]; imports = [ ./common/x11.nix ./common/user-account.nix ];
services.xserver.displayManager.auto.user = "alice"; test-support.displayManager.auto.user = "alice";
programs.xss-lock = { programs.xss-lock = {
enable = true; enable = true;

View File

@ -11,7 +11,7 @@ with lib;
machine = { machine = {
imports = [ ./common/x11.nix ./common/user-account.nix ]; 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.enable = true;
programs.yabar.bars = { programs.yabar.bars = {