all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Jookia <166291@gmail.com>
To: Chris Marusich <cmmarusich@gmail.com>
Cc: guix-devel@gnu.org, myglc2 <myglc2@gmail.com>
Subject: Re: Guix vs GuixSD
Date: Tue, 16 Feb 2016 20:24:23 +1100	[thread overview]
Message-ID: <20160216092422.GA7882@novena-choice-citizen.lan> (raw)
In-Reply-To: <CAEKzfHn6VUt3Zed77z_G+54DE2uDuzp=GoOsFeJ=ZL+-yeevYw@mail.gmail.com>

On Tue, Feb 16, 2016 at 03:26:01AM +0000, Chris Marusich wrote:
> (Apologies for top-posting; my mobile email client doesn't seem to let me
> post in any other way...)
>
> Regarding your diagrams, I guess the one that shows GuixSD using Guix makes
> a little more sense to me than the one that shows GuixSD as a total
> replacement for Guix. However, I'm not sure exactly how GuixSD uses Guix
> when managing the system, so I will defer to the opinion of others on the
> mailing list who know more about theses things than me.
>
> It isn't clear to me what you want to know. Perhaps if you can ask a more
> concrete question, it will be easier for the others to answer?
>
> To reiterate what I said before: my current understanding is that Guix is a
> functional package manager (with a lot of fantastic features) that you can
> run anywhere. That's all, really. And GuixSD is a full GNU operating system
> which currently uses Linux-Libre as its kernel, Guix as its package
> manager, and Shepherd (formerly DMD) as its init system. Similar to a
> GNU/Linux distribution, the GuixSD system comes with some extra "glue"
> which makes all those separate components work together out of the box. But
> the way that those components are glued together in GuixSD allows you to
> enjoy certain benefits that you don't get with other systems (software
> freedom, system configuration in guile, easy rollback of system upgrades,
> etc). I don't yet know much about how GuixSD's "glue" is implemented, but I
> think that's the gist of it.

I can see how this is confusing, after all, how would a package manager be used
to package things like an initramfs or SSH configuration? Well, the trick is
that GuixSD effectively 'packages' your os-configuration.

If we look at a Guix package we can see it takes a configuration of sources,
a build system, maybe some build phases and maybe some more things like patches.
From this a few derivations are built, which are basically things put in the
Guix store. These derivations include the patched source code and the final
binaries. Then Guix takes these final binary derivations and puts them in your
profile so you can use them if it's something you installed explicitly.

The key here is that Guix generates a lot of things, though most often this is
hidden by substitute downloads of the final binary unless you compile everything
yourself. How could you build an operating system out of this? Well, think of
the operating system as one giant package that Guix generates a ton of
derivations for then links them to your system's profile. So if you have SSH
running it'll make you a cool SSH configuration derivation then link that in.

"Why would you do this?" is probably your next question. Well, let's say you
update a ton of Guix packages and it breaks half way. This is okay since it
won't change your Guix profile until you actually have a working set of
packages and all their dependencies. You can also rollback in case the latest
version of your favourite browser Icecat breaks an add-on you absolutely need.

Now if we apply this to the operating system 'package', or derivation, you can
switch between all the things that make up your system in much the same way or
roll back. The switching here is done using 'guix system reconfigure' or at boot
through GRUB if the latest version of a system configuration, such as a Shepherd
service somehow kills your entire system. Guix also has support for installing
your os-configuration not just to your drive, but to a VM or a container.
Imagine looking online for Guix configurations to try in a VM then setting that
up as your main system configuration!

Perhaps I went a bit off topic there but I hope this give some understanding.
Jookia.

  reply	other threads:[~2016-02-16  9:26 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-15  0:22 Guix vs GuixSD myglc2
2016-02-15  1:05 ` Chris Marusich
2016-02-15 17:37   ` myglc2
2016-02-16  3:26     ` Chris Marusich
2016-02-16  9:24       ` Jookia [this message]
2016-02-16  9:41         ` Chris Marusich
2016-03-05  1:59 ` myglc2
2016-03-06 13:53   ` Ludovic Courtès
2016-03-06 15:37     ` myglc2
2016-03-07  6:57   ` Chris Marusich
2016-03-07 22:53     ` myglc2
2016-03-08  7:34       ` Chris Marusich
2016-03-08 17:58         ` myglc2
2016-03-25 21:47           ` myglc2

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160216092422.GA7882@novena-choice-citizen.lan \
    --to=166291@gmail.com \
    --cc=cmmarusich@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=myglc2@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.