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 all10 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
).
pay-respects
-
pay-respects12 is a command line program that suggests corrections on incorrect commands. You can use the suggestion by pressing
F
(to pay respects). 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.
hyprpolkitagent
-
hyprpolkitagent6 is the polkit agent of the Hyprland ecosystem.
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.
swww-next
-
Updated version of swww16.
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_PATH
environment variable, to set the configuration file’s path (asripgrep
doesn’t have a predefined one), and the~/.config/ripgrep/config
file.As an example, here is how you would configure
ripgrep
to 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
pre
only 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:
default
pcre2
auto
pcre2
is 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.
ripgrep
does 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
ripgrep
to 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
0
chooses 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
ripgrep
from searching across different file systems. type
(type: maybe-string)-
Limit
ripgrep
to search only files of the defined types. For a lis of supported file types, invokerg --type-list
in your shell. type-not
(type: maybe-string)-
Instruct
ripgrep
to avoid searching in files of the specified types . For a list of supported file types, invokerg --type-list
in your shell. type-add
(type: maybe-string)-
Define new
ripgrep
types.Note
At first, the plan was to use a list of alists here (and in other fields) like in
home-bash-configuration
aliases. 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:
never
auto
always
ansi
ansi
is 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:
default
none
file
grep+
kitty
macvim
textmate
vscode
vscode-insiders
vscodium
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:
none
path
modified
accessed
created
sort
(type: maybe-string)-
Sort results in descending order following the given criteria. Accepted values are:
none
path
modified
accessed
created
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
swww
from 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
swww
package to be used. Defaults to this channel’sswww-next
. 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-service
that 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).
6 “Hyprwm/hyprpolkitagent” (2025). Hypr Development. Available at: https://github.com/hyprwm/hyprpolkitagent (Accessed: February 12, 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).
10 CaskaydiaCove and CaskaydiaMono are excluded, as regular Cascadia Code already includes Nerd Fonts.
11 Gallant, A. (2025) “Burntsushi/ripgrep.” Available at: https://github.com/BurntSushi/ripgrep (Accessed: March 5, 2025).
12 iff (2025) “iff/pay-respects.” Available at: https://codeberg.org/iff/pay-respects (Accessed: March 7, 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).
16 Faé, L.G. (2025) “Lgfae/swww.” Available at: https://github.com/LGFae/swww (Accessed: April 10, 2025).