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
};
};
/*
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
};
};
/*
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
zed-editor = {
enable = true; # Zed Editor: a modern, highperformance code editor
remote-server.enable = true; # Remote Server: enable remote editing capabilities
enable = false; # Zed Editor: a modern, highperformance 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 communitydriven Discord client
nextcloud-client.enable = false; # Nextcloud Client: sync files with a Nextcloud server
vesktop.enable = false; # Vesktop: a communitydriven 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: spacedrepetition flashcard program
anki.enable = false; # Anki: spacedrepetition 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
};
}
+21 -21
View File
@@ -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: 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
@@ -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: terminalbased solitaire game
spaceCadetPinball.enable = false; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = false; # TTY Solitaire: terminalbased 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: opensource Slack alternative
mattermost.enable = false; # Mattermost: opensource 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: privacyfriendly 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
+23 -9
View File
@@ -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;
};