Hacker News new | ask | show | jobs
by rekado 3120 days ago
In Guix package definitions are first-class values. They are arranged in Guile modules so they don't pollute a single namespace (though usually packages have unique names anyway). With standard Guile features one can uniquely specify variables that may have the same name.

Package definitions can often be generated automatically with importers. For example, `guix import cran -r recipes` creates package definitions for the recipes package and all its R dependencies. They usually work with minimal adjustments.

Jumping to package definitions is easy thanks to REPL support (e.g. with Emacs + Geiser), but you can also use `guix edit name` and it will spawn an editor to edit the package "name".

Creating variants of packages is trivial as package definitions can inherit from existing definitions. I maintain a bunch of different versions for bioinformatics tools. I can select them on the command line simply by appending the version string, e.g. "samtools@0.1".

Guix has a comprehensive manual with a procedure and variable reference and examples.

I really like Guix and GuixSD because of how consistent and hackable it is.