From 38147b92153c50d4f229a0b734ddd0a3284f86b1 Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Thu, 19 Sep 2019 23:09:02 -0400 Subject: [PATCH] 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. --- .../desktops/gnome3/gnome-initial-setup.nix | 52 +++++++++++++++---- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix b/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix index d50624a3457..d715d52c2d0 100644 --- a/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix +++ b/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix @@ -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" - ]; - }; }