https://github.com/gs-101/selected-guix-works
Guix channel featuring assorted packages.
https://github.com/gs-101/selected-guix-works
guix-channel hyprland nerd-fonts
Last synced: 4 months ago
JSON representation
Guix channel featuring assorted packages.
- Host: GitHub
- URL: https://github.com/gs-101/selected-guix-works
- Owner: gs-101
- License: gpl-3.0
- Created: 2025-01-28T13:19:09.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-06-24T00:08:19.000Z (4 months ago)
- Last Synced: 2025-06-26T00:03:25.666Z (4 months ago)
- Topics: guix-channel, hyprland, nerd-fonts
- Language: Scheme
- Homepage:
- Size: 403 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- Changelog: NEWS
- License: LICENSE
Awesome Lists containing this project
README
#+title: Selected Guix Works
#+OPTIONS: f:tGuix 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.
* Channel Definition
Use this for adding this channel to your configuration:
#+begin_src scheme
(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)
#+end_src* Packages
** Fonts
*** Nerd Fonts
This channel includes all Nerd Fonts[fn:3]. 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=).
** Rust Apps
- =pay-respects= ::
pay-respects[fn:12] is a command line program that suggests corrections on incorrect commands. You can use the suggestion by pressing =F= (to pay respects).
- =gitu= ::
gitu[fn:13] is a terminal user interface for Git inspired by Magit[fn:14]. It features Vim-like keybinds by default, but [[https://github.com/altsem/gitu/blob/master/src/default_config.toml][that can be configured]].
- =rust-stakeholder= ::
rust-stakeholder[fn:15] 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-keepassxc[fn:17] is a =git= credential helper. It allows the use of KeePassXC as a source for passwords in command-line applications.
** Window Management
- =hyprpolkitagent= ::
hyprpolkitagent[fn:6] is the polkit agent of the Hyprland ecosystem.
- =hyprshot= ::
hyprshot[fn:7] is a shell script designed for optimizing screenshot utilities for Hyprland. It uses grim[fn:8] to take the screenshot, and slurp[fn:9] to select an area.
- =swww-next= ::
Updated version of swww[fn:16].
* Services
** Home
- ~home-ripgrep-service-type~ ::
Service used to configure ripgrep[fn:11], 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 [[https://github.com/BurntSushi/ripgrep][ripgrep]], a fast file-searching tool inspired by [[https://www.man7.org/linux/man-pages/man1/grep.1.html][grep]].
The service reference is given below.
- Variable: ~home-ripgrep-service-type~ ::
This is the service type for =ripgrep=. Its value must be a ~home-ripgrep-configuration~, as shown below. It provides the ~RIPGREP_CONFIG_PATH~ environment variable, to set the configuration file's path (as =ripgrep= 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:
#+begin_src scheme
(service home-ripgrep-service-type
(home-ripgrep-configuration
(search-zip? #t)
(context 5)))
#+end_src- 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= :: GigabytesNo 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= :: GigabytesWhere 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, invoke =rg --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, invoke =rg --type-list= in your shell.
- ~type-add~ (type: maybe-string) ::
Define new =ripgrep= types.
#+begin_quote
[!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.
#+end_quote- ~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.
- ~home-swww-service-type~ ::
Service used to configure swww[fn:16], 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 [[https://github.com/LGFae/swww][swww]], a wallpaper manager.
The service reference is given below.
- Variable: ~home-swww-service-type~ ::
Service used to configure =swww=. Its value could be a ~home-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's =swww-next=.
- ~extra-options~ (list-of-strings) ::
Command-line arguments to be passed to the =swww-daemon=.
* Utilities
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:
#+begin_src scheme
(simple-service 'home-emacs-master-pgtk-service
home-profile-service-type
(list (specification->package "emacs-master-pgtk")))
#+end_srcInto this:
#+begin_src scheme
(home-profile-package-service "emacs-master-pgtk")
#+end_srcIt also supports a list of package names, with the first package being used for the name of the service.
* The Name
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.
* References
[fn:3] McIntyre, R.L. (2025) “Ryanoasis/nerd-fonts.” Available at: https://github.com/ryanoasis/nerd-fonts (Accessed: February 10, 2025).
[fn:4] “Hyprwm/hyprpaper” (2025). Hypr Development. Available at: https://github.com/hyprwm/hyprpaper (Accessed: February 10, 2025).
[fn:5] “Hyprwm/hyprland” (2025). Hypr Development. Available at: https://github.com/hyprwm/Hyprland (Accessed: February 10, 2025).
[fn:6] “Hyprwm/hyprpolkitagent” (2025). Hypr Development. Available at: https://github.com/hyprwm/hyprpolkitagent (Accessed: February 12, 2025).
[fn:7] Gustash (2024) “Gustash/hyprshot.” Available at: https://github.com/Gustash/Hyprshot (Accessed: February 13, 2025).
[fn:8] Ser, S. (2025) “emersion/grim.” Available at: https://sr.ht/~emersion/grim (Accessed: February 13, 2025).
[fn:9] Ser, S. (2025) “emersion/slurp.” Available at: https://github.com/emersion/slurp (Accessed: February 13, 2025).
[fn:11] Gallant, A. (2025) “Burntsushi/ripgrep.” Available at: https://github.com/BurntSushi/ripgrep (Accessed: March 5, 2025).
[fn:12] iff (2025) “iff/pay-respects.” Available at: https://codeberg.org/iff/pay-respects (Accessed: March 7, 2025).
[fn:13] altsem (2025) “altsem/gitu.” Available at: https://github.com/altsem/gitu (Accessed: March 14, 2025).
[fn:14] “magit/magit” (2025). Magit. Available at: https://github.com/magit/magit (Accessed: March 15, 2025).
[fn:15] giacomo- b (2025) “Giacomo-b/rust-stakeholder.” Available at: https://github.com/giacomo-b/rust-stakeholder (Accessed: April 2, 2025).
[fn:16] Faé, L.G. (2025) “Lgfae/swww.” Available at: https://github.com/LGFae/swww (Accessed: April 10, 2025).
[fn:17] Zhang, F. (2025) “Frederick888/git-credential-keepassxc.” Available at: https://github.com/Frederick888/git-credential-keepassxc (Accessed: April 18, 2025).
[fn:18] Mattias (2025) “Lassekongo83/adw-gtk3.” Available at: https://github.com/lassekongo83/adw-gtk3 (Accessed: April 25, 2025).