2020-04-24 23:36:52 +00:00
|
|
|
# GNOME Initial Setup.
|
|
|
|
|
|
|
|
{ config, pkgs, 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
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
meta = {
|
2024-05-15 15:35:15 +00:00
|
|
|
maintainers = lib.teams.gnome.members;
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
###### interface
|
|
|
|
|
|
|
|
options = {
|
|
|
|
|
2021-05-20 23:08:51 +00:00
|
|
|
services.gnome.gnome-initial-setup = {
|
2020-04-24 23:36:52 +00:00
|
|
|
|
2024-05-15 15:35:15 +00:00
|
|
|
enable = lib.mkEnableOption "GNOME Initial Setup, a Simple, easy, and safe way to prepare a new system";
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
###### implementation
|
|
|
|
|
2024-05-15 15:35:15 +00:00
|
|
|
config = lib.mkIf config.services.gnome.gnome-initial-setup.enable {
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
environment.systemPackages = [
|
2021-05-20 23:08:51 +00:00
|
|
|
pkgs.gnome.gnome-initial-setup
|
2020-04-24 23:36:52 +00:00
|
|
|
]
|
2024-05-15 15:35:15 +00:00
|
|
|
++ lib.optional (lib.versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart
|
2020-04-24 23:36:52 +00:00
|
|
|
;
|
|
|
|
|
|
|
|
systemd.packages = [
|
2021-05-20 23:08:51 +00:00
|
|
|
pkgs.gnome.gnome-initial-setup
|
2020-04-24 23:36:52 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
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"
|
|
|
|
];
|
|
|
|
|
2024-01-02 11:29:13 +00:00
|
|
|
programs.dconf.profiles.gnome-initial-setup.databases = [
|
|
|
|
"${pkgs.gnome.gnome-initial-setup}/share/gnome-initial-setup/initial-setup-dconf-defaults"
|
|
|
|
];
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|