Personal QuickShell configuration packaged as a Nix flake.
.
├── ds/ # Design system components
├── modules/ # QuickShell modules (bar, dashboard, drawer, etc.)
├── services/ # Services (audio, network, notifications, etc.)
├── shell/ # Shell-specific configurations
├── shell.qml # Main entry point
└── flake.nix # Nix flake definition
# Run the packaged configuration (registered as the named config "qsc")
quickshell-config
# Or use the start script (kills existing instance first)
~/.config/niri/start-quickshell
# Run from a working copy with live reload
quickshell -p ./The packaged shell is selected by the stable name qsc, not by its
nix store path, so IPC clients keep working across rebuilds.
Two helpers are installed alongside quickshell-config:
# Forward arbitrary IPC to the running instance
qs-ipc call <target> <method> [args...]
# Convenience: toggle the launcher drawer
qs-toggle-launcherBoth go through the same wrapped quickshell binary that runs the
shell, so the IPC client and the running instance are always the
same version (IPC is not forward/backward compatible across
quickshell versions).
The configuration is automatically integrated when using Niri as window manager. To enable auto-start, uncomment the following line in modules/home/wm/niri/default.nix:
spawn-at-startup "sh" "-c" "~/.config/niri/start-quickshell"- Make changes to the QML files in this directory
- Rebuild the system:
quickshell -p ./
This configuration is packaged as a Nix flake with:
packages.<system>.default— no-arg build of the configuration.lib.<system>.mkQuickshellConfig— factory taking{ commandsPath?, sessionCommandsPath?, interactiveCommandsPath?, excludedAppsPath?, stylix? }for downstream consumers.homeManagerModules.default— home-manager module exposingprograms.quickshell-config.{enable,commandsPath,sessionCommandsPath,interactiveCommandsPath,excludedAppsPath,stylix}, plus a read-onlypackagefor other modules to reference.overlays.default— for system-wide availability.
- QuickShell (from git+https://git.outfoxxed.me/outfoxxed/quickshell)
- Qt6 QML modules
- Nix with flakes enabled
- DS
- Propagate margin, radius and opacity to all components
- Bar
- Handle unknown icons
- Notifications
- Add notificationTime
- Don't hide notification when hover
- Group notifications
If QuickShell doesn't restart properly:
# Find QuickShell processes
pgrep -af quickshell
# Kill all QuickShell instances
pgrep -f "/bin/quickshell.*-p" | xargs -r kill