Add Noctalia plugins config and disable defaults

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.
This commit is contained in:
2026-05-27 13:51:04 +02:00
parent 2c13658e89
commit 01e84a3561
5 changed files with 101 additions and 48 deletions
+13
View File
@@ -66,4 +66,17 @@ _: {
jellyfinClient.enable = true; # Jellyfin: My Jellyfin 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
};
} }
+13
View File
@@ -66,4 +66,17 @@ _: {
jellyfinClient.enable = true; # Jellyfin: My Jellyfin 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
};
} }
+31 -18
View File
@@ -4,23 +4,23 @@ _: {
*/ */
vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
zed-editor = { zed-editor = {
enable = true; # Zed Editor: a modern, highperformance code editor enable = false; # Zed Editor: a modern, highperformance code editor
remote-server.enable = true; # Remote Server: enable remote editing capabilities 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 ollama.enable = false; # Ollama: Local Llms
/* /*
Web browsers Web browsers
*/ */
librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork librewolf.enable = false; # Librewolf: a privacy-focused Firefox fork
ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork ungoogled-chromium.enable = false; # Ungoogled Chromium: a privacy-focused Chromium fork
/* /*
System utilities System utilities
*/ */
btop.enable = true; # Btop: a resource monitor for the terminal 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 cava.enable = false; # Cava: terminal audio visualizer
fastfetch.enable = true; # Fastfetch: a fast system information tool fastfetch.enable = true; # Fastfetch: a fast system information tool
@@ -28,8 +28,8 @@ _: {
Communication and synchronization Communication and synchronization
*/ */
kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server nextcloud-client.enable = false; # Nextcloud Client: sync files with a Nextcloud server
vesktop.enable = true; # Vesktop: a communitydriven Discord client vesktop.enable = false; # Vesktop: a communitydriven Discord client
/* /*
Gaming Gaming
@@ -44,26 +44,39 @@ _: {
/* /*
Office suite 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 Learning tools
*/ */
anki.enable = true; # Anki: spacedrepetition flashcard program anki.enable = false; # Anki: spacedrepetition flashcard program
/* /*
XDG desktop entries (PWA) XDG desktop entries (PWA)
*/ */
xdgDesktopEntries = { xdgDesktopEntries = {
enable = true; # Enable XDG desktop entries enable = false; # Enable XDG desktop entries
entries = { entries = {
messenger.enable = true; # Messenger: Facebook Messenger messenger.enable = false; # Messenger: Facebook Messenger
mastodon.enable = true; # Mastodon: a decentralized social network mastodon.enable = false; # Mastodon: a decentralized social network
garandcloud.enable = true; # GarandCloud: my Nextcloud instance garandcloud.enable = false; # GarandCloud: my Nextcloud instance
chatgpt.enable = true; # ChatGPT: a large language model chatgpt.enable = false; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model claude.enable = false; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard glance.enable = false; # Glance: my home server dashboard
jellyfinClient.enable = true; # Jellyfin: My Jellyfin 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
};
} }
+21 -21
View File
@@ -2,14 +2,14 @@ _: {
/* /*
Container & Packaging Container & Packaging
*/ */
docker.enable = true; # Docker: container runtime and management docker.enable = false; # Docker: container runtime and management
virtualbox.enable = false; # VirtualBox: PC emulator virtualbox.enable = false; # VirtualBox: PC emulator
flatpak = { flatpak = {
enable = true; # Flatpak: universal packaging system for Linux enable = false; # Flatpak: universal packaging system for Linux
packages = { packages = {
sober.enable = false; # Roblox client sober.enable = false; # Roblox client
warehouse.enable = true; # Flatpak manager warehouse.enable = false; # Flatpak manager
flatseal.enable = true; # Flatpak permissions manager flatseal.enable = false; # Flatpak permissions manager
upscaler.enable = false; # Upscaler: Upscale and enhance images upscaler.enable = false; # Upscaler: Upscale and enhance images
}; };
}; };
@@ -22,14 +22,14 @@ _: {
/* /*
Calendar & Contacts Calendar & Contacts
*/ */
calendar.enable = true; # GNOME Calendar: calendar and contacts application calendar.enable = false; # GNOME Calendar: calendar and contacts application
/* /*
Gaming Gaming
*/ */
gamemode.enable = true; # GameMode: optimizes system performance for gaming gamemode.enable = false; # GameMode: optimizes system performance for gaming
gamescope.enable = false; # Gamescope: microcompositor for games gamescope.enable = false; # Gamescope: microcompositor for games
steam.enable = true; # Steam: platform for buying and playing games steam.enable = false; # Steam: platform for buying and playing games
/* /*
Media & Graphics Media & Graphics
@@ -59,26 +59,26 @@ _: {
Gaming Gaming
*/ */
prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game spaceCadetPinball.enable = false; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = true; # TTY Solitaire: terminalbased solitaire game ttySolitaire.enable = false; # TTY Solitaire: terminalbased solitaire game
heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
/* /*
Development Tools Development Tools
*/ */
exercism.enable = true; # Exercism: coding practice platform exercism.enable = false; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git 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 logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
/* /*
Communication & Collaboration Communication & Collaboration
*/ */
mattermost.enable = true; # Mattermost: opensource Slack alternative mattermost.enable = false; # Mattermost: opensource Slack alternative
slack.enable = false; # Slack: team communication and collaboration tool slack.enable = false; # Slack: team communication and collaboration tool
tutanota.enable = true; # Tutanota: secure email client tutanota.enable = false; # Tutanota: secure email client
signal.enable = true; # Signal: secure messaging app signal.enable = false; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux 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 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 notify.enable = false; # notify-client: Ntfy client application to receive everyday's notifications
appImages.fluxer.enable = false; # Fluxer: Discord alternative appImages.fluxer.enable = false; # Fluxer: Discord alternative
@@ -87,27 +87,27 @@ _: {
Productivity / Knowledge Management Productivity / Knowledge Management
*/ */
bitwarden.enable = false; # Bitwarden: password manager (desktop) 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 logseq.enable = false; # Logseq: knowledge base and outliner
/* /*
Media & Graphics 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 switcheroo.enable = false; # Switcheroo: file conversion tool
freetube.enable = false; # FreeTube: privacyfriendly YouTube client freetube.enable = false; # FreeTube: privacyfriendly YouTube client
gimp.enable = false; # GIMP: GNU Image Manipulation Program gimp.enable = false; # GIMP: GNU Image Manipulation Program
kdenlive.enable = false; # Kdenlive: video editing software kdenlive.enable = false; # Kdenlive: video editing software
pixieditor.enable = false; # Pixieditor: Universal editor for all your 2D needs pixieditor.enable = false; # Pixieditor: Universal editor for all your 2D needs
plex.enable = true; # Plex: media player and server client plex.enable = false; # Plex: media player and server client
jellyfin.enable = true; # Jellyfin: foss media player jellyfin.enable = false; # Jellyfin: foss media player
appImages.losslesscut.enable = false; # Losslesscut: Swiss army knife of lossless video/audio editing appImages.losslesscut.enable = false; # Losslesscut: Swiss army knife of lossless video/audio editing
/* /*
Utilities / Misc Utilities / Misc
*/ */
eddieAirVPN.enable = true; # Eddie AirVPN: VPN client eddieAirVPN.enable = false; # Eddie AirVPN: VPN client
gnomeCalculator.enable = true; # gnomeCalculator: simple calculator gnomeCalculator.enable = false; # gnomeCalculator: simple calculator
gedit.enable = false; # Gedit: GNOME text editor gedit.enable = false; # Gedit: GNOME text editor
winboat.enable = false; # Winboat: Windows remote desktop via RDP winboat.enable = false; # Winboat: Windows remote desktop via RDP
adb.enable = false; # ADB: Android SDK platform tools adb.enable = false; # ADB: Android SDK platform tools
+23 -9
View File
@@ -1,7 +1,21 @@
{lib, ...}: let {
lib,
config,
...
}: let
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins"; sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
in { 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 = { plugins = {
sources = [ sources = [
{ {
@@ -11,31 +25,31 @@ in {
} }
]; ];
states = { states = {
mini-docker = { mini-docker = lib.mkIf config.nooctalia-plugins.mini-docker.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
timer = { timer = lib.mkIf config.nooctalia-plugins.timer.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
keybind-cheatsheet = { keybind-cheatsheet = lib.mkIf config.nooctalia-plugins.keybind-cheatsheet.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
kde-connect = { kde-connect = lib.mkIf config.nooctalia-plugins.kde-connect.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
screen-recorder = { screen-recorder = lib.mkIf config.nooctalia-plugins.screen-recorder.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
screenshot = { screenshot = lib.mkIf config.nooctalia-plugins.screenshot.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
ntfy-notifications = { ntfy-notifications = lib.mkIf config.nooctalia-plugins.ntfy-notifications.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };