![]() |
3 days ago | |
---|---|---|
home | 3 days ago | |
manifests | 3 days ago | |
scripts | 1 year ago | |
system | 4 weeks ago | |
.gitignore | 2 months ago | |
README.md | 1 year ago |
README.md
guix-config
My ~/.config/guix
Overview
All the stuff Guix looks for automatically is under ~/.config/guix, as well as similar files. Related files without expected paths are under dedicated directores:
Home
config.scm and supporting files for use with guix home reconfigure
.
Profiles
Manifests and supporting files for use with guix package -m
. Files are stored
in dedicated directories, each with a descriptive name. Some profiles have
subprofiles, such as Python's dev and web.
To install or update a profile run
guix package -m ~/.config/guix/profiles/<profile>/manifest.scm -p ~/.guix-profiles/<profile>
To initialize a profile run
. ~/.guix-profiles/<profile>/etc/profile
Note that the naming convention for the profiles proper of subprofiles is to append the parent profile's name and a hyphen to the subprofile directory. So for example, "profiles/python/dev" becomes "~/.guix-profiles/python-dev".
Or if you want to source all profiles on every login, add this to "~/.bash_profile" (already part of home configuration):
for i in "$HOME"/.config/guix/profiles/*; do
if [ -f "$i"/manifest.scm ]; then
profile="$HOME"/.guix-profiles/$(basename "$i")
if [ -f "$profile"/etc/profile ]; then
GUIX_PROFILE="$profile"
. "$GUIX_PROFILE"/etc/profile
fi
unset profile
fi
done
More information can be found in the Guix Cookbook or the Guix Manual.
System
config.scm and supporting files for use with guix system reconfigure
Scripts
The scripts
directory contains pure sh scripts for system administration.
Installation
This is an overview of how I install Guix. This is for me, so it might not be useful to anyone else. I might make this into a pair of shell scripts, but I'll keep track of the steps here.
- Boot installer, edit grub commandline to blacklist amdgpu, optionally pcspkr and sp5100_tco
- Install, using cell tethering if necessary
- Blacklist amdgpu on first boot, clone guix-config, modify filesystems as needed
guix pull && sudo guix system reconfigure ~/.config/guix/config.scm
- Reboot into proper system, now in GUI
- Configure network, change keybindings, switch themes
guix pull && guix home reconfigure ~/.config/guix/home
git config --global user.name "jts" && git config --global user.email "jtsims@pm.me"
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d; emacs
- While those run, sign into Firefox account in Epiphany, then email, then gits
- Sign into Firefox, corporate platforms
- Modify .desktop files for Emacs and DrRacket as follows:
Emacs
cp ~/.guix-profile/share/applications/emacs.desktop ~/.local/share/applications/spacemacs.desktop
nvim ~/.local/share/applications/spacemacs.desktop
Name=Spacemacs Exec=emacs %F Icon=/home/jts/.emacs.d/core/banners/img/spacemacs.png
DrRacket
cp ~/.guix-profile/share/racket/pkgs/drracket/drracket/drracket.desktop ~/.local/share/applications/
nvim ~/.local/share/applications/drracket.desktop
Icon=/home/jts/.guix-profile/share/racket/pkgs/drracket/drracket/drracket.png
- Edit .spacemacs as desired and
SPC q R
orSPC q q
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo && flatpak install flathub im.riot.Riot com.discordapp.Discord
- Login to chat platforms (IRC in Spacemacs, Matrix in Element, Discord)
- Reboot, everything should be ready; gc or whatever now
- (Optional)
cp $(guix image --image-type=iso6990 ~/.config/guix/config.scm) Téléchargements/guix-jts.iso
Usage
Using dedicated profiles for sets of packages, as well as Guix home management, changes the dynamics of using Guix from the default workflow. Here are some notes to avoid getting lost.
Installing Packages
The usual guix install
still works, but there are two other ways to install
packages as well, and the dynamics of installation are different.
guix install
- temporary; packages will be removed at nextguix home reconfigure
- adding to home/config.scm - permanent; packages will be part of the default profile
- adding dedicated profile - permanent; packages will be in loaded profiles; for logical sets of multiple packages
Upgrading
This is a much more complex process for a full upgrade. Things always start
with guix pull
and the system is still guix system reconfigure
d, but profiles
require special handling, as does the home environment cum default profile.
There are two ways to upgrade the default profile's packages. guix upgrade
works just fine if no changes have been made to the home configuration. If
changes have been made, though, run guix home reconfigure
.
Upgrading non-default profiles is more involved. Essentially, each must be
upgraded with the path to the profile root as the final argument to
guix upgrade -p
. Alternatively, one may use
guix package -m path/to/manifest.scm -p path/to/profile/root
to recreate the
profile whole. This is best done by looping over profiles/*.
If one merely wishes to upgrade packages in all loaded profiles, guix upgrade
works just fine.
"scripts/full-upgrade" uses the preferred method for a full upgrade of all profiles.
Garbage Collection
When deleting past generations, there are now more places to find them. There are generations for system configurations, home configurations, the default profile (distinct from the home), and each special profile.
The system and home generations are deleted with guix system|home delete-generations [pattern]
.
The default profile generations are deleted with guix packages --delete-generations [pattern]
.
Special profiles are deleted similarly to the default profile, but their root
directory's path must be passed to the -p
flag, eg
guix package --delete-generations [pattern] -p path/to/profile/root
. This is
done most efficiently by looping over "profiles/*".
"scripts/full-gc" deletes all previous generations of all profiles.