Overview #
A deep dive into an advanced, minimal NixOS setup using LabWC (Wayland compositor) + Noctalia Shell V5 (from Cachix, not the official NixOS repo), assisted by opencode with the DeepSeek V4 Flash model for AI-guided configuration.
The result? A desktop that boots at 743 MB RAM with only 48 active tasks.
Key Highlights #
🔹 Ultra-lightweight
- 743 MB RAM usage on boot
- 48 tasks active — no bloat from full DEs like GNOME or KDE
🔹 LabWC + Noctalia V5
- LabWC provides a minimal Wayland session; many desktop services (dbus, polkit, clipman, etc.) must be manually configured
- Noctalia Shell V5 sourced via Cachix (not yet in nixpkgs)
- Color schemes sync between Nocttalia and LabWC via
noctalia-labwc-sync
🔹 AI-Assisted Config
- opencode + DeepSeek V4 Flash used to write and debug NixOS configs
AGENTS.md
drives system updates and automation- Sudoers configured for passwordless sudo (opencode convenience)
🔹 Custom Patches
Snapshot(webcam app) patched to work on NixOS — needed a custom build with a library fix, despite being in nixpkgs- Several environment variables manually set (session type, compose key, Telegram fix) since LabWC/greetd don't handle them all
🔹 No Home-Manager
- User configs kept in
~/.config/
for portability across distros - A rebuild hook symlinks dotfiles into
/etc/nixos/
(like GNU Stow)
🔹 Hybrid Package Management
-
Nix packages via
environment.systemPackages -
npm-installed apps like
opencode2
coexist alongside Nix-managed ones - Some programs (e.g., OBS Studio) enabled via
programs.obs-studio.enable
rather than packages list
Notable Services & Tools #
| Service/Tool | Purpose |
|---|---|
| greetd | |
| Login manager (alternative to GDM/SDDM) | |
| vox-type (Vulkan) | |
| Speech-to-text, Italian primary | |
| podman + podman-compose | |
| Container management | |
| cockpit + cockpit-podman | |
| Web admin UI | |
| kshi | |
| Display resolution & multi-monitor | |
| clipman | |
| Persistent clipboard | |
| satty | |
| Screenshots | |
| scrcpy | |
| Android screen mirror via USB | |
| smartmontools | |
| SSD health analysis | |
| LocalSend | |
| LAN file sharing (port 53317) | |
| KDE Connect | |
| Device integration | |
| Traefik | |
| Reverse proxy (podman container) |
NixOS Config Structure #
/etc/nixos/
├── flake.nix → loads configuration.nix + Nocttalia V5
├── configuration.nix → main config (long, modular)
├── hardware-configuration.nix
└── *symlinks → ~/dotfiles/ (managed via rebuild hook)
Lessons & Gotchas #
LabWC is not a full DE— you must manually wire up dbus, polkit, clipboard, environment variables, etc.** greetd doesn't fully manage session env vars**— some must be hardcoded in config** Snapshot needs a patchon NixOS even if available in repos Nix sometimes misidentifies apps**— file associations can be tricky** 4 GB+ RAM recommended**fornixos-rebuild
— a swap file helps on low-RAM machinesAMD microcode+** Bluetooth disabled at boot**(but installed) — fine-grained control
Final Thought #
"Some configurations are very complicated — but it is worth exploring this path."
The trade-off is clear: more complexity upfront for a lean, reproducible, extremely lightweight system. opencode + AI bridging the gap makes it practical.