From 01e84a35619e71917440b21cd8af5887756afb8f Mon Sep 17 00:00:00 2001 From: GarandPLG Date: Wed, 27 May 2026 13:51:04 +0200 Subject: [PATCH] Add Noctalia plugins config and disable defaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce `nooctalia-plugins` options to control nightly‑shell plugins and make their activation conditional. Update host home‑modules to enable a subset of plugins (keybind‑cheatsheet, kde‑connect, screenshot, ntfy) on desktop and laptop configurations. Disable numerous default applications and system services (e.g., Zed, browsers, Docker, Flatpak, calendar, GameMode, Steam, media tools, communication apps) in the default host configuration. --- hosts/Garand-Desktop/home-modules.nix | 13 +++++++ hosts/Garand-Laptop/home-modules.nix | 13 +++++++ hosts/default/home-modules.nix | 49 +++++++++++++++++---------- hosts/default/system-modules.nix | 42 +++++++++++------------ modules/home/noctalia/plugins.nix | 32 ++++++++++++----- 5 files changed, 101 insertions(+), 48 deletions(-) diff --git a/hosts/Garand-Desktop/home-modules.nix b/hosts/Garand-Desktop/home-modules.nix index e7d08dc..ca687e9 100644 --- a/hosts/Garand-Desktop/home-modules.nix +++ b/hosts/Garand-Desktop/home-modules.nix @@ -66,4 +66,17 @@ _: { jellyfinClient.enable = true; # Jellyfin: My Jellyfin }; }; + + /* + Noctalia-shell plugins + */ + nooctalia-plugins = { + mini-docker.enable = false; # Mini Docker: Manage Docker containers, images, volumes & networks + timer.enable = false; # Timer: A timer and stopwatch plugin for the bar & control center. + keybind-cheatsheet.enable = true; # Keybind Cheatsheet: Universal keyboard shortcuts keymap that automatically detects and displays keybindings for Hyprland, Niri, or MangoWC compositors. + kde-connect.enable = true; # KDE Connect: A Plugin integrating your mobile devices into a panel using KDEConnect + screen-recorder.enable = true; # Screen Recorder: Hardware-accelerated screen recording using gpu-screen-recorder with customizable video and audio settings + screenshot.enable = true; # Screenshot: Quick screenshot button in bar for Hyprland, Sway, and Niri + ntfy-notifications.enable = true; # ntfy Notifications: Subscribe to ntfy topics and receive push notifications directly in your bar, with full theming support + }; } diff --git a/hosts/Garand-Laptop/home-modules.nix b/hosts/Garand-Laptop/home-modules.nix index 3179c77..5e78c08 100644 --- a/hosts/Garand-Laptop/home-modules.nix +++ b/hosts/Garand-Laptop/home-modules.nix @@ -66,4 +66,17 @@ _: { jellyfinClient.enable = true; # Jellyfin: My Jellyfin }; }; + + /* + Noctalia-shell plugins + */ + nooctalia-plugins = { + mini-docker.enable = false; # Mini Docker: Manage Docker containers, images, volumes & networks + timer.enable = false; # Timer: A timer and stopwatch plugin for the bar & control center. + keybind-cheatsheet.enable = true; # Keybind Cheatsheet: Universal keyboard shortcuts keymap that automatically detects and displays keybindings for Hyprland, Niri, or MangoWC compositors. + kde-connect.enable = true; # KDE Connect: A Plugin integrating your mobile devices into a panel using KDEConnect + screen-recorder.enable = false; # Screen Recorder: Hardware-accelerated screen recording using gpu-screen-recorder with customizable video and audio settings + screenshot.enable = true; # Screenshot: Quick screenshot button in bar for Hyprland, Sway, and Niri + ntfy-notifications.enable = true; # ntfy Notifications: Subscribe to ntfy topics and receive push notifications directly in your bar, with full theming support + }; } diff --git a/hosts/default/home-modules.nix b/hosts/default/home-modules.nix index 35eb074..6b9904b 100644 --- a/hosts/default/home-modules.nix +++ b/hosts/default/home-modules.nix @@ -4,23 +4,23 @@ _: { */ vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode zed-editor = { - enable = true; # Zed Editor: a modern, high‑performance code editor - remote-server.enable = true; # Remote Server: enable remote editing capabilities + enable = false; # Zed Editor: a modern, high‑performance code editor + remote-server.enable = false; # Remote Server: enable remote editing capabilities }; - opencode.enable = true; # OpenCode: terminal coding agent + opencode.enable = false; # OpenCode: terminal coding agent ollama.enable = false; # Ollama: Local Llms /* Web browsers */ - librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork - ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork + librewolf.enable = false; # Librewolf: a privacy-focused Firefox fork + ungoogled-chromium.enable = false; # Ungoogled Chromium: a privacy-focused Chromium fork /* System utilities */ btop.enable = true; # Btop: a resource monitor for the terminal - easyeffects.enable = true; # EasyEffects: Audio effects for PipeWire applications + easyeffects.enable = false; # EasyEffects: Audio effects for PipeWire applications cava.enable = false; # Cava: terminal audio visualizer fastfetch.enable = true; # Fastfetch: a fast system information tool @@ -28,8 +28,8 @@ _: { Communication and synchronization */ kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop - nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server - vesktop.enable = true; # Vesktop: a community‑driven Discord client + nextcloud-client.enable = false; # Nextcloud Client: sync files with a Nextcloud server + vesktop.enable = false; # Vesktop: a community‑driven Discord client /* Gaming @@ -44,26 +44,39 @@ _: { /* Office suite */ - onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats + onlyoffice.enable = false; # OnlyOffice: an office suite compatible with Microsoft formats /* Learning tools */ - anki.enable = true; # Anki: spaced‑repetition flashcard program + anki.enable = false; # Anki: spaced‑repetition flashcard program /* XDG desktop entries (PWA) */ xdgDesktopEntries = { - enable = true; # Enable XDG desktop entries + enable = false; # Enable XDG desktop entries entries = { - messenger.enable = true; # Messenger: Facebook Messenger - mastodon.enable = true; # Mastodon: a decentralized social network - garandcloud.enable = true; # GarandCloud: my Nextcloud instance - chatgpt.enable = true; # ChatGPT: a large language model - claude.enable = true; # Claude: a large language model - glance.enable = true; # Glance: my home server dashboard - jellyfinClient.enable = true; # Jellyfin: My Jellyfin + messenger.enable = false; # Messenger: Facebook Messenger + mastodon.enable = false; # Mastodon: a decentralized social network + garandcloud.enable = false; # GarandCloud: my Nextcloud instance + chatgpt.enable = false; # ChatGPT: a large language model + claude.enable = false; # Claude: a large language model + glance.enable = false; # Glance: my home server dashboard + jellyfinClient.enable = false; # Jellyfin: My Jellyfin }; }; + + /* + Noctalia-shell plugins + */ + nooctalia-plugins = { + mini-docker.enable = false; # Mini Docker: Manage Docker containers, images, volumes & networks + timer.enable = false; # Timer: A timer and stopwatch plugin for the bar & control center. + keybind-cheatsheet.enable = false; # Keybind Cheatsheet: Universal keyboard shortcuts keymap that automatically detects and displays keybindings for Hyprland, Niri, or MangoWC compositors. + kde-connect.enable = false; # KDE Connect: A Plugin integrating your mobile devices into a panel using KDEConnect + screen-recorder.enable = false; # Screen Recorder: Hardware-accelerated screen recording using gpu-screen-recorder with customizable video and audio settings + screenshot.enable = false; # Screenshot: Quick screenshot button in bar for Hyprland, Sway, and Niri + ntfy-notifications.enable = false; # ntfy Notifications: Subscribe to ntfy topics and receive push notifications directly in your bar, with full theming support + }; } diff --git a/hosts/default/system-modules.nix b/hosts/default/system-modules.nix index 5e5881b..4fb353d 100644 --- a/hosts/default/system-modules.nix +++ b/hosts/default/system-modules.nix @@ -2,14 +2,14 @@ _: { /* Container & Packaging */ - docker.enable = true; # Docker: container runtime and management + docker.enable = false; # Docker: container runtime and management virtualbox.enable = false; # VirtualBox: PC emulator flatpak = { - enable = true; # Flatpak: universal packaging system for Linux + enable = false; # Flatpak: universal packaging system for Linux packages = { sober.enable = false; # Roblox client - warehouse.enable = true; # Flatpak manager - flatseal.enable = true; # Flatpak permissions manager + warehouse.enable = false; # Flatpak manager + flatseal.enable = false; # Flatpak permissions manager upscaler.enable = false; # Upscaler: Upscale and enhance images }; }; @@ -22,14 +22,14 @@ _: { /* Calendar & Contacts */ - calendar.enable = true; # GNOME Calendar: calendar and contacts application + calendar.enable = false; # GNOME Calendar: calendar and contacts application /* Gaming */ - gamemode.enable = true; # GameMode: optimizes system performance for gaming + gamemode.enable = false; # GameMode: optimizes system performance for gaming gamescope.enable = false; # Gamescope: micro‑compositor for games - steam.enable = true; # Steam: platform for buying and playing games + steam.enable = false; # Steam: platform for buying and playing games /* Media & Graphics @@ -59,26 +59,26 @@ _: { Gaming */ prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher - spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game - ttySolitaire.enable = true; # TTY Solitaire: terminal‑based solitaire game + spaceCadetPinball.enable = false; # SpaceCadet Pinball: classic pinball game + ttySolitaire.enable = false; # TTY Solitaire: terminal‑based solitaire game heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac /* Development Tools */ - exercism.enable = true; # Exercism: coding practice platform + exercism.enable = false; # Exercism: coding practice platform lazygit.enable = false; # Lazygit: simple TUI for Git - jan.enable = true; # Jan: AI chat UI + jan.enable = false; # Jan: AI chat UI logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator /* Communication & Collaboration */ - mattermost.enable = true; # Mattermost: open‑source Slack alternative + mattermost.enable = false; # Mattermost: open‑source Slack alternative slack.enable = false; # Slack: team communication and collaboration tool - tutanota.enable = true; # Tutanota: secure email client - signal.enable = true; # Signal: secure messaging app - teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux + tutanota.enable = false; # Tutanota: secure email client + signal.enable = false; # Signal: secure messaging app + teams.enable = false; # Teams-for-linux: Unofficial Microsoft Teams client for Linux ferdium.enable = false; # Ferdium: All your services in one place built by the community notify.enable = false; # notify-client: Ntfy client application to receive everyday's notifications appImages.fluxer.enable = false; # Fluxer: Discord alternative @@ -87,27 +87,27 @@ _: { Productivity / Knowledge Management */ bitwarden.enable = false; # Bitwarden: password manager (desktop) - iotas.enable = true; # Iotas: lightweight notes manager + iotas.enable = false; # Iotas: lightweight notes manager logseq.enable = false; # Logseq: knowledge base and outliner /* Media & Graphics */ - eyeOfGnome.enable = true; # Eye of GNOME: image viewer + eyeOfGnome.enable = false; # Eye of GNOME: image viewer switcheroo.enable = false; # Switcheroo: file conversion tool freetube.enable = false; # FreeTube: privacy‑friendly YouTube client gimp.enable = false; # GIMP: GNU Image Manipulation Program kdenlive.enable = false; # Kdenlive: video editing software pixieditor.enable = false; # Pixieditor: Universal editor for all your 2D needs - plex.enable = true; # Plex: media player and server client - jellyfin.enable = true; # Jellyfin: foss media player + plex.enable = false; # Plex: media player and server client + jellyfin.enable = false; # Jellyfin: foss media player appImages.losslesscut.enable = false; # Losslesscut: Swiss army knife of lossless video/audio editing /* Utilities / Misc */ - eddieAirVPN.enable = true; # Eddie AirVPN: VPN client - gnomeCalculator.enable = true; # gnomeCalculator: simple calculator + eddieAirVPN.enable = false; # Eddie AirVPN: VPN client + gnomeCalculator.enable = false; # gnomeCalculator: simple calculator gedit.enable = false; # Gedit: GNOME text editor winboat.enable = false; # Winboat: Windows remote desktop via RDP adb.enable = false; # ADB: Android SDK platform tools diff --git a/modules/home/noctalia/plugins.nix b/modules/home/noctalia/plugins.nix index 15b94ff..359d065 100644 --- a/modules/home/noctalia/plugins.nix +++ b/modules/home/noctalia/plugins.nix @@ -1,7 +1,21 @@ -{lib, ...}: let +{ + lib, + config, + ... +}: let sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins"; in { - programs.noctalia-shell = lib.mkForce { + options.nooctalia-plugins = { + mini-docker.enable = lib.mkEnableOption "Mini docker plugin"; + timer.enable = lib.mkEnableOption "Timer plugin"; + keybind-cheatsheet.enable = lib.mkEnableOption "Keybind cheatsheet plugin"; + kde-connect.enable = lib.mkEnableOption "KDE Connect plugin"; + screen-recorder.enable = lib.mkEnableOption "Screen-recorder plugin"; + screenshot.enable = lib.mkEnableOption "Screenshot plugin"; + ntfy-notifications.enable = lib.mkEnableOption "ntfy notifications plugin"; + }; + + config.programs.noctalia-shell = lib.mkForce { plugins = { sources = [ { @@ -11,31 +25,31 @@ in { } ]; states = { - mini-docker = { + mini-docker = lib.mkIf config.nooctalia-plugins.mini-docker.enable { enabled = true; sourceUrl = sourceUrl; }; - timer = { + timer = lib.mkIf config.nooctalia-plugins.timer.enable { enabled = true; sourceUrl = sourceUrl; }; - keybind-cheatsheet = { + keybind-cheatsheet = lib.mkIf config.nooctalia-plugins.keybind-cheatsheet.enable { enabled = true; sourceUrl = sourceUrl; }; - kde-connect = { + kde-connect = lib.mkIf config.nooctalia-plugins.kde-connect.enable { enabled = true; sourceUrl = sourceUrl; }; - screen-recorder = { + screen-recorder = lib.mkIf config.nooctalia-plugins.screen-recorder.enable { enabled = true; sourceUrl = sourceUrl; }; - screenshot = { + screenshot = lib.mkIf config.nooctalia-plugins.screenshot.enable { enabled = true; sourceUrl = sourceUrl; }; - ntfy-notifications = { + ntfy-notifications = lib.mkIf config.nooctalia-plugins.ntfy-notifications.enable { enabled = true; sourceUrl = sourceUrl; };