nixpkgs/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix
worldofpeace 38147b9215
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.
2019-10-03 00:09:12 +02:00

86 lines
2 KiB
Nix

# GNOME Initial Setup.
{ config, pkgs, 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
options = {
services.gnome3.gnome-initial-setup = {
enable = mkEnableOption "GNOME Initial Setup, a Simple, easy, and safe way to prepare a new system";
};
};
###### implementation
config = mkIf config.services.gnome3.gnome-initial-setup.enable {
environment.systemPackages = [
pkgs.gnome3.gnome-initial-setup
]
++ optional (versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart
;
systemd.packages = [
pkgs.gnome3.gnome-initial-setup
];
systemd.user.targets."gnome-session".wants = [
"gnome-initial-setup-copy-worker.service"
"gnome-initial-setup-first-login.service"
"gnome-welcome-tour.service"
];
systemd.user.targets."gnome-session@gnome-initial-setup".wants = [
"gnome-initial-setup.service"
];
};
}