3 ms·
I really like the concepts brought by Nix. Guix is also a nice derivative, which uses Scheme as a DSL to describe packages and its own Scheme-implemented init s
by nextos 11y ago
I really like the concepts brought by Nix. Guix is also a nice derivative, which uses Scheme as a DSL to describe packages and its own Scheme-implemented init system.
Explicit package definitions bring 2 great advantages. First, one can easily modify them programatically (to e.g. enable or disable options) and build the resulting custom package from source. Like Gentoo on steroids. Second, one can build packages from source and compare them bitwise with binaries offered by mirrors. This is incredibly important to avoid malicious attacks. See guix challenge command.
I dislike a bit that some Nix packages are very non-minimal, built with every possible optional dependency baked in. I consider this a security threat. Not so long ago, Firefox came with Flash by default. Getting seemingly innocent CLI packages like Mutt ended up pulling a lot of stuff like Python I don't need via GPG. I would love to have something more minimal, like what Arch gives.
- Ericson2314 11y agoWe agree that package configuration isn't very discoverable — for users or our tools. Once we fix that it could be possible to add a blanket config to default to a minimal cfg instead. I'd guess the default configurations tend to err on the side of completeness to get the most bang for buck from the cached builds.
- nextos 11y agoYep. My litmus test here would be, can I set up a whole minimal desktop (xmonad, emacs, firefox, mutt, git, rsync, openssh, gnupg...) without pulling any extraneous dependencies? This is possible on most major Linux distributions, but not in NixOS. Otherwise a fantastic piece of work. I wish it plenty of success. It's full of simple and great ideas.
- Ericson2314 11y agoWell, with enough manual tweaking it ought to be. You may also be interested in https://github.com/NixOS/nixpkgs/pull/7701 https://github.com/NixOS/nixpkgs/pull/7701 which cuts down in unintentional dependencies.