Guix channel featuring many packages that will probably make their way upstream, as I’ll probably not package proprietary software (and even if I did, I’d just upstream it to Nonguix instead).
Modules are in the layout of Guix source.
Use this for adding this channel to your configuration:
(cons* (channel
(name 'selected-guix-works)
(url "https://github.com/gs-101/selected-guix-works.git")
(branch "main")
(introduction
(make-channel-introduction
"5d1270d51c64457d61cd46ec96e5599176f315a4"
(openpgp-fingerprint
"C780 21F7 34E4 07EB 9090 0CF1 4ACA 6D6F 89AB 3162"))))
%default-channels)This channel includes all Nerd Fonts3. A meta package is available under the name of fonts-nerd-fonts, with all other packages following the same naming convention (fonts-nerd-fonts-inconsolata).
hyprqt6engine-
hyprqt6egnine19 is the Qt theme engine of the Hyprland ecosystem. Think of it as like a qt6ct20.
qt5ct-kde-
qt5ct-kde21 is a version of qt5ct22 from the Arch User Repository (AUR) patched to work with KDE applications.
qt6ct-kde
gitu-
gitu13 is a terminal user interface for Git inspired by Magit14. It features Vim-like keybinds by default, but that can be configured.
rust-stakeholder-
rust-stakeholder15 is a joke program that generates nonsensical terminal output that makes it seem like you’re busy. Makes for a nice screensaver.
git-credential-keepassxc-
git-credential-keepassxc17 is a
gitcredential helper. It allows the use of KeePassXC as a source for passwords in command-line applications.
hyprshot-
hyprshot7 is a shell script designed for optimizing screenshot utilities for Hyprland. It uses grim8 to take the screenshot, and slurp9 to select an area.
non-nixos-gpu-service-type-
Service used to load the GPU driver service generated by home-manager24. Add it to your system definition after running the
non-nixos-gpu-setupscript.
Warning
GNU Shepherd service hasn’t been added to home-manager yet. Wait until nix-community/home-manager#8382 is merged to use this service.
home-ripgrep-service-type-
Service used to configure ripgrep11, a search tool inspired by
grep.ripgrep’s configuration consists of its command flags.Below is the documentation of this service (based on the Guix manual format):
The
(selected-guix-works home services rust-apps)module provides services for configuring applications built on Rust.Currently, the only available service is for ripgrep, a fast file-searching tool inspired by grep.
The service reference is given below.
- Variable:
home-ripgrep-service-type -
This is the service type for
ripgrep. Its value must be ahome-ripgrep-configuration, as shown below. It provides theRIPGREP_CONFIG_PATHenvironment variable, to set the configuration file’s path (asripgrepdoesn’t have a predefined one), and the~/.config/ripgrep/configfile.As an example, here is how you would configure
ripgrepto search inside compressed files, while 5 lines shown as context before and after a match:(service home-ripgrep-service-type (home-ripgrep-configuration (search-zip? #t) (context 5))) - Variable:
home-ripgrep-configuration -
Fields were picked by choice, based on if they were useful to put in a configuration file or not. Here they are:
pre(type: maybe-string)-
Run a command before search, searching its output instead of files.
pre-glob(type: maybe-string)-
Run the command defined on
preonly on the specified globs. search-zip?(type: maybe-boolean)-
Whether to search the inside compressed files.
crlf?(type: maybe-boolean)-
Whether to treat ‘\r\n’ as a line terminator. This is what is used in Windows.
engine(type: maybe-string)-
Specify the regular expression engine. Accepted values are:
defaultpcre2auto
pcre2is useful for features such as look-around or backreferences. fixed-strings?(type: maybe-boolean)-
Whether to treat all patterns as string literals, to avoid escaping.
max-count(type: maybe-integer)-
Limit the number of matching lines per file by the given number. 0 disables search altogether.
mmap?(type: maybe-boolean)-
Whether to search using memory maps.
ripgrepdoes this automatically, and it’s useful for searching singile files. multiline?(type: maybe-boolean)-
Whether to search across multiple lines. This allows for regualr expressions containing ‘\n’.
multiline-dotall?(type: maybe-boolean)-
Whether using ‘.’ to match any character should also match line terminators.
regex-size-limit(type: maybe-string)-
The maximum size a compiled regular expression can have. Useful when one explicitly wants
ripgrepto spend a longer time building a regex matcher. The value is a number with a suffix, which are:K- Kilobytes
M- Megabytes
G- Gigabytes
No suffix is assumed to be bytes.
smart-case?(type: maybe-boolean)-
Whether to enable case-sensitive search only when a pattern character is capitalized.
text?(type: maybe-boolean)-
Whether to search binary files as if they were text. Beware, as this may end up passing escape sequences to your terminal.
threads(type: maybe-integer)-
The number of threads used for search. The default of
0chooses the number automatically. word-regexp?(type: maybe-boolean)-
Whether to show only matches surrounded by word boundaries. This is the equivalent of surrounding every match with ‘\b{start-half}’ and ‘\b{end-half}’.
binary?(type: maybe-boolean)-
Whether to search binary files, without converting them to text. Stops search when a match is found.
follow?(type: maybe-boolean)-
Whether to follow symbolic links.
glob(type maybe-string)-
Define a glob, for including or excluding matches.
hidden?(type: maybe-boolean)-
Whether to search hidden files or directories (those prefixed with a ‘.’);
max-depth(type: maybe-integer)-
The maximum depth search can descend.
max-filesize(type: maybe-string)-
The maximum files size that can be searched. Does not apply to directories. Follows the same schema of
regex-size-limit:K- Kilobytes
M- Megabytes
G- Gigabytes
Where no suffix is assumed to be bytes.
one-file-system?(type: maybe-boolean)-
Whether to stop
ripgrepfrom searching across different file systems. type(type: maybe-string)-
Limit
ripgrepto search only files of the defined types. For a lis of supported file types, invokerg --type-listin your shell. type-not(type: maybe-string)-
Instruct
ripgrepto avoid searching in files of the specified types . For a list of supported file types, invokerg --type-listin your shell. type-add(type: maybe-string)-
Define new
ripgreptypes.Note
At first, the plan was to use a list of alists here (and in other fields) like in
home-bash-configurationaliases. I don’t know how I’d do that, so this was discarded. I’ll ask in my upstream submission how this could be done. after-context(type: maybe-integer)-
Show the given number of lines after the match as context.
before-context(type: maybe-integer)-
Show the given number of lines after the match as context.
color(type: maybe-string)-
When to show colors. Accepted values are:
neverautoalwaysansi
ansiis more compatible with Windows. colors(type: maybe-string)-
Specify colors in a {type}:{attribute}:{value} structure.
column?(type: maybe-boolean)-
Whether to display column numbers. Enabling it also enables
line-number?. context(type: maybe-integer)-
Shpw the given number of lines before and after the match as context.
context-separator(type: maybe-string)-
Separator used to separate the match from the cotnext
field-context-separator(type: maybe-string)-
Separator used to separate elements not part of the file, suach as the file path, line numbers and colors from the context lines.
field-match-separator(type: maybe-string)-
Separator used to separate elements not part of the file, such as the file path, line numbers and colors from the context lines.
hyperlink-format(type: maybe-string)-
“The format used to display hyperlinks to the results. A format string can be used, but there are also some predefined aliases:
defaultnonefilegrep+kittymacvimtextmatevscodevscode-insidersvscodium
include-zero?(type: maybe-boolean)-
Whether to show the number of matches even if the number is zero.
line-number?(type: maybe-boolean)-
Whether to show line numbers. Enabled automatically with
column?. max-columns(type: maybe-integer)-
The maximum number of columns to display in a line match. Lines with matches over this limit will be removed from the results.
max-columns-preview?(type: maybe-boolean)-
Whether to show a preview of matched lines over the limit of
max-columns, instead of removing the matched lines. only-matching?(type: maybe-boolean)-
Whether to show only the matched parts of a matching line in a separate output line.
passthru?(type: maybe-boolean)-
Whether to print all lines in a file with a match, highlighting the matches.
sort(type: maybe-string)-
Sort results in ascending order following the given criteria. Accepted values are:
nonepathmodifiedaccessedcreated
sort(type: maybe-string)-
Sort results in descending order following the given criteria. Accepted values are:
nonepathmodifiedaccessedcreated
trim?(type: maybe-boolean)-
Whether to trim whitespace at the beginning of each line.
extra-content(default: “”) (type: string)-
Extra content appended as-is to the configuration file.
- Variable:
home-swww-service-type-
Service used to configure swww16, a wallpaper manager for your Wayland session (most likely a window manager for one to use this).
I wouldn’t recommend you to use this service, because, first it came to me as an epiphany: I was having issues with the version available in Guix, then hastely wrote a service to see it would help (it did not)—secondly, you can probably just start
swwwfrom your window manager. Hyprland at least support for this.Well, with my warning message left, onwards with the documentation:
The
(selected-guix-works home services wm)module provides services for configuring applications proper for a window manager-based system.Currently, the only available service is for swww, a wallpaper manager.
The service reference is given below.
- Variable:
home-swww-service-type -
Service used to configure
swww. Its value could be ahome-swww-configuration, detailed in the next sentences, but the default should suffice. - Variable:
home-swww-configuration -
The most notable one is
extra-options.swww(file-like)-
The
swwwpackage to be used. extra-options(list-of-strings)-
Command-line arguments to be passed to the
swww-daemon.
- Variable:
This module holds procedures for simplifying configurations.
home-profile-package-service-
Takes a string referring to the name of a package. This returns a
simple-servicethat contains the package name, adding it to the current home profile. It turns this:(simple-service 'home-emacs-master-pgtk-service home-profile-service-type (list (specification->package "emacs-master-pgtk")))
Into this:
(home-profile-package-service "emacs-master-pgtk")
It also supports a list of package names, with the first package being used for the name of the service.
The name comes from the Aphex Twin album series “Selected Ambient Works”. I have an interest in ambient-like music, such as drone metal, so I had to check out his work, and I have to say I quite enjoyed it.
My favourite of his works is “Expert Knob Twiddlers”, it has an album cover as silly as its name.
3 McIntyre, R.L. (2025) “Ryanoasis/nerd-fonts.” Available at: https://github.com/ryanoasis/nerd-fonts (Accessed: February 10, 2025).
4 “Hyprwm/hyprpaper” (2025). Hypr Development. Available at: https://github.com/hyprwm/hyprpaper (Accessed: February 10, 2025).
5 “Hyprwm/hyprland” (2025). Hypr Development. Available at: https://github.com/hyprwm/Hyprland (Accessed: February 10, 2025).
7 Gustash (2024) “Gustash/hyprshot.” Available at: https://github.com/Gustash/Hyprshot (Accessed: February 13, 2025).
8 Ser, S. (2025) “emersion/grim.” Available at: https://sr.ht/~emersion/grim (Accessed: February 13, 2025).
9 Ser, S. (2025) “emersion/slurp.” Available at: https://github.com/emersion/slurp (Accessed: February 13, 2025).
11 Gallant, A. (2025) “Burntsushi/ripgrep.” Available at: https://github.com/BurntSushi/ripgrep (Accessed: March 5, 2025).
13 altsem (2025) “altsem/gitu.” Available at: https://github.com/altsem/gitu (Accessed: March 14, 2025).
14 “magit/magit” (2025). Magit. Available at: https://github.com/magit/magit (Accessed: March 15, 2025).
15 giacomo- b (2025) “Giacomo-b/rust-stakeholder.” Available at: https://github.com/giacomo-b/rust-stakeholder (Accessed: April 2, 2025).
17 Zhang, F. (2025) “Frederick888/git-credential-keepassxc.” Available at: https://github.com/Frederick888/git-credential-keepassxc (Accessed: April 18, 2025).
18 Mattias (2025) “Lassekongo83/adw-gtk3.” Available at: https://github.com/lassekongo83/adw-gtk3 (Accessed: April 25, 2025).
19 “Hyprwm/hyprqt6engine” (2025). Hypr Development. Available at: https://github.com/hyprwm/hyprqt6engine (Accessed: December 21, 2025).
20 Kotov, I. (2025) “Trialuser02/qt6ct.” Available at: https://github.com/trialuser02/qt6ct (Accessed: December 21, 2025).
21 ilya-fedin (2024) “Qt5ct-kde.” Available at: https://aur.archlinux.org/packages/qt5ct-kde (Accessed: December 29, 2025).
22 trialuser02 (2025) “Qt5ct.” Available at: https://sourceforge.net/projects/qt5ct/ (Accessed: December 29, 2025).
23 ilya-fedin (2025) “Qt6ct-kde.” Available at: https://aur.archlinux.org/packages/qt6ct-kde (Accessed: December 29, 2025).
24 “Nix-community/home-manager” (2026). Nix community projects. Available at: https://github.com/nix-community/home-manager (Accessed: January 3, 2026).