- Lua 99.9%
- Nix 0.1%
| bin | ||
| docs | ||
| lua/dess | ||
| .envrc | ||
| .gitignore | ||
| devenv.lock | ||
| devenv.nix | ||
| devenv.yaml | ||
| README.md | ||
|
|
why?
as a fellow nixxer, i desperately want to escape it. the recent changes for age verification have made me want to get out of the systemd ecosystem. however, using nix for about four months on and off made it difficult to escape the "declarative everything" model, and i actually found it quite simple and even easier than imperative distros.
nixos, as a distro and as a system, is heavily dependent on systemd. projects like nixng have been tried before, yet they do not even boot on real hardware.
how?
everything in your system can be declared as an "entity": a collection of four simple "functions" (really just data), bound by an id into a dag. those four "functions" being:
check: is this already in the state we want it? returns a booleanapply: make it how we want it, should makecheckreturn true (for a package, this would be installation)destroy: tear it down (for a package, this would be uninstallation)notify: heavily optional, called when something needs to change based on another thing (for example, a config file notifies a service to restart)
notice how we say "function": its all represented as lua tables under the hood, such that it can be serialized and read back for pruning if you remove something from the config.