

Reproducible Development Environments with GNU Guix - rev
http://dthompson.us/reproducible-development-environments-with-gnu-guix.html

======
arianvanp
Been using nix for a while for bookkeeping my development environments and
it's been nice. The config syntax just is a bit unfamiliar so I'd be happy to
check out Guix. The problem is that I also use non-free software and I haven't
yet figured out how to set up my own Guix repo for that. Anyone got any luck
with that?

~~~
scourge
if you want to set up a channel, just make a channel and put it anywhere
(github is free).

if you do (in either nix or guix) let me know. I've been planning on doing
something similar for non-free software for a while but to be honest it seems
I don't have to use non-free software nearly as much nowadays.

------
amelius
That's nice, but why stop at being a package manager? Why not also replace the
build tool (make et al.)?

If all the functional machinery is in place, this would be perfect for a build
tool.

~~~
Sanddancer
Because that means yet another build tool users have to maintain, check for
security updates, etc. Packagers for people not using guix will need to start
including it, etc, which will just add to the absolute excess of build tools
out there. Currently installed on my system are bsd make, cmake, gmake, and
scons, just to handle various software I've installed. Plus, you have samba in
there that drags in Waf for its builds, and I know that there's some package
out there I'm gonna want to poke at that's gonna wanna bring its buddies ant
and/or nant in to party too. Unless the new and improved tool can understand
all those tools, it's just gonna add to the mess.

------
mat_jack1
What's the benefit of Guix compared to tools like Chef
([https://www.getchef.com/](https://www.getchef.com/)) or
Puppet([https://puppetlabs.com/](https://puppetlabs.com/))?

~~~
viraptor
Guix seems to be a package manager. Chef/Puppet are configuration management
tools. In short (from what I understand, I have only read about guix), you can
use all of them to install software. But Chef/Puppet give you much more -
distribution of configuration data, runtime search between machines, control
over services / resources, etc. In practice you'd probably want to use one of
them to install guix and run guix commands locally when setting up the hosts.

~~~
mat_jack1
But then doing that would mean that you split a single system configuration
through two different tools, right? I don't think it's ideal in practice.

~~~
viraptor
I don't think guix does system configuration at all. And I don't mean "what
software needs to be installed" configuration. I mean, configuration system
that says "this is a staging environment, this app logs at DEBUG level via
syslog, syslog gets configured to ship errors/exceptions to XXX, app uses
local cache not cluster, credentials get pulled and decrypted from ABC".

This kind of configuration goes one level above package management, whether
it's guix, apt, yum, pacman, or anything else.

Edit: you actually said benefits of guix in the original question - it gives
you the way to make a localised installation of something you want.
Chef/Puppet cannot be it on their own.

~~~
davexunit
>I don't think guix does system configuration at all.

It does, actually. Check out the documentation for details:

[https://www.gnu.org/software/guix/manual/guix.html#System-
Co...](https://www.gnu.org/software/guix/manual/guix.html#System-
Configuration)

~~~
viraptor
Interesting; looks rather limited, but yeah, it's there.

------
zwischenzug
A similar project, using docker and pexpect for dynamic and programmable - but
auditable and deterministically built - images:

[http://ianmiell.github.io/shutit/](http://ianmiell.github.io/shutit/)

------
sly010
Introducing: "Meta" a package manager for package managers.

To install, just type:

meta install meta

~~~
davexunit
If I may indulge you, it's possible to 'guix package -i guix'.

