Implement modular Plasma taskbar pinning system

- Add modular pinning system using NixOS module options
- Each desktop module now defines its own pinned applications:
  * plasma.nix: konsole, dolphin, firefox, tigervnc
  * gaming.nix: steam, discord
  * office.nix: slack, signal, libreoffice-writer, libreoffice-calc
  * dev.nix: windsurf
  * media.nix: rustdesk
  * dnm.nix: tor-browser, kleopatra (moved from crypto.nix)
- Move Plasma config from user-specific to desktop module for consistency
- Rename crypto.nix to dnm.nix and update references
- All users with Plasma desktop get automatic taskbar pinning
- Applications only appear when their desktop modules are active
This commit is contained in:
Julian Sutter 2025-07-31 01:13:57 -07:00
parent 6a4fa7dcef
commit f6e63e555c
9 changed files with 124 additions and 64 deletions

View file

@ -1,11 +0,0 @@
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
feather
electrum
kdePackages.kleopatra
tor-browser
];
}

View file

@ -1,8 +1,12 @@
{ config, pkgs, pkgs-unstable, ... }: { config, pkgs, pkgs-unstable, lib, ... }:
{ {
# Add this module's pinned applications
desktop.plasma.pinnedApps = [
"applications:windsurf.desktop" # Windsurf IDE
];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
(python3.withPackages(ps: with ps; [ pandas requests python-dotenv pip uv ])) (python3.withPackages(ps: with ps; [ pandas requests python-dotenv pip uv ]))
nodejs nodejs
rpi-imager rpi-imager
@ -15,4 +19,6 @@ programs.nix-ld.enable = true;
# Android Development # Android Development
programs.adb.enable = true; programs.adb.enable = true;
} }

16
desktop/dnm.nix Normal file
View file

@ -0,0 +1,16 @@
{ config, pkgs, lib, ... }:
{
# Add this module's pinned applications
desktop.plasma.pinnedApps = [
"applications:tor-browser.desktop" # Tor browser
"applications:org.kde.kleopatra.desktop" # Kleopatra GPG
];
environment.systemPackages = with pkgs; [
feather
electrum
kdePackages.kleopatra
tor-browser
];
}

View file

@ -1,8 +1,13 @@
{ config, pkgs, ... }: { config, pkgs, lib, ... }:
{ {
# Add this module's pinned applications
desktop.plasma.pinnedApps = [
"applications:steam.desktop" # Steam gaming platform
"applications:discord.desktop" # Gaming communication
];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
discord # Gaming communication discord # Gaming communication
stremio # Media streaming stremio # Media streaming
# parsec-bin # parsec-bin
@ -16,4 +21,6 @@ environment.systemPackages = with pkgs; [
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
}; };
} }

View file

@ -1,8 +1,16 @@
{ config, pkgs, ... }: { config, pkgs, lib, ... }:
{ {
# Add this module's pinned applications
desktop.plasma.pinnedApps = [
"applications:rustdesk.desktop" # Remote desktop client
];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vlc # Media player vlc # Media player
deluge # BitTorrent client deluge # BitTorrent client
rustdesk # Remote desktop client
]; ];
} }

View file

@ -1,6 +1,13 @@
{ config, pkgs, pkgs-unstable, ... }: { config, pkgs, pkgs-unstable, lib, ... }:
{ {
# Add this module's pinned applications
desktop.plasma.pinnedApps = [
"applications:slack.desktop" # Team communication
"applications:signal-desktop.desktop" # Private messaging
"applications:libreoffice-writer.desktop" # Write (LibreOffice Writer)
"applications:libreoffice-calc.desktop" # Calc (LibreOffice Calc)
];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
libreoffice-qt libreoffice-qt
thunderbird thunderbird
@ -9,4 +16,7 @@
# gimp # Temporarily commented out to avoid build errors # gimp # Temporarily commented out to avoid build errors
# calibre # calibre
]; ];
} }

View file

@ -1,54 +1,76 @@
{ config, pkgs, home-manager, ... }: { config, pkgs, lib, home-manager, ... }:
{ {
services.xserver.enable = true; # Define the module option for pinned applications
services.displayManager.sddm.enable = true; options.desktop.plasma.pinnedApps = lib.mkOption {
services.xserver.displayManager.lightdm.enable = false; type = lib.types.listOf lib.types.str;
services.desktopManager.plasma6.enable = true; default = [];
environment.plasma6.excludePackages = with pkgs.kdePackages; [ description = "List of applications to pin to the Plasma taskbar";
khelpcenter
];
programs.dconf.enable = true;
programs.kdeconnect.enable = true;
hardware.bluetooth.enable = true;
environment.systemPackages = with pkgs; [
kdePackages.spectacle
arc-theme # Desktop theme
pinentry # GUI pinentry for GPG
tigervnc # VNC client/server
firefox # Web browser
tor-browser-bundle-bin # Tor browser
kleopatra # GPG key manager
];
# GNUPG Stuff
services.pcscd.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
}; };
# RDP config = {
services.xrdp.enable = true; # Add this module's pinned applications
services.xrdp.defaultWindowManager = "startplasma-x11"; desktop.plasma.pinnedApps = [
networking.firewall.allowedTCPPorts = [ 3389 ]; "applications:org.kde.konsole.desktop" # Terminal
services.xrdp.openFirewall = true; "applications:org.kde.dolphin.desktop" # Folder explorer
"applications:firefox.desktop" # Firefox browser
"applications:tigervnc.desktop" # TigerVNC
];
# Custom Keyboard Shortcuts for Plasma 6 services.xserver.enable = true;
environment.etc."kglobalshortcutsrc".text = '' services.displayManager.sddm.enable = true;
[khotkeys] services.xserver.displayManager.lightdm.enable = false;
Ctrl+Alt+Delete=Lock Session,none,Lock the session services.desktopManager.plasma6.enable = true;
''; environment.plasma6.excludePackages = with pkgs.kdePackages; [
khelpcenter
];
# stop PackageKit polling programs.dconf.enable = true;
services.packagekit.enable = false; programs.kdeconnect.enable = true;
hardware.bluetooth.enable = true;
environment.systemPackages = with pkgs; [
kdePackages.spectacle
arc-theme # Desktop theme
pinentry # GUI pinentry for GPG
tigervnc # VNC client/server
firefox # Web browser
];
# remove the Discover GUI + tray notifier # GNUPG Stuff
environment.plasma5.excludePackages = with pkgs.libsForQt5; [ services.pcscd.enable = true;
discover programs.gnupg.agent = {
discover-notifier enable = true;
]; enableSSHSupport = true;
};
# RDP
services.xrdp.enable = true;
services.xrdp.defaultWindowManager = "startplasma-x11";
networking.firewall.allowedTCPPorts = [ 3389 ];
services.xrdp.openFirewall = true;
# Custom Keyboard Shortcuts for Plasma 6
environment.etc."kglobalshortcutsrc".text = ''
[khotkeys]
Ctrl+Alt+Delete=Lock Session,none,Lock the session
'';
# stop PackageKit polling
services.packagekit.enable = false;
# remove the Discover GUI + tray notifier
environment.plasma5.excludePackages = with pkgs.libsForQt5; [
discover
];
# Plasma taskbar pinning configuration for all users
# Pinned applications are defined in each desktop module and merged here
home-manager.sharedModules = [{
xdg.configFile."plasma-org.kde.plasma.desktop-appletsrc".text = ''
[Containments][1][Applets][2][Configuration][General]
launchers=${lib.concatStringsSep "," config.desktop.plasma.pinnedApps}
'';
}];
};
} }

View file

@ -47,7 +47,7 @@
./desktop/gaming.nix ./desktop/gaming.nix
./desktop/media.nix ./desktop/media.nix
./desktop/virtualization.nix ./desktop/virtualization.nix
./desktop/crypto.nix ./desktop/dnm.nix
]; ];
in { in {
nixosConfigurations = { nixosConfigurations = {

View file

@ -1,4 +1,4 @@
{ config, pkgs, pkgs-unstable, home-manager, ... }: { config, pkgs, pkgs-unstable, home-manager, lib, ... }:
{ {
@ -134,6 +134,8 @@
}; };
}; };
}; };
}; };
}; };
} }