Most of us (maybe just myself) are looking for a standard unified artifact that provides all possible options, among everything else possibly needed to operate some application; all contained within its entrypoint/flake. Less adding packages to environment.systemPackages
, and more {programs,services,applications}.*.enable = true
. Options should be split into contexts like: nixos
, home-manager
, and devshell
/nixago
; I’d personally alias them to host
, user
, iron
, and add site
as another.
To me a nix-wad
would contain everything an application (potentially) needs, along with modules providing options for whatever context it might be used in. Potential niceties I wish might eventually be included: SELinux compliance, plugins/addons catalogs, in-store encrypted secrets, and much more I can’t currently recall.
I’d also like a mainline/official collection of basic flakes and frameworks. Obvious contenders are: nixpkgs, home-manager, and the NUR. Others I would consider are: drv-parts, flake-parts, and my favorite std. What is the best way to inherit all inputs from another flake anyway?
Lastly for my spiel… I believe it time for a neo NixOS! Definitely my goto choice for an operating system; NixOS has most others beat in many ways; that is, if you know what you’re doing. However, I believe it’s time for a major overhaul. Instead of thinking top down, we should start thinking bottom up. Every Unix system has at least one user, the root
user. Therefore we should think of the system configuration as layers from: user
, host
, to site
. This should replace the need for home-manager
and absorb it. The site
layer should also be basic enough to allow swapping between deployment tools.