mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-16 14:54:29 +01:00
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:
parent
f462b376bb
commit
38147b9215
1 changed files with 41 additions and 11 deletions
|
@ -4,6 +4,44 @@
|
||||||
|
|
||||||
with lib;
|
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
|
###### interface
|
||||||
|
@ -25,7 +63,9 @@ with lib;
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.gnome3.gnome-initial-setup
|
pkgs.gnome3.gnome-initial-setup
|
||||||
];
|
]
|
||||||
|
++ optional (versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart
|
||||||
|
;
|
||||||
|
|
||||||
systemd.packages = [
|
systemd.packages = [
|
||||||
pkgs.gnome3.gnome-initial-setup
|
pkgs.gnome3.gnome-initial-setup
|
||||||
|
@ -41,16 +81,6 @@ with lib;
|
||||||
"gnome-initial-setup.service"
|
"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"
|
|
||||||
];
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue