When to use Guix packages, and when to use system packages

Does anybody know when to install something with Guix, and when to install something with the system package manager?

I don’t really want Guix to “taint” my normal GNU/Linux system.

I’ve thought of using Guix purely for Scheme and Emacs stuff.

What do you think?

You can install to profiles that don’t ordinarily get added to PATH. See guix package -P

On a foreign system, guix allows you to augment the system in specific ways. You can write custom builds of tools that are totally separate from your system’s packages.

On a foreign distro, you don’t want your PATH to cause binaries to load that expect to link against Guix dynamic libs… unless you intend that to happen.

If you’re not expecting this, it could cause problems. If you’re accounting for it, it’s not that bad. You usually just need to keep those packages up to date if they’re in you’re PATH. That can bite you.

Sway/hyprland interactions could cause issues. In theory, dbus interactions could cause issues. Guix packages don’t ship systemd so you don’t have to worry about much there.

Guix packages are built with separate locales (see GUIX_LOCPATH) and all dynamically linked libraries should usually be included. They’re meant to be self-contained.

I’m able to get the same doom emacs config running in Omarchy and NixOS by using Guix. The same could be accomplished with nix.

I only install the base emacs dependencies and some Latex stuff in that profile.

Everything else gets built through Doom’s build system that controls straight.el

Emacs packaging on other distros is hit or miss.

I’m not using Guix on a foreign distro right now, but when i was still using Nix on Void Linux i installed pretty much as much as possible through Nix, since i wanted most of my setup to be as portable as possible. I just kinda experimented with it to see how much i could get away with. Usually i would still install things natively that had to be run as root. Even if a package needs udev rules you could only install the udev rules on the host and then install the package through Guix.