From e51d5e620eaa7dfeb2b0e7134e26841c8ab255ea Mon Sep 17 00:00:00 2001 From: Fangcat_Dev Date: Sun, 11 Oct 2026 12:10:52 +0000 Subject: [PATCH] fix: adopt systemd-sysusers --- README.md | 22 ++++-------- data/first-setup-bootutil | 30 ++++++++++++++++ data/first-setup-bootutil.service | 14 ++++++++ data/firstsetup-tmpfiles.conf | 3 ++ data/firstsetup.conf | 5 +++ data/meson.build | 50 ++++++++++++++++++++++----- data/org.vanillaos.FirstSetup.service | 13 +++++++ data/remove-first-setup-user | 25 ++++++-------- data/remove-first-setup-user.service | 3 ++ 9 files changed, 127 insertions(+), 38 deletions(-) create mode 100755 data/first-setup-bootutil create mode 100644 data/first-setup-bootutil.service create mode 100644 data/firstsetup-tmpfiles.conf create mode 100644 data/firstsetup.conf create mode 100644 data/org.vanillaos.FirstSetup.service diff --git a/README.md b/README.md index 8096df39..5d676e57 100644 --- a/README.md +++ b/README.md @@ -89,25 +89,15 @@ meson install -C build ### Creating initial user -A special user is needed to run the initial setup for hostname, user-creation, locale, etc. - -1. Create a user -2. Create the group vanilla-first-setup (Changing the gid is recommended to avoid messing with user groups) -3. Add the user to group vanilla-first-setup -4. Create the file `/var/lib/AccountsService/users/your_user` -```ini -[User] -Session=firstsetup -``` -5. Create the file `/etc/gdm3/daemon.conf` (replace your_user) -```ini -[daemon] -AutomaticLogin=your_user -AutomaticLoginEnable=True +A special user is needed to run the initial setup for hostname, user-creation, locale, etc. Configuration varies depending on your DE and DM. + +1. Run `systemd-sysusers` to create the first-setup user. +2. Run `systemd-tmpfiles --create` to create AccountService and GDM configuration. + ``` > [!WARNING] -> All users in this group will be deleted on the first reboot after a successful first setup. +> All users in `vanilla-first-setup` group will be deleted on the first reboot after a successful first setup. ### Running ```bash diff --git a/data/first-setup-bootutil b/data/first-setup-bootutil new file mode 100755 index 00000000..51500d67 --- /dev/null +++ b/data/first-setup-bootutil @@ -0,0 +1,30 @@ +#!/bin/bash + +set -euo pipefail + +if [ -e /etc/vanilla-first-setup/finalized ]; then + echo "first setup already finalized, nothing to do." + exit 0 +fi + +if ! id vanilla &>/dev/null; then + echo "first-setup user 'vanilla' does not exist, nothing to do." + exit 0 +fi + +install -d -m 0700 /var/lib/AccountsService/users +cat > /var/lib/AccountsService/users/vanilla < /etc/gdm3/daemon.conf </dev/null; then - echo "Deleting first-setup user: $USER" - userdel -r "$USER" - if ! [ "$?" == 0 ]; then - exit 1 - fi - rm "/var/lib/AccountsService/users/$USER" - else - echo "User $USER does not exist." - fi -done +set -uo pipefail + +rm -f /etc/gdm3/daemon.conf + +rm -f /var/lib/AccountsService/users/vanilla + +install -d -m 0755 /etc/vanilla-first-setup +touch /etc/vanilla-first-setup/finalized + +systemctl disable remove-first-setup-user.service -rm /etc/systemd/system/multi-user.target.wants/remove-first-setup-user.service exit 0 + diff --git a/data/remove-first-setup-user.service b/data/remove-first-setup-user.service index b13afcbf..9f843075 100644 --- a/data/remove-first-setup-user.service +++ b/data/remove-first-setup-user.service @@ -1,5 +1,8 @@ [Unit] Description=Remove the first-setup user from the system +Documentation=https://github.com/Vanilla-OS/first-setup +After=first-setup-bootutil.service +Before=display-manager.service [Service] ExecStart=/usr/libexec/remove-first-setup-user