Merge pull request #239389 from K900/sddm-0.20.0
sddm: 0.19.0 -> 0.20.0
This commit is contained in:
commit
400aafbdc9
4 changed files with 61 additions and 61 deletions
|
@ -268,6 +268,17 @@ in
|
||||||
environment.systemPackages = [ sddm ];
|
environment.systemPackages = [ sddm ];
|
||||||
services.dbus.packages = [ sddm ];
|
services.dbus.packages = [ sddm ];
|
||||||
|
|
||||||
|
# We're not using the upstream unit, so copy these: https://github.com/sddm/sddm/blob/develop/services/sddm.service.in
|
||||||
|
systemd.services.display-manager.after = [
|
||||||
|
"systemd-user-sessions.service"
|
||||||
|
"getty@tty7.service"
|
||||||
|
"plymouth-quit.service"
|
||||||
|
"systemd-logind.service"
|
||||||
|
];
|
||||||
|
systemd.services.display-manager.conflicts = [
|
||||||
|
"getty@tty7.service"
|
||||||
|
];
|
||||||
|
|
||||||
# To enable user switching, allow sddm to allocate TTYs/displays dynamically.
|
# To enable user switching, allow sddm to allocate TTYs/displays dynamically.
|
||||||
services.xserver.tty = null;
|
services.xserver.tty = null;
|
||||||
services.xserver.display = null;
|
services.xserver.display = null;
|
||||||
|
|
|
@ -23,14 +23,14 @@ let
|
||||||
enableOCR = true;
|
enableOCR = true;
|
||||||
|
|
||||||
testScript = { nodes, ... }: let
|
testScript = { nodes, ... }: let
|
||||||
user = nodes.machine.config.users.users.alice;
|
user = nodes.machine.users.users.alice;
|
||||||
in ''
|
in ''
|
||||||
start_all()
|
start_all()
|
||||||
machine.wait_for_text("(?i)select your user")
|
machine.wait_for_text("(?i)select your user")
|
||||||
machine.screenshot("sddm")
|
machine.screenshot("sddm")
|
||||||
machine.send_chars("${user.password}\n")
|
machine.send_chars("${user.password}\n")
|
||||||
machine.wait_for_file("${user.home}/.Xauthority")
|
machine.wait_for_file("/tmp/xauth_*")
|
||||||
machine.succeed("xauth merge ${user.home}/.Xauthority")
|
machine.succeed("xauth merge /tmp/xauth_*")
|
||||||
machine.wait_for_window("^IceWM ")
|
machine.wait_for_window("^IceWM ")
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -55,12 +55,10 @@ let
|
||||||
services.xserver.windowManager.icewm.enable = true;
|
services.xserver.windowManager.icewm.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = { nodes, ... }: let
|
testScript = { nodes, ... }: ''
|
||||||
user = nodes.machine.config.users.users.alice;
|
|
||||||
in ''
|
|
||||||
start_all()
|
start_all()
|
||||||
machine.wait_for_file("${user.home}/.Xauthority")
|
machine.wait_for_file("/tmp/xauth_*")
|
||||||
machine.succeed("xauth merge ${user.home}/.Xauthority")
|
machine.succeed("xauth merge /tmp/xauth_*")
|
||||||
machine.wait_for_window("^IceWM ")
|
machine.wait_for_window("^IceWM ")
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,59 +1,44 @@
|
||||||
{ mkDerivation, lib, fetchFromGitHub, fetchpatch
|
{ mkDerivation, lib, fetchFromGitHub
|
||||||
, cmake, extra-cmake-modules, pkg-config, libxcb, libpthreadstubs
|
, cmake, extra-cmake-modules, pkg-config, qttools
|
||||||
, libXdmcp, libXau, qtbase, qtdeclarative, qtquickcontrols2, qttools, pam, systemd
|
, libxcb, libXau, pam, qtbase, qtdeclarative, qtquickcontrols2, systemd, xkeyboardconfig
|
||||||
}:
|
}:
|
||||||
|
mkDerivation rec {
|
||||||
let
|
|
||||||
version = "0.19.0";
|
|
||||||
|
|
||||||
in mkDerivation {
|
|
||||||
pname = "sddm";
|
pname = "sddm";
|
||||||
inherit version;
|
version = "0.20.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "sddm";
|
owner = "sddm";
|
||||||
repo = "sddm";
|
repo = "sddm";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "1s6icb5r1n6grfs137gdzfrcvwsb3hvlhib2zh6931x8pkl1qvxa";
|
hash = "sha256-ctZln1yQov+p/outkQhcWZp46IKITC04e22RfePwEM4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
./sddm-ignore-config-mtime.patch
|
./sddm-ignore-config-mtime.patch
|
||||||
./sddm-default-session.patch
|
./sddm-default-session.patch
|
||||||
# Load `/etc/profile` for `environment.variables` with zsh default shell.
|
|
||||||
# See: https://github.com/sddm/sddm/pull/1382
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://github.com/sddm/sddm/commit/e1dedeeab6de565e043f26ac16033e613c222ef9.patch";
|
|
||||||
sha256 = "sha256-OPyrUI3bbH+PGDBfoL4Ohb4wIvmy9TeYZhE0JxR/D58=";
|
|
||||||
})
|
|
||||||
# Fix build with Qt 5.15.3
|
|
||||||
# See: https://github.com/sddm/sddm/pull/1325
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://github.com/sddm/sddm/commit/e93bf95c54ad8c2a1604f8d7be05339164b19308.patch";
|
|
||||||
sha256 = "sha256:1rh6sdvzivjcl5b05fczarvxhgpjhi7019hvf2gadnwgwdg104r4";
|
|
||||||
})
|
|
||||||
# Fix fails to start while starting X server
|
|
||||||
# See: https://github.com/sddm/sddm/pull/1324
|
|
||||||
(fetchpatch {
|
|
||||||
url = "https://github.com/sddm/sddm/commit/adfaa222fdfa6115ea2b320b0bbc2126db9270a5.patch";
|
|
||||||
sha256 = "sha256-q/YLlAjxluzHMKUUQglLo3RyyhERQGPHXGr56+4R9VU=";
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch =
|
postPatch = ''
|
||||||
# Fix missing include for gettimeofday()
|
substituteInPlace src/greeter/waylandkeyboardbackend.cpp \
|
||||||
''
|
--replace "/usr/share/X11/xkb/rules/evdev.xml" "${xkeyboardconfig}/share/X11/xkb/rules/evdev.xml"
|
||||||
sed -e '1i#include <sys/time.h>' -i src/helper/HelperApp.cpp
|
'';
|
||||||
'';
|
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake extra-cmake-modules pkg-config qttools ];
|
nativeBuildInputs = [ cmake extra-cmake-modules pkg-config qttools ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libxcb libpthreadstubs libXdmcp libXau pam qtbase qtdeclarative qtquickcontrols2 systemd
|
libxcb
|
||||||
|
libXau
|
||||||
|
pam
|
||||||
|
qtbase
|
||||||
|
qtdeclarative
|
||||||
|
qtquickcontrols2
|
||||||
|
systemd
|
||||||
];
|
];
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DCONFIG_FILE=/etc/sddm.conf"
|
"-DCONFIG_FILE=/etc/sddm.conf"
|
||||||
|
"-DCONFIG_DIR=/etc/sddm.conf.d"
|
||||||
|
|
||||||
# Set UID_MIN and UID_MAX so that the build script won't try
|
# Set UID_MIN and UID_MAX so that the build script won't try
|
||||||
# to read them from /etc/login.defs (fails in chroot).
|
# to read them from /etc/login.defs (fails in chroot).
|
||||||
# The values come from NixOS; they may not be appropriate
|
# The values come from NixOS; they may not be appropriate
|
||||||
|
@ -62,9 +47,15 @@ in mkDerivation {
|
||||||
"-DUID_MIN=1000"
|
"-DUID_MIN=1000"
|
||||||
"-DUID_MAX=29999"
|
"-DUID_MAX=29999"
|
||||||
|
|
||||||
|
# we still want to run the DM on VT 7 for the time being, as 1-6 are
|
||||||
|
# occupied by getties by default
|
||||||
|
"-DSDDM_INITIAL_VT=7"
|
||||||
|
|
||||||
"-DQT_IMPORTS_DIR=${placeholder "out"}/${qtbase.qtQmlPrefix}"
|
"-DQT_IMPORTS_DIR=${placeholder "out"}/${qtbase.qtQmlPrefix}"
|
||||||
"-DCMAKE_INSTALL_SYSCONFDIR=${placeholder "out"}/etc"
|
"-DCMAKE_INSTALL_SYSCONFDIR=${placeholder "out"}/etc"
|
||||||
"-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system"
|
"-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system"
|
||||||
|
"-DSYSTEMD_SYSUSERS_DIR=${placeholder "out"}/lib/sysusers.d"
|
||||||
|
"-DSYSTEMD_TMPFILES_DIR=${placeholder "out"}/lib/tmpfiles.d"
|
||||||
"-DDBUS_CONFIG_DIR=${placeholder "out"}/share/dbus-1/system.d"
|
"-DDBUS_CONFIG_DIR=${placeholder "out"}/share/dbus-1/system.d"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,38 +1,39 @@
|
||||||
diff --git a/src/common/Configuration.h b/src/common/Configuration.h
|
diff --git a/src/common/Configuration.h b/src/common/Configuration.h
|
||||||
index cf44a62..7bb9c03 100644
|
index 54bcace..49cf5cb 100644
|
||||||
--- a/src/common/Configuration.h
|
--- a/src/common/Configuration.h
|
||||||
+++ b/src/common/Configuration.h
|
+++ b/src/common/Configuration.h
|
||||||
@@ -44,6 +44,7 @@ namespace SDDM {
|
@@ -48,6 +48,8 @@ namespace SDDM {
|
||||||
"NOTE: Currently ignored if autologin is enabled."));
|
|
||||||
Entry(InputMethod, QString, QStringLiteral("qtvirtualkeyboard"), _S("Input method module"));
|
Entry(InputMethod, QString, QStringLiteral("qtvirtualkeyboard"), _S("Input method module"));
|
||||||
Entry(Namespaces, QStringList, QStringList(), _S("Comma-separated list of Linux namespaces for user session to enter"));
|
Entry(Namespaces, QStringList, QStringList(), _S("Comma-separated list of Linux namespaces for user session to enter"));
|
||||||
|
Entry(GreeterEnvironment, QStringList, QStringList(), _S("Comma-separated list of environment variables to be set"));
|
||||||
+ Entry(DefaultSession, QString, QString(), _S("System-wide default session"));
|
+ Entry(DefaultSession, QString, QString(), _S("System-wide default session"));
|
||||||
|
+
|
||||||
// Name Entries (but it's a regular class again)
|
// Name Entries (but it's a regular class again)
|
||||||
Section(Theme,
|
Section(Theme,
|
||||||
Entry(ThemeDir, QString, _S(DATA_INSTALL_DIR "/themes"), _S("Theme directory path"));
|
Entry(ThemeDir, QString, _S(DATA_INSTALL_DIR "/themes"), _S("Theme directory path"));
|
||||||
diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp
|
diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp
|
||||||
index 1953c76..54fe2f2 100644
|
index d8698b7..df3e3c4 100644
|
||||||
--- a/src/greeter/SessionModel.cpp
|
--- a/src/greeter/SessionModel.cpp
|
||||||
+++ b/src/greeter/SessionModel.cpp
|
+++ b/src/greeter/SessionModel.cpp
|
||||||
@@ -43,6 +43,7 @@ namespace SDDM {
|
@@ -49,6 +49,7 @@ namespace SDDM {
|
||||||
beginResetModel();
|
if (dri_active)
|
||||||
populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get());
|
populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get());
|
||||||
populate(Session::X11Session, mainConfig.X11.SessionDir.get());
|
populate(Session::X11Session, mainConfig.X11.SessionDir.get());
|
||||||
+ selectDefaultSession();
|
+ selectDefaultSession();
|
||||||
endResetModel();
|
endResetModel();
|
||||||
|
|
||||||
// refresh everytime a file is changed, added or removed
|
// refresh everytime a file is changed, added or removed
|
||||||
@@ -52,6 +53,7 @@ namespace SDDM {
|
@@ -62,6 +63,7 @@ namespace SDDM {
|
||||||
d->sessions.clear();
|
if (dri_active)
|
||||||
populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get());
|
populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get());
|
||||||
populate(Session::X11Session, mainConfig.X11.SessionDir.get());
|
populate(Session::X11Session, mainConfig.X11.SessionDir.get());
|
||||||
+ selectDefaultSession();
|
+ selectDefaultSession();
|
||||||
endResetModel();
|
endResetModel();
|
||||||
});
|
});
|
||||||
watcher->addPath(mainConfig.Wayland.SessionDir.get());
|
watcher->addPaths(mainConfig.Wayland.SessionDir.get());
|
||||||
@@ -149,11 +151,25 @@ namespace SDDM {
|
@@ -164,11 +166,25 @@ namespace SDDM {
|
||||||
else
|
|
||||||
delete si;
|
delete si;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
@ -58,14 +59,13 @@ index 1953c76..54fe2f2 100644
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff --git a/src/greeter/SessionModel.h b/src/greeter/SessionModel.h
|
diff --git a/src/greeter/SessionModel.h b/src/greeter/SessionModel.h
|
||||||
index 2e2efa9..a93315c 100644
|
index 8f4d539..02f77ce 100644
|
||||||
--- a/src/greeter/SessionModel.h
|
--- a/src/greeter/SessionModel.h
|
||||||
+++ b/src/greeter/SessionModel.h
|
+++ b/src/greeter/SessionModel.h
|
||||||
@@ -58,6 +58,7 @@ namespace SDDM {
|
@@ -59,6 +59,7 @@ namespace SDDM {
|
||||||
SessionModelPrivate *d { nullptr };
|
SessionModelPrivate *d { nullptr };
|
||||||
|
|
||||||
void populate(Session::Type type, const QString &path);
|
void populate(Session::Type type, const QStringList &dirPaths);
|
||||||
+ void selectDefaultSession();
|
+ void selectDefaultSession();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue