Omarchy: A Pragmatic Review of Nix-Driven Desktop Automation for Self-Hosted Workflows
Description and use
Omarchy enabled a largely declarative homelab with reproducible builds and simplified recovery, but required manual adjustments for Traefik storage, Neovim LSP conflicts, and DNS isolation. The stack achieved 95% declarativity, reducing cognitive overhead for experienced Nix users while exposing a 40‑hour learning curve for newcomers.
Problem
Integrating a Nix-based declarative desktop configuration (Omarchy) into a self-hosted homelab with Open-WebUI, Tailscale, and Traefik while maintaining existing tooling and workflows.
Outcome
Omarchy enabled a largely declarative homelab with reproducible builds and simplified recovery, but required manual adjustments for Traefik storage, Neovim LSP conflicts, and DNS isolation. The stack achieved 95% declarativity, reducing cognitive overhead for experienced Nix users while exposing a 40‑hour learning curve for newcomers.
Workflow
- 1. Add Omarchy flake to git repo and enable virtualisation.docker in configuration.
- 2. Deploy docker-compose.yml for Open-WebUI and Traefik, ensuring volumes and networks are correctly defined.
- 3. Persist Tailscale routes by enabling systemd service wrappers in Omarchy.
- 4. Resolve Traefik ACME storage issue by creating /var/lib/traefik via tmpfiles rule.
- 5. Disable Omarchy’s Neovim LSP module to avoid conflict with coc.nvim.
- 6. Add firewall trustedInterfaces for tailscale0 to allow DNS resolution for external LLM relay.
- 7. Test LLM streaming latency and verify 340 ms TTFT.
- 8. Use git clone + nixos-rebuild for disaster recovery.
- 9. Document remaining imperative components (VPN clients, legacy Java apps).
Evidence
Omarchy wraps NixOS/Home Manager patterns into an opinionated starter kit.
Our docker-compose.yml spun up cleanly: ...
Traefik's ACME certificate storage expects writable /etc/traefik/acme.json. Nix's /nix/store immutability requires remapping to /var/lib/traefik.
When benchmarking Open-WebUI's streaming responses through the B-Lost relay at https://b-lost.com/v1, we observed consistent 340ms TTFT.
- Record date: 2026-10-20T14:41:04.268Z