* feat(nixpak): sandbox Steam and Heroic in ~/Gaming idols-ai stops preserving ~/.local/share/Steam, ~/.steam, ~/.config/heroic and their game data, which must be moved into ~/Gaming before deploying. Assisted-by: DeepSeek Harness (deepseek-flash) * refactor(nixpak): replace steam-fix.nu with sandboxed protontricks Assisted-by: DeepSeek Harness (claude-opus-5-5) * fix(nixpak): hide host documents and GTK config from game sandboxes Assisted-by: DeepSeek Harness (claude-opus-5-5) * docs(ai): locate the Steam library under ~/Gaming Assisted-by: DeepSeek Harness (claude-opus-5-5) * fix(umu-game): confine writes to ~/Gaming and keep foreign entries Assisted-by: DeepSeek Harness (claude-opus-5-5) * fix(nixpak): keep Steam and Heroic in the application launcher The wrappers only carried bin/, so neither launcher had a desktop entry after replacing programs.steam. Assisted-by: DeepSeek Harness (deepseek-flash) * fix(nixpak): give the game sandboxes a fontconfig that sees CJK fonts Steam rendered Chinese as tofu: the FHS layers build their own /etc/fonts, whose config lists only DejaVu and the XDG font directory, so neither the host fonts nor the FHS /usr/share/fonts were ever scanned. Point FONTCONFIG_FILE at a small config that includes /usr/share/fonts, and ship WenQuanYi Zen Hei and Noto Sans CJK in all three FHS layers. Assisted-by: DeepSeek Harness (deepseek-flash) * fix(nixpak): grant the game launchers a StatusNotifier tray icon Steam and Heroic register a tray icon over D-Bus, and the game sandboxes granted no StatusNotifierWatcher access, so the desktop shell had nothing to show for them. Enable desktopIntegration.tray for all three launchers and teach the policy suites to expect it. Assisted-by: DeepSeek Harness (deepseek-flash) * fix(nixpak): drop the duplicate host CJK font and tidy the font overrides Steam reads the fonts inside its own FHS layer, so the system-wide wqy_zenhei added for it no longer serves any sandbox. Give gaming-policy its own comment for FONTCONFIG_FILE instead of leaving it under the compat-tool one, make the desktop-base value a default, and note the SNI tray grant in the README table. Assisted-by: DeepSeek Harness (deepseek-flash)
Base Desktop Environment Configuration
This directory contains base configurations for Linux desktop environments.
Overview
The configuration is split into modules:
- Desktop shell: Noctalia Shell
- Applications: desktop tools, browsers, editors, media players
- Development tools: IDEs and development utilities
- System integration: input methods, theming, XDG specifications, GPU settings
Noctalia
Noctalia (v5) is a native C++/Wayland desktop shell that replaces multiple separate tools. It is
installed through the upstream
programs.noctalia Home Manager
module.
Configuration
Noctalia merges every *.toml in the config directory (~/.config/noctalia/), sorted
alphabetically, and then layers the state directory's settings.toml on top:
| Layer | Location | Notes |
|---|---|---|
| Config | ~/.config/noctalia/*.toml |
Merged alphabetically; [include] supported; host-specific overrides |
| State | ~/.local/state/noctalia/settings.toml |
Written by the Settings UI; loads last and wins |
The shared baseline (noctalia/config/config.toml) is deployed as an out-of-store symlink, so
manual edits hot-reload without a home-manager switch. Noctalia never rewrites files in the config
layer, so volatile runtime data (wallpaper rotation, widget geometry) stays in the state file and
out of the repository.
noctalia config export prints the merged user config and noctalia config validate checks a file.
Application theming stays with catppuccin/nix, so Noctalia's theme templates are disabled.
Component Replacement
Noctalia consolidates functionality that previously required multiple tools:
| Traditional Component | Purpose | Noctalia counterpart |
|---|---|---|
| gammastep | Blue light filter | [nightlight] |
| swaylock | Screen locker | built-in lock screen ([lockscreen]) |
| anyrun | Application launcher | launcher panel ([shell.launcher]) |
| mako | Notification daemon | [notification] |
| waybar | Status bar | [bar] + [widget.*] |
| wallpaper-switcher | Wallpaper management | [wallpaper] |
| wlogout | Session menu | [shell.session] |
| wl-clipboard | Clipboard management | built-in clipboard (encrypted history) |
| grim/slurp/satty | Screenshots + annotation | built-in [shell.screenshot] + annotation editor |
Configuration Modules
Desktop Shell
-
noctalia/default.nix: enables the upstreamprograms.noctaliamodule and symlinks the baseline out of store -
noctalia/config/config.toml: declarative baseline (v5 TOML), tracked in the repo and hot-reloadedCovers the bar and widgets, control center, desktop widgets, night light, wallpaper, session panel, screenshots with annotation, system monitor, audio/volume, brightness, calendar/weather, color schemes, dock, notifications, OSD, and clipboard.
-
hypridle/: Idle management
Desktop Environment
Input & Localization
fcitx5/: Fcitx5 input method with Rime (Chinese), Mozc (Japanese), and Hangul (Korean) enginesvinput/: Voice input onai(OpenVINO) andshoukei(CPU)
Applications
desktop-tools.nix: Wayland session tools (clipboard, brightness, screen recording, auto-mount, virt-manager/virt-viewer,wlogoutemergency fallback)browsers.nix: Web browsersmedia.nix: Audio control, mpv, go-musicfox, an image viewer, GPU video diagnostics, Zoom (x86_64 only), and EasyEffects loudness normalizationgaming.nix: Gaming applicationscreative.nix: Creative softwarenote-taking.nix: Note-taking apps
Development
dev-tools.nix: Android platform tools (android-tools)
System Utilities
misc.nix: Misc GUI apps (e-book reader, remote desktop, hardened IM clients)
Related Documentation
- Noctalia Shell: https://docs.noctalia.dev/noctalia/
- Parent:
../README.md