summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@protonmail.ch>2019-09-19 23:09:02 -0400
committerJan Tojnar <jtojnar@gmail.com>2019-10-03 00:09:12 +0200
commit38147b92153c50d4f229a0b734ddd0a3284f86b1 (patch)
treeec26bcb40bd3c8351389eb8becf27ae7225f5e27 /nixos
parentf462b376bb9ee469067e4a30c0ee52ad1ef155d5 (diff)
downloadnixpkgs-38147b92153c50d4f229a0b734ddd0a3284f86b1.tar
nixpkgs-38147b92153c50d4f229a0b734ddd0a3284f86b1.tar.gz
nixpkgs-38147b92153c50d4f229a0b734ddd0a3284f86b1.tar.bz2
nixpkgs-38147b92153c50d4f229a0b734ddd0a3284f86b1.tar.lz
nixpkgs-38147b92153c50d4f229a0b734ddd0a3284f86b1.tar.xz
nixpkgs-38147b92153c50d4f229a0b734ddd0a3284f86b1.tar.zst
nixpkgs-38147b92153c50d4f229a0b734ddd0a3284f86b1.zip
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.
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix52
1 files 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"
-    ];
-
   };
 
 }