nixos/gnome-initial-setup: prevent run on existing systems

GNOME initial setup's run is conditioned on whether
the gnome-initial-setup-done file exists in XDG_CONFIG_HOME
Because of this, every existing user will have initial setup
running because they never ran it before.

To prevent this we create the file if the users stateVersion
is older than 20.03 (the release we added this module).

Also drop uneeded manual conflicts as systemd.packages
does handle this.
This commit is contained in:
worldofpeace 2019-09-19 23:09:02 -04:00 committed by Jan Tojnar
parent f462b376bb
commit 38147b9215
No known key found for this signature in database
GPG key ID: 7FAB2A15F7A607A4

View file

@ -4,6 +4,44 @@
with lib;
let
# GNOME initial setup's run is conditioned on whether
# the gnome-initial-setup-done file exists in XDG_CONFIG_HOME
# Because of this, every existing user will have initial setup
# running because they never ran it before.
#
# To prevent this we create the file if the users stateVersion
# is older than 20.03 (the release we added this module).
script = pkgs.writeScript "create-gis-stamp-files" ''
#!${pkgs.runtimeShell}
setup_done=$HOME/.config/gnome-initial-setup-done
echo "Creating g-i-s stamp file $setup_done ..."
cat - > $setup_done <<- EOF
yes
EOF
'';
createGisStampFilesAutostart = pkgs.writeTextFile rec {
name = "create-g-i-s-stamp-files";
destination = "/etc/xdg/autostart/${name}.desktop";
text = ''
[Desktop Entry]
Type=Application
Name=Create GNOME Initial Setup stamp files
Exec=${script}
StartupNotify=false
NoDisplay=true
OnlyShowIn=GNOME;
AutostartCondition=unless-exists gnome-initial-setup-done
X-GNOME-Autostart-Phase=EarlyInitialization
'';
};
in
{
###### interface
@ -25,7 +63,9 @@ with lib;
environment.systemPackages = [
pkgs.gnome3.gnome-initial-setup
];
]
++ optional (versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart
;
systemd.packages = [
pkgs.gnome3.gnome-initial-setup
@ -41,16 +81,6 @@ with lib;
"gnome-initial-setup.service"
];
# Setup conflicts
systemd.user.services."gnome-initial-setup-copy-worker".conflicts = [
"gnome-session@gnome-login.target"
];
systemd.user.services."gnome-initial-setup-first-login".conflicts = [
"gnome-session@gnome-login.target"
"gnome-session@gnome-initial-setup.target"
];
};
}