This repository contains GUIX package defintions maintained primarily by Franz Geffke.
(cons* (channel
(name 'pantherx)
(url "https://codeberg.org/gofranz/panther.git")
;; Enable signature verification
(introduction
(make-channel-introduction
"54b4056ac571611892c743b65f4c47dc298c49da"
(openpgp-fingerprint
"A36A D41E ECC7 A871 1003 5D24 524F EB1A 9D33 C9CB"))))
%default-channels)Darkman is a framework for managing dark/light mode transitions. It automatically switches themes based on sunrise/sunset times.
Usage:
(use-modules (px home services darkman))
;; Default configuration (uses geoclue2 for location)
(service home-darkman-service-type)
;; With manual coordinates
(service home-darkman-service-type
(home-darkman-configuration
(latitude 52.52)
(longitude 13.405)
(use-geoclue? #f)))
;; Custom configuration
(service home-darkman-service-type
(home-darkman-configuration
(latitude 37.7749)
(longitude -122.4194)
(use-geoclue? #f)
(dbus-server? #t)
(portal? #f)))Mode-switching scripts:
Place executable scripts in:
~/.local/share/dark-mode.d/- Executed when switching to dark mode~/.local/share/light-mode.d/- Executed when switching to light mode
Manual control:
darkman get # Show current mode
darkman set dark # Switch to dark mode
darkman set light # Switch to light mode
darkman toggle # Toggle between modesFoot server mode runs the foot terminal emulator as a background daemon, allowing fast terminal startup with footclient.
Usage:
(use-modules (px home services foot))
;; Default configuration
(service home-foot-server-service-type)
;; With custom config file
(service home-foot-server-service-type
(home-foot-server-configuration
(config-file "/path/to/foot.ini")))
;; With hold option (remain open after child exits)
(service home-foot-server-service-type
(home-foot-server-configuration
(hold? #t)))Connecting to server:
footclient # Open new terminal window
footclient -- htop # Open terminal running specific commandService management:
herd start foot-server # Start server
herd stop foot-server # Stop server
herd status foot-server # Check statusTailscale is a zero-config VPN built on WireGuard.
Usage:
(use-modules (px services networking))
(service tailscale-service-type)After reconfiguration:
tailscale up # Authenticate and connect
tailscale status # Check connection statusThis channel provides pre-configured building blocks for Guix system definitions. Import with:
(use-modules (px system panther))| Variable | Description |
|---|---|
%panther-base-packages |
Extends %base-packages with wpa-supplicant, libimobiledevice, neovim |
%panther-desktop-packages |
Adds U2F/FIDO2 support (pam-u2f, libu2f-*) and blueman |
| Variable | Description |
|---|---|
%panther-base-services |
Extends %base-services with panther channel and substitute servers |
%panther-desktop-services |
Full desktop services including display managers, audio, and udev rules for security tokens |
%panther-desktop-services-minimal |
Desktop services without login/display managers and audio (for custom greeter setups) |
| Variable | Description |
|---|---|
%panther-os |
Base OS with %panther-base-services and %panther-base-packages |
%panther-desktop-os |
Desktop OS with %panther-desktop-services and %panther-desktop-packages |
- Headless server: Use
%panther-osdirectly or inherit from it - Desktop with GDM/SDDM: Use
%panther-desktop-osor%panther-desktop-services - Desktop with custom greeter (greetd, etc.): Use
%panther-desktop-services-minimalto avoid conflicts
Inherit from an OS definition and customize:
(operating-system
(inherit %panther-os)
(host-name "my-workstation")
(timezone "Europe/Berlin")
;; Add your file-systems, users, etc.
(services
(cons* (service openssh-service-type)
%panther-base-services)))Or use just the services/packages in your own OS:
(operating-system
;; ...your configuration...
(packages
(cons* my-extra-package
%panther-desktop-packages))
(services
(modify-services %panther-desktop-services-minimal
(elogind-service-type config =>
(elogind-configuration
(inherit config)
(handle-lid-switch 'suspend))))))When things break because of upstream changes, this will allow you to run a future guix commit, to fix and test the channel without updating the whole system.
Create a channels file that includes only the guix channel:
(list (channel
(name 'guix)
(url "https://codeberg.org/guix/guix.git")
(branch "master")
;; Specify commit
(commit "dc1a77267f03e37b331c8597b066c5ee52a75445")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
(openpgp-fingerprint
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))Spawn a shell for a clean environment:
guix shell --container --nesting --network openssl nss-certs coreutils guixAnd build the target package:
guix time-machine --channels=default-channel.scm -- build -L panther pimsync- Channel modules shadowed by system profile (bug #74396): After
guix pull, new package versions may not be available until you also runguix system reconfigure. Workaround: keep system and user guix in sync, or useguix time-machine -C ~/.config/guix/channels.scm -- shell <package>.