Guix’s FOSS stance is… cool… I guess… but can be very impractical. The main channel only ships linux-libre which will give you problems on most modern hardware. I immediately had to add nonguix to get my laptop working.
No, the reason I went with Guix is because their tools and APIs seem/feel a bit more polished than Nix. I also feel better about learning Guile Scheme because it’s a more general-purpose language than Nixlang and I just personally found it more intuitive.
But yeah Nix is definitely more mature, has more packages, and has more documentation scattered about. Also, Guix uses GNU Shepherd instead of systemd… which… I don’t know how I feel about that yet…
How do you do Flakes with Guix? When I tried to use it, the closest I could get was a script using time-machine to output a lockfile, and it was still missing many other important features such as inputting other Flakes and their dependencies. Also NixOS/Home Manager have tons of configuration options that integrate with each other (i.e. Shell integrations, stylix) that Guix doesn’t have so with Guix I had to use dotfiles directly which is less powerful. Also on aarch64 Guix is way bugger and like half of the large packages wouldn’t compile a lot of the time, their lack of quality control was also one of the things that pushed me to Nix.
The one thing I do miss from Guix though is the containerized shells.
Good question. I haven’t gotten there yet… but I hear yeah, something with channels.scm and time-machine? I haven’t tried that workflow yet. Also, something about inferiors?
NixOS/Home Manager … with Guix I had to use dotfiles directly which is less powerful
I actually found that I like using the home-dotfiles-service-type because I already have everything in dot files. Although, I have a very simple setup, so I’m not sure more powerful features would be useful for me… maybe? idk.
aarch64 Guix is way bugger
Ah, ok. I haven’t tried this.
half of the large packages wouldn’t compile a lot of the time
Hm, weird. Maybe this has gotten better? I haven’t had a problem with anything compiling yet. I did run into a bug with Obsidian not launching correctly and that took a few weeks to resolve, I think.
Guix is definitely lacking manpower for sure, but I’m vibing with the foundations so far. So I’m hoping things get better over time.
This was the closest I managed to get to a Flake with Guix. I’m bad at Guile so there might be other things I missed.
With Nix I made a Flake that automatically configures a text editor that can be imported into other Flakes for my own projects which is easy to do with Nix.
For system configurations, the flake-parts based configuration makes it easy to mix and match modules for different systems that edit parts of program configurations that I need (i.e. different modules add different aliases to Nushell). Idk how Guix handles this since I haven’t figured out Guile well.
I did run into a bug with Obsidian not launching correctly and that took a few weeks to resolve, I think.
I’ve experienced this with Nix before for a different program, although once I made an issue request it got responses immediately and I didn’t even do anything else. Meanwhile for Guix, I tried contributing a package that I spent several hours working on, and I asked multiple channels for support and didn’t get a response, then when I submitted it no response for a year before it was finally rejected, so my experience with the maintainers wasn’t great either and this made me hesitant to invest more time into the ecosystem.
Guix’s FOSS stance is cool, but Nix is much more mature
Guix’s FOSS stance is… cool… I guess… but can be very impractical. The main channel only ships linux-libre which will give you problems on most modern hardware. I immediately had to add
nonguix
to get my laptop working.No, the reason I went with Guix is because their tools and APIs seem/feel a bit more polished than Nix. I also feel better about learning Guile Scheme because it’s a more general-purpose language than Nixlang and I just personally found it more intuitive.
But yeah Nix is definitely more mature, has more packages, and has more documentation scattered about. Also, Guix uses GNU Shepherd instead of systemd… which… I don’t know how I feel about that yet…
How do you do Flakes with Guix? When I tried to use it, the closest I could get was a script using time-machine to output a lockfile, and it was still missing many other important features such as inputting other Flakes and their dependencies. Also NixOS/Home Manager have tons of configuration options that integrate with each other (i.e. Shell integrations, stylix) that Guix doesn’t have so with Guix I had to use dotfiles directly which is less powerful. Also on aarch64 Guix is way bugger and like half of the large packages wouldn’t compile a lot of the time, their lack of quality control was also one of the things that pushed me to Nix.
The one thing I do miss from Guix though is the containerized shells.
Good question. I haven’t gotten there yet… but I hear yeah, something with
channels.scm
andtime-machine
? I haven’t tried that workflow yet. Also, something about inferiors?I actually found that I like using the
home-dotfiles-service-type
because I already have everything in dot files. Although, I have a very simple setup, so I’m not sure more powerful features would be useful for me… maybe? idk.Ah, ok. I haven’t tried this.
Hm, weird. Maybe this has gotten better? I haven’t had a problem with anything compiling yet. I did run into a bug with Obsidian not launching correctly and that took a few weeks to resolve, I think.
Guix is definitely lacking manpower for sure, but I’m vibing with the foundations so far. So I’m hoping things get better over time.
This was the closest I managed to get to a Flake with Guix. I’m bad at Guile so there might be other things I missed.
With Nix I made a Flake that automatically configures a text editor that can be imported into other Flakes for my own projects which is easy to do with Nix.
For system configurations, the flake-parts based configuration makes it easy to mix and match modules for different systems that edit parts of program configurations that I need (i.e. different modules add different aliases to Nushell). Idk how Guix handles this since I haven’t figured out Guile well.
I’ve experienced this with Nix before for a different program, although once I made an issue request it got responses immediately and I didn’t even do anything else. Meanwhile for Guix, I tried contributing a package that I spent several hours working on, and I asked multiple channels for support and didn’t get a response, then when I submitted it no response for a year before it was finally rejected, so my experience with the maintainers wasn’t great either and this made me hesitant to invest more time into the ecosystem.