From ef5de19f6b349ee168610090fee7e570936e71ae Mon Sep 17 00:00:00 2001 From: purian23 Date: Thu, 21 May 2026 23:21:44 -0400 Subject: [PATCH] distros(dms-greeter): Add sysusers.d immutable distro support - Closes #1975 --- distro/debian/dms-greeter/debian/rules | 4 +++- distro/fedora/dms-greeter.spec | 3 +++ distro/opensuse/dms-greeter.spec | 3 +++ distro/ubuntu/dms-greeter/debian/rules | 5 +++++ quickshell/Modules/Greetd/README.md | 3 ++- quickshell/systemd/sysusers-dms-greeter.conf | 3 +++ 6 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 quickshell/systemd/sysusers-dms-greeter.conf diff --git a/distro/debian/dms-greeter/debian/rules b/distro/debian/dms-greeter/debian/rules index acdd4ff4..bc7c7786 100644 --- a/distro/debian/dms-greeter/debian/rules +++ b/distro/debian/dms-greeter/debian/rules @@ -29,7 +29,9 @@ override_dh_auto_install: install -Dm644 $$SOURCE_DIR/LICENSE \ debian/dms-greeter/usr/share/doc/dms-greeter/LICENSE && \ install -Dpm0644 $$SOURCE_DIR/systemd/tmpfiles-dms-greeter.conf \ - debian/dms-greeter/usr/lib/tmpfiles.d/dms-greeter.conf; \ + debian/dms-greeter/usr/lib/tmpfiles.d/dms-greeter.conf && \ + install -Dm644 $$SOURCE_DIR/systemd/sysusers-dms-greeter.conf \ + debian/dms-greeter/usr/lib/sysusers.d/dms-greeter.conf; \ else \ echo "ERROR: No upstream source (dms-qml or Modules/Greetd/assets/dms-greeter)!" && \ echo "Contents of current directory:" && ls -la && exit 1; \ diff --git a/distro/fedora/dms-greeter.spec b/distro/fedora/dms-greeter.spec index 56cc2e6d..51a8cc27 100644 --- a/distro/fedora/dms-greeter.spec +++ b/distro/fedora/dms-greeter.spec @@ -53,6 +53,8 @@ install -Dm644 %{_builddir}/dms-qml/Modules/Greetd/README.md %{buildroot}%{_docd install -Dpm0644 %{_builddir}/dms-qml/systemd/tmpfiles-dms-greeter.conf %{buildroot}%{_tmpfilesdir}/dms-greeter.conf +install -Dm644 %{_builddir}/dms-qml/systemd/sysusers-dms-greeter.conf %{buildroot}%{_sysusersdir}/dms-greeter.conf + install -Dm644 %{_builddir}/dms-qml/LICENSE %{buildroot}%{_docdir}/dms-greeter/LICENSE install -dm755 %{buildroot}%{_sharedstatedir}/greeter @@ -78,6 +80,7 @@ fi %{_bindir}/dms-greeter %{_datadir}/quickshell/dms-greeter/ %{_tmpfilesdir}/%{name}.conf +%{_sysusersdir}/dms-greeter.conf %pre # Create greeter user/group if they don't exist diff --git a/distro/opensuse/dms-greeter.spec b/distro/opensuse/dms-greeter.spec index cc6e7e75..eff998b7 100644 --- a/distro/opensuse/dms-greeter.spec +++ b/distro/opensuse/dms-greeter.spec @@ -53,6 +53,8 @@ install -Dm644 %{_builddir}/dms-qml/Modules/Greetd/README.md %{buildroot}%{_docd install -Dpm0644 %{_builddir}/dms-qml/systemd/tmpfiles-dms-greeter.conf %{buildroot}%{_tmpfilesdir}/dms-greeter.conf +install -Dm644 %{_builddir}/dms-qml/systemd/sysusers-dms-greeter.conf %{buildroot}%{_sysusersdir}/dms-greeter.conf + install -Dm644 %{_builddir}/dms-qml/LICENSE %{buildroot}%{_docdir}/dms-greeter/LICENSE install -dm755 %{buildroot}%{_sharedstatedir}/greeter @@ -78,6 +80,7 @@ fi %dir %{_datadir}/quickshell %{_datadir}/quickshell/dms-greeter/ %{_tmpfilesdir}/%{name}.conf +%{_sysusersdir}/dms-greeter.conf %pre # Create greeter user/group if they don't exist diff --git a/distro/ubuntu/dms-greeter/debian/rules b/distro/ubuntu/dms-greeter/debian/rules index 095aa3b4..0fe92a49 100755 --- a/distro/ubuntu/dms-greeter/debian/rules +++ b/distro/ubuntu/dms-greeter/debian/rules @@ -40,6 +40,11 @@ override_dh_auto_install: install -Dm644 DankMaterialShell-$(BASE_VERSION)/LICENSE \ debian/dms-greeter/usr/share/doc/dms-greeter/LICENSE + install -Dpm0644 DankMaterialShell-$(BASE_VERSION)/quickshell/systemd/tmpfiles-dms-greeter.conf \ + debian/dms-greeter/usr/lib/tmpfiles.d/dms-greeter.conf + install -Dm644 DankMaterialShell-$(BASE_VERSION)/quickshell/systemd/sysusers-dms-greeter.conf \ + debian/dms-greeter/usr/lib/sysusers.d/dms-greeter.conf + # Create cache directory structure (will be created by postinst) mkdir -p debian/dms-greeter/var/cache/dms-greeter diff --git a/quickshell/Modules/Greetd/README.md b/quickshell/Modules/Greetd/README.md index 0538215a..414cb904 100644 --- a/quickshell/Modules/Greetd/README.md +++ b/quickshell/Modules/Greetd/README.md @@ -97,7 +97,8 @@ sudo rpm -ivh x86_64/dms-greeter-*.rpm ``` The package automatically: -- Creates the greeter user + +- Creates the greeter user (via `systemd-sysusers` from `/usr/lib/sysusers.d/dms-greeter.conf` for atomic/immutable compatibility, with package script fallback) - Sets up directories and permissions - Configures greetd with auto-detected compositor - Applies SELinux contexts diff --git a/quickshell/systemd/sysusers-dms-greeter.conf b/quickshell/systemd/sysusers-dms-greeter.conf new file mode 100644 index 00000000..383d42ad --- /dev/null +++ b/quickshell/systemd/sysusers-dms-greeter.conf @@ -0,0 +1,3 @@ +# DMS greeter system user for greetd (declarative; survives ostree /etc/passwd merge). +# Installed as /usr/lib/sysusers.d/dms-greeter.conf +u greeter - "System Greeter" /var/lib/greeter /bin/bash