An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          

#+title: Selected Guix Works
#+OPTIONS: f:t

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.

* 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= :: 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, 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_src

Into this:

#+begin_src scheme
(home-profile-package-service "emacs-master-pgtk")
#+end_src

It 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).