at 23.11-beta 2.3 kB view raw
1# GNOME Initial Setup. 2 3{ config, pkgs, lib, ... }: 4 5with lib; 6 7let 8 9 # GNOME initial setup's run is conditioned on whether 10 # the gnome-initial-setup-done file exists in XDG_CONFIG_HOME 11 # Because of this, every existing user will have initial setup 12 # running because they never ran it before. 13 # 14 # To prevent this we create the file if the users stateVersion 15 # is older than 20.03 (the release we added this module). 16 17 script = pkgs.writeScript "create-gis-stamp-files" '' 18 #!${pkgs.runtimeShell} 19 setup_done=$HOME/.config/gnome-initial-setup-done 20 21 echo "Creating g-i-s stamp file $setup_done ..." 22 cat - > $setup_done <<- EOF 23 yes 24 EOF 25 ''; 26 27 createGisStampFilesAutostart = pkgs.writeTextFile rec { 28 name = "create-g-i-s-stamp-files"; 29 destination = "/etc/xdg/autostart/${name}.desktop"; 30 text = '' 31 [Desktop Entry] 32 Type=Application 33 Name=Create GNOME Initial Setup stamp files 34 Exec=${script} 35 StartupNotify=false 36 NoDisplay=true 37 OnlyShowIn=GNOME; 38 AutostartCondition=unless-exists gnome-initial-setup-done 39 X-GNOME-Autostart-Phase=EarlyInitialization 40 ''; 41 }; 42 43in 44 45{ 46 47 meta = { 48 maintainers = teams.gnome.members; 49 }; 50 51 # Added 2021-05-07 52 imports = [ 53 (mkRenamedOptionModule 54 [ "services" "gnome3" "gnome-initial-setup" "enable" ] 55 [ "services" "gnome" "gnome-initial-setup" "enable" ] 56 ) 57 ]; 58 59 ###### interface 60 61 options = { 62 63 services.gnome.gnome-initial-setup = { 64 65 enable = mkEnableOption (lib.mdDoc "GNOME Initial Setup, a Simple, easy, and safe way to prepare a new system"); 66 67 }; 68 69 }; 70 71 72 ###### implementation 73 74 config = mkIf config.services.gnome.gnome-initial-setup.enable { 75 76 environment.systemPackages = [ 77 pkgs.gnome.gnome-initial-setup 78 ] 79 ++ optional (versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart 80 ; 81 82 systemd.packages = [ 83 pkgs.gnome.gnome-initial-setup 84 ]; 85 86 systemd.user.targets."gnome-session".wants = [ 87 "gnome-initial-setup-copy-worker.service" 88 "gnome-initial-setup-first-login.service" 89 "gnome-welcome-tour.service" 90 ]; 91 92 systemd.user.targets."gnome-session@gnome-initial-setup".wants = [ 93 "gnome-initial-setup.service" 94 ]; 95 96 }; 97 98}