Files
nix-config-ryan4yin/home/linux/gui/base/README.md
T
2026-10-28 13:51:16 +08:00

104 lines
4.9 KiB
Markdown

# 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`](https://docs.noctalia.dev/noctalia/getting-started/nixos/) 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`](./noctalia/default.nix)**: enables the upstream `programs.noctalia`
module and symlinks the baseline out of store
- **[`noctalia/config/config.toml`](./noctalia/config/config.toml)**: declarative baseline (v5
TOML), tracked in the repo and hot-reloaded
Covers 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/`](./hypridle/)**: Idle management
### Desktop Environment
- **[`gtk.nix`](./gtk.nix)**: GTK theme configuration
- **[`xdg/`](./xdg/)**: XDG specifications
### Input & Localization
- **[`fcitx5/`](./fcitx5/)**: Fcitx5 input method with Rime (Chinese), Mozc (Japanese), and Hangul
(Korean) engines
- **[`vinput/`](./vinput/)**: Voice input on `ai` (OpenVINO) and `shoukei` (CPU)
### Applications
- **[`desktop-tools.nix`](./desktop-tools.nix)**: Wayland session tools (clipboard, brightness,
screen recording, auto-mount, virt-manager/virt-viewer, `wlogout` emergency fallback)
- **[`browsers.nix`](./browsers.nix)**: Web browsers
- **[`media.nix`](./media.nix)**: Audio control, mpv, go-musicfox, an image viewer, GPU video
diagnostics, Zoom (x86_64 only), and EasyEffects loudness normalization
- **[`gaming.nix`](./gaming.nix)**: Gaming applications
- **[`creative.nix`](./creative.nix)**: Creative software
- **[`note-taking.nix`](./note-taking.nix)**: Note-taking apps
### Development
- **[`dev-tools.nix`](./dev-tools.nix)**: Android platform tools (`android-tools`)
### System Utilities
- **[`misc.nix`](./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`](../README.md)