1. 65

  2. 6

    As a person with ~intermediate knowledge of Nix/NixOS and only knowing Guix from a distance yet:

    • I don’t see a word about GuixSD there - what’s the status of this?
    • (How) can I pin my whole config to a particular commit of the package set, and only update gradually? I’m kinda having trouble with this in NixOS
    • Can I package non-libre software for Guix? Are there third-party package sets? I know GNU proper doesn’t want me to do this, and I’m sympathetic, but not ready for the jump. What’s the situation for me in practice?
    • Can I replace kernel with L4Linux? I tried to do that in NixOS but gave up because of complexity.
    • edit: Also, do they mirror/archive package sources somewhere?
    1. 5

      You can specify additional channels and I believe I’ve seen at least one nonfree package repo somewhere in the past.

      It is possible to boot into a different kernel. I also found that someone has written a config with a custom (nonfree) kernel; I don’t know much about L4 but it could be a good starting point.

      1. 1

        Thanks! Where/how can I find the source of the linux-libre expression mentioned in the manual link you listed? I’m also interested in compiling L4Linux as part of the Guix system, instead of only using a prebuilt binary.

        edit: Interestingly, as part of a similar thread on HN (where I also copied my questions from here once I found it), I learnt that Guix seems to have some preliminary support for Hurd, so it may be helpful to me too.

        1. 2

          Here it is in git. The manual section on defining packages will be a big help for hacking on it.

      2. 3

        I’m kinda having trouble with this in NixOS

        It’s not well documented, but you can just grab the package set directly:

        pkgs = import (builtins.fetchTarball {
          name = "nixos-unstable";
          url = https://github.com/nixos/nixpkgs/archive/1fc591f9a5bd1b016b5d66dfab29560073955a14.tar.gz;
          sha256 = "1ij5x1qw486rbih7xh2c01s60c3zblj6ad1isf5y99sh47jcq76c";
        }) {};
        in ...
        1. 1

          Question is, how do I apply this concretely in /etc/nixos/configuration.nix — which is a function starting with: { config, pkgs, ... }: ... — do I override pkgs parameter? Does it make my whole NixOS pinned? Or only some parts of it? AFAIU, the /etc/nixos/configuration.nix is included from some NixOS code, so I imagine it can’t override this? So probably what I should do is override the channel, as hinted by some other people in this thread and on HN?

          1. 2

            If you want to override the nixpkgs used for your whole OS, you have quite a few options. You can set NIX_PATH with a nixpkgs= at the front. You could change your nix-channel so that it points to a different nixpkgs. You could change the nixpkgs.pkgs configuration option to point to whatever path you’d like.

            If you just want to use it for some system packages, you can just reference them directly:

            environment.systemPackages =
                pkgs1903 = fetchTarball "https://nixos.org/channels/nixos-19.03/nixexprs.tar.xz" { };

            But at this point I’d just use nix-env and mix there, it’s a lot easier.

            If you want your system to use a specific package that’s not installed, but used as part of a module, you can do something like:

            nixpkgs.config.packageOverrides = pkgs: {
              inherit (pkgs1903) hello;

            Which might work, or might not, depending on compatibility of things. You might then want to backport a whole module, which gets a bit tricky.

            1. 1

              AFAIK packageOverrides is deprecated now in favour of overlays, since the latter can be composed nicely https://nixos.wiki/wiki/Overlays

              1. 1

                Dunno about deprecated but yes thanks, overlays are a nicer and more composable way to do this.

        2. 2

          From HN:

          (Note: we call it “Guix System” instead of “GuixSD” now.)

          There is little difference between Guix and the Guix system when looking a little more closely.

          1. 2

            I don’t see a word about GuixSD there - what’s the status of this?

            It’s been renamed “Guix System”. “Guix” and “Guix System” (née “GuixSD”) update together; apparently 1.0 brings a new TUI installer for the Guix System.

            1. 1

              Seems like the versions and name are a bit intertwined.

              Guix can be used on top of any system running the kernel Linux, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.

              1. 1

                can I pin my whole config to a particular commit of the package set, and only update gradually? I’m kinda having trouble with this in NixOS

                What is the problem you are having with nix?

              2. 4

                I’m impressed by the polish that goes into the project’s presentation, in comparison to both Nix and to plenty of other GNU projects. In my mind this implies a well structured and managed project with a bit less of a learning cliff than Nix – looking forward to give it a try soon.

                1. 3

                  This is great. Guix and GuixSD (now called “Guix System”?) are a real pleasure to work with.

                  1. 3

                    I’m very intrigued, because while I run NixOS at home, because it is a materialization of what is by inspection the best possible model of composing large software projects, it is covered in pointy bits and rough edges. I’d like to switch to Guix, partly because I prefer Scheme to whatever the hell language Nix is using, but mostly because as a follower, they can learn from the mistakes of Nix without having quite the social and technical hurdles to overcome to fix them.

                    1. 2

                      I’ve tried Nix a few times and it’s never stuck - the commands are all unintuitive, and the language is also strange.

                      I’m planning I’m trying out Guix on an upcoming trip. Maybe this is the one?

                    2. 2

                      Well this is a wonderful coincidence, I was just telling a friend about Guix yesterday and how I would love to use it when it was stable. And lo-and-behold now it is!

                      1. 2

                        🎉very excited about this🎉

                        1. 1

                          Are there any torrent options to download the images?