From c24571128be4101a7779aa50a7c9378106cd0792 Mon Sep 17 00:00:00 2001 From: randogoth Date: Tue, 3 Feb 2026 17:58:54 +0200 Subject: [PATCH] Set Logo Menu defaults and finalize flatpak setup --- hosts/nanuqsaurus.nix | 1 + modules/desktop/gnome-minimal.nix | 41 +++++- .../patches/logo-menu-custom-menu.patch | 132 ++++++++++++++++++ modules/system/flatpak.nix | 1 + modules/system/packages.nix | 13 ++ scripts/hm-bootstrap.sh | 4 +- templates/home-home.nix | 2 +- 7 files changed, 189 insertions(+), 5 deletions(-) create mode 100644 modules/desktop/patches/logo-menu-custom-menu.patch diff --git a/hosts/nanuqsaurus.nix b/hosts/nanuqsaurus.nix index ae20bb1..6ac3b5e 100644 --- a/hosts/nanuqsaurus.nix +++ b/hosts/nanuqsaurus.nix @@ -5,6 +5,7 @@ inputs.lix-module.nixosModules.lixFromNixpkgs inputs.nix-index-database.nixosModules.nix-index inputs.nix-flatpak.nixosModules.nix-flatpak + ./nanuqsaurus-hardware.nix ../modules/system/flatpak.nix ../modules/system/base.nix ../modules/system/packages.nix diff --git a/modules/desktop/gnome-minimal.nix b/modules/desktop/gnome-minimal.nix index 25709b4..ae76963 100644 --- a/modules/desktop/gnome-minimal.nix +++ b/modules/desktop/gnome-minimal.nix @@ -1,12 +1,49 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: -{ +let + # Patched Logo Menu extension (same patch as installed system-wide). + logoMenuExtension = pkgs.gnomeExtensions.logo-menu.overrideAttrs (old: { + patches = (old.patches or []) ++ [ ./patches/logo-menu-custom-menu.patch ]; + }); + + # Expose the extension schema in the layout expected by gsettings overrides. + logoMenuSchemas = pkgs.runCommand "logo-menu-gsettings-schemas" { } '' + schemaSrc="${logoMenuExtension}/share/gnome-shell/extensions/logomenu@aryan_k/schemas"; + dest=$out/share/gsettings-schemas/logo-menu-gsettings-schemas/glib-2.0/schemas + mkdir -p "$dest" + cp -a "$schemaSrc"/*.xml "$dest"/ + ''; +in { services.displayManager.gdm.enable = true; services.desktopManager.gnome.enable = true; + services.desktopManager.gnome.extraGSettingsOverridePackages = [ + pkgs.gnome-shell + logoMenuSchemas + ]; + + # Ensure GNOME sees the compiled overrides. + environment.profileRelativeEnvVars.XDG_DATA_DIRS = lib.mkAfter [ + "/share/gsettings-schemas/nixos-gsettings-overrides" + ]; services.gnome.core-developer-tools.enable = false; services.gnome.games.enable = false; + # System default GNOME Shell extensions (user can still toggle/override). + services.desktopManager.gnome.extraGSettingsOverrides = '' + [org/gnome/shell] + disable-user-extensions=false + enabled-extensions=['all-in-one-clipboard@NiffirgkcaJ.github.com','AlphabeticalAppGrid@stuarthayhurst','app-hider@lynith.dev','apps@github.com.howbea','blur-my-shell@aunetx','caffeine@patapon.info','logomenu@aryan_k','places-menu@gnome-shell-extensions.gcampax.github.com','restartto@tiagoporsch.github.io'] + favorite-apps=['firefox.desktop','org.gnome.Settings.desktop','org.gnome.Ptyxis.desktop','com.mattjakeman.ExtensionManager.desktop'] + + [org/gnome/shell/extensions/logo-menu] + menu-button-icon-image=51 + menu-button-terminal='ghostty' + menu-button-system-monitor='flatpak run io.missioncenter.MissionCenter' + menu-button-extensions-app='com.mattjakeman.ExtensionManager.desktop' + hide-softwarecentre=true + ''; + environment.gnome.excludePackages = with pkgs; [ # comment out to include gnome-tour diff --git a/modules/desktop/patches/logo-menu-custom-menu.patch b/modules/desktop/patches/logo-menu-custom-menu.patch new file mode 100644 index 0000000..99e62f0 --- /dev/null +++ b/modules/desktop/patches/logo-menu-custom-menu.patch @@ -0,0 +1,132 @@ +diff -ru orig/extension.js mod/extension.js +--- orig/extension.js 2026-02-03 17:53:49.513281802 +0200 ++++ mod/extension.js 2026-02-03 17:53:49.528021029 +0200 +@@ -47,13 +47,8 @@ + this.setIconSize(); + this.add_child(this.icon); + +- // Menu +- this._settings.connectObject('changed::hide-softwarecentre', () => this._displayMenuItems(), this); +- this._settings.connectObject('changed::show-power-options', () => this._displayMenuItems(), this); +- this._settings.connectObject('changed::hide-forcequit', () => this._displayMenuItems(), this); +- this._settings.connectObject('changed::show-lockscreen', () => this._displayMenuItems(), this); +- this._settings.connectObject('changed::show-activities-button', () => this._displayMenuItems(), this); +- this._displayMenuItems(); ++ // Menu (custom layout) ++ this._displayMenuItems(); + + // bind middle click option to toggle overview + this.connect('button-press-event', this._buttonPressEvent.bind(this)); +@@ -64,51 +59,19 @@ + } + + _displayMenuItems() { +- const showPowerOptions = this._settings.get_boolean('show-power-options'); +- const showForceQuit = !this._settings.get_boolean('hide-forcequit'); +- const showLockScreen = this._settings.get_boolean('show-lockscreen'); +- const showSoftwareCenter = !this._settings.get_boolean('hide-softwarecentre'); +- const showActivitiesButton = this._settings.get_boolean('show-activities-button'); +- +- this.menu.removeAll(); +- +- this._addItem(new MenuItem(_('About My System'), () => this._aboutThisDistro())); +- // this._addItem(new MenuItem(_('System Settings...'), () => this._systemPreferences())); +- this._addItem(new PopupMenu.PopupSeparatorMenuItem()); +- +- if (!showActivitiesButton) +- this._addItem(new MenuItem(_('Activities'), () => this._overviewToggle())); +- +- this._addItem(new MenuItem(_('App Grid'), () => this._showAppGrid())); +- this._addItem(new PopupMenu.PopupSeparatorMenuItem()); +- +- if (showSoftwareCenter) +- this._addItem(new MenuItem(_('Software Center'), () => this._openSoftwareCenter())); +- +- this._addItem(new MenuItem(_('System Monitor'), () => this._openSystemMonitor())); +- this._addItem(new MenuItem(_('Terminal'), () => this._openTerminal())); +- this._addItem(new MenuItem(_('Extensions'), () => this._openExtensionsApp())); +- +- if (showForceQuit) { +- this._addItem(new PopupMenu.PopupSeparatorMenuItem()); +- this._addItem(new MenuItem(_('Force Quit App'), () => this._forceQuit())); +- } +- +- if (showPowerOptions) { +- this._addItem(new PopupMenu.PopupSeparatorMenuItem()); +- this._addItem(new MenuItem(_('Sleep'), () => this._sleep())); +- this._addItem(new MenuItem(_('Restart...'), () => this._restart())); +- this._addItem(new MenuItem(_('Shut Down...'), () => this._shutdown())); +- this._addItem(new PopupMenu.PopupSeparatorMenuItem()); +- +- if (showLockScreen) +- this._addItem(new MenuItem(_('Lock Screen'), () => this._lockScreen())); +- +- this._addItem(new MenuItem(_('Log Out...'), () => this._logOut())); +- } else if (!showPowerOptions && showLockScreen) { +- this._addItem(new PopupMenu.PopupSeparatorMenuItem()); +- this._addItem(new MenuItem(_('Lock Screen'), () => this._lockScreen())); +- } ++ this.menu.removeAll(); ++ ++ // Custom menu layout ++ this._addItem(new MenuItem(_('About My System'), () => this._aboutThisDistro())); ++ this._addItem(new MenuItem(_('System Settings'), () => this._systemPreferences())); ++ ++ this._addItem(new PopupMenu.PopupSeparatorMenuItem()); ++ this._addItem(new MenuItem(_('Extensions'), () => this._openExtensionsApp())); ++ this._addItem(new MenuItem(_('System Monitor'), () => this._openSystemMonitor())); ++ this._addItem(new MenuItem(_('Terminal'), () => this._openTerminal())); ++ ++ this._addItem(new PopupMenu.PopupSeparatorMenuItem()); ++ this._addItem(new MenuItem(_('Containers'), () => this._openContainers())); + } + + _buttonPressEvent(actor, event) { +diff -ru orig/schemas/org.gnome.shell.extensions.logo-menu.gschema.xml mod/schemas/org.gnome.shell.extensions.logo-menu.gschema.xml +--- orig/schemas/org.gnome.shell.extensions.logo-menu.gschema.xml 2026-02-03 17:53:49.513219947 +0200 ++++ mod/schemas/org.gnome.shell.extensions.logo-menu.gschema.xml 2026-02-03 17:53:49.531021112 +0200 +@@ -4,7 +4,7 @@ + + + +- 0 ++ 51 + Menu Button Icon Image + Change the Menu Button Icon Image. + +@@ -22,7 +22,7 @@ + + + +- "org.gnome.Extensions.desktop" ++ "com.mattjakeman.ExtensionManager.desktop" + Preffered Extensions app + Change to preffered Extensions app. + +@@ -34,7 +34,7 @@ + + + +- "gnome-terminal" ++ "ghostty" + Menu Button Terminal + Change the Menu Button Terminal. + +@@ -70,7 +70,7 @@ + + + +- false ++ true + Toggle Software Centre option visibility + Toggle Software Centre option visibility. + +@@ -95,7 +95,7 @@ + + + +- "gnome-system-monitor" ++ "flatpak run io.missioncenter.MissionCenter" + Menu System Monitor + Change the Menu System Monitor. + diff --git a/modules/system/flatpak.nix b/modules/system/flatpak.nix index b337316..048e56a 100644 --- a/modules/system/flatpak.nix +++ b/modules/system/flatpak.nix @@ -20,6 +20,7 @@ packages = [ "com.github.tchx84.Flatseal" "io.github.kolunmi.Bazaar" + "io.missioncenter.MissionCenter" ]; }; } diff --git a/modules/system/packages.nix b/modules/system/packages.nix index ee92f71..a8fad44 100644 --- a/modules/system/packages.nix +++ b/modules/system/packages.nix @@ -9,6 +9,19 @@ pkgs.flatpak pkgs.ghostty pkgs.git + pkgs.gnome-browser-connector # lets users install extensions from GNOME Extensions website + pkgs.gnome-extension-manager # GUI to browse/install GNOME Shell extensions + pkgs.gnomeExtensions.all-in-one-clipboard + pkgs.gnomeExtensions.alphabetical-app-grid + pkgs.gnomeExtensions.app-hider + pkgs.gnomeExtensions.apps + pkgs.gnomeExtensions.blur-my-shell + pkgs.gnomeExtensions.caffeine + (pkgs.gnomeExtensions.logo-menu.overrideAttrs (old: { + patches = (old.patches or []) ++ [ ../desktop/patches/logo-menu-custom-menu.patch ]; + })) + pkgs.gnomeExtensions.places-status-indicator + pkgs.gnomeExtensions.restart-to pkgs.home-manager pkgs.just pkgs.libnotify diff --git a/scripts/hm-bootstrap.sh b/scripts/hm-bootstrap.sh index 0bd2f8f..b707234 100644 --- a/scripts/hm-bootstrap.sh +++ b/scripts/hm-bootstrap.sh @@ -61,8 +61,8 @@ notify() { fi } -notify "System setup running" "Please wait until setup completes." -trap 'notify "System setup finished" "You may continue using the system."' EXIT +notify "Reticulating Splines" "Bootstrapping. Please stay tuned." +trap 'notify "Bootstrap finished" "Your system is fully hydrated. It is recommended to logout and back in."' EXIT mkdir -p "$HOME/.config/home-manager" for f in flake.nix home.nix; do diff --git a/templates/home-home.nix b/templates/home-home.nix index ea1c147..623497a 100644 --- a/templates/home-home.nix +++ b/templates/home-home.nix @@ -18,7 +18,7 @@ packages = [ ]; update = { auto.enable = true; - auto.onCalendar = "weekly"; + auto.onCalendar = "daily"; onActivation = false; }; };