glixos
Modular, flake-driven NixOS with a manifest you can read.
glixos is a NixOS distribution organised around two ideas:
- One file declares your system. A single
glix.tomlper host lists every package you've installed, what scope it lives in (system or home), which user a home-scope package targets, and any per-package config. Everything else is static Nix that reads that file. - A small Go CLI is the only writer.
glixis a thin tool that mutatesglix.tomland an anchored region of one generatedflake.nix. It never parses Nix; it never edits user code. Every mutation is a single git commit, which makes rollback trivial.
The result is a NixOS where the source of truth is small, diffable, and recoverable, while the full power of the flake ecosystem stays on the table.
Pick your path
I want to use glixos
Install it, manage packages, share modules between hosts, recover from a bad rebuild. Start here.
Get started →
I want to understand or hack on glixos
Architecture, design decisions, codebase tour, and how to build and test the Go CLI plus the Nix layer.
Contribute →
What state is the project in?
glixos is pre-release. The schema, command surface, and on-disk layout are
stabilising but the project is still iterating on milestones. The current
CLI version is 0.1.0-m7, which covers:
- Bootstrap, add/remove/enable/disable/set/show/list/info/doctor/rollback/gc
- Multi-host (
hosts/<name>/glix.toml), multi-user (Package.user), per-host Nix system tuple - Per-package config (
[packages.<name>.config]) wired to the package's module via_module.args.glixConfig - Pinning via
?rev=<pin>for github/gitlab/sourcehut refs - Registry + resolver chain (URI → glixos registry →
nix registry list) - Transactional rollback: every mutation snapshots manifest + flake + lock
and atomically restores them if
nix flake lockfails
See Milestones for the roadmap.