cross-posted from: https://lemmy.today/post/34279957
guix shell sees to it that all of the dependencies (listed in the inputs and native-inputs sections) are available within the shell session it creates by downloading (or building, if necessary) the entire dependency tree.
Should you want/need more isolation from the host system, guix shell has you covered. The --pure flag will clear out most existing environments variables, such as $PATH, so that the resulting environment does not contain pointers to places like /usr. For more Docker-like isolation, the --container flag can be used, which will run the new shell session within a set of Linux namespaces so that the host system is inaccessible.
Guh, someday I am going to have to learn that bracket-based syntax (lisp?) that keeps popping up on particularly interesting projects but I can never be bothered to learn.
Yeah, the style of syntax originated in LISP. The technical name is S-expressions.
But yes, the basic syntax rules are extremely simple. It’s rather when you actually want to do something with that syntax that it takes some thinking…
it’s as simple as
(command argument0 argument1 argument2)
meaning arguments 0, 1 and 2 are applied to
command
. when an expression is evaluated it dissolves into a value according to its context.(+ 1 2 3) ; evaluates to 6 in a context where + actually means an addition or sum operation (* 2 (+ 4 3)) ; evaluates to 14 (i think)
the absolute killer feature is the elimination of idiotic, man-made madness excused with the term “operator precedence”
It’s actually really easy.
Archive of the wonderful article mentioned in the intro.
This is similar using nix: https://devenv.sh/
It has a few more features like git hooks and spinning up long-running processes like web servers