Also – i think i recall from other threads that you have some really nice hardware. Keep in mind that it’s perfectly fine to install something besides Guix on it – and also fine to use a VM-based workflow.
It’s hard to get dotfiles repos to work across multiple distributions though. Nix home-manager and guix home are some ways to do that – though for guix home on foreign distribution, you’ll have to be okay with systemd running some user services and shepherd running others.
If you really want to use Guix System, learn to identify the specific “escape hatches” you’ll need for kinds of situations. This could be:
docker for data science stuff or just Google Colab
- installing Nix alongside Guix to expand the set of packages you have access to
- or running a windows VM in Azure. i had to do that for CAD homework in school. (don’t forget to set it to auto-shutdown)
If you don’t identify those kinds of tools to use (before you’re in the situation where you need it), you’ll run into trouble. It can take a long time to learn these tools.
Questions & Points
What do you need python for?
How you need to use python sorta determines how you’d want to interact with it.
- do you need
ipython kernels for jupyter-lab?
- python can be problematic on guix. There is now the
uv package in gnu/packages/rust-apps.scm and if that works … holy crap that’s a lifesaver. in any case
I mentioned the VM-based workflow because python/jupyter can be more difficult, especially if you want the GPU for machine learning. It’s not impossible, but idk what the state of rocm is on Guix. For me, getting a rocm environment running on NixOS with python/tensorflow libraries is fairly challenging. On NixOS, these python libraries require customization for rocm since they all have pretty hard dependencies on nvidia.
Docker is usually a good way around the issues for rocm. Or other packaging issues with python dependencies. You just need to learn how to set “caps” on the container for GPU, pass raw devices and pass a socket – these are the same kinds of things you’d pass into a guix container for hardware access.
Hardware Requirements?
This will come up a bit.
- Do you know how to add
udev-rules? Check whether you need a kernel module? etc…
- How do you plan on discovering hardware requirements?
How were you planning to install steam?
See nongnu/packages/game-client.scm for one option. However, I used flatpak for this when I installed Steam on Guix.
- where are you installing games?
Other questions
Ignore the rest of this if it seems TMI or these aren’t issues you’re worried about yet. Also, if anyone can correct me on some of this, it would help me a ton.
You have emacs installed twice
You should probably remove it from one of these. It’s perfectly valid, but will cause issues if you’re not intentionally structuring how you use it. e.g.
- if
emacs-client 31.0 gets called to connect to a socket for emacs 30.2 server
- libraries compiled for
emacs 31.0 are being loaded emacs 30.2
TLDR: just be intentional with how you’re starting emacs and where it’s installed
Usually Guix handles the compatibility stuff for nativecomp emacs packages fairly well… at least for me it did, until i went to use straight.el. So you need to pick one of these options:
- manifest with
emacs-.* packages from guix for everything
- manifest that installs ONLY
emacs from guix packages (this provides many core nativecomp elisp dependencies) and then installs a framework on top of that.
For emacs-geiser & emacs-guix
You need to ensure that GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH are consistent in your shell’s path & inside emacs. See 22.5.1 in The Perfect Setup
For me, guix.el was extremely confusing (mainly issues with GUILE_LOAD_PATH on foreign distro vs Guix System). The emacs-lisp library also contains some scheme that must load. By running guix install for this, it ensures you have a basic GUILE_LOAD_PATH that’s set up.
On Guix System, this is less of an issue. For me on NixOS, I just found out that GUILE_LOAD_PATH was blank. So M-x guix was not working because the guix-repl was not loading. After a guix install to ~/.guix-profile