guix/config/home-configuration.org
2024-10-29 11:47:54 +01:00

8.3 KiB

A semi-literate config for GUIX home

  • generate config with org-babel-tangle (bound to C-c C-v t)
  • rebuild with guix home reconfigure home-configuration.scm (or similar)

header

generate a header and timestamp if required

echo ";; -*- mode: scheme;  coding: utf-8; -*-
;;
;; tangled from home-configuration.org on `date --rfc-3339 seconds`)"
<<timestamp()>>

use-modules

(use-modules (gnu)
             (gnu home)
             (gnu services)
             (gnu packages)
             (gnu packages gnupg)
             (gnu packages shells)
             (gnu home services)
             (gnu home services guix)
             (gnu home services shells)
             (gnu home services dotfiles)
             (gnu home services desktop)
             (gnu home services sound)
             (gnu home services gnupg)
             (guix channels)
             (guix gexp))

home environment

packages

Packages that will show up in the home profile under ~/.guix-home/profile (this setup might make more sense split into several composible profiles or project based manifest files)

(home-environment
 (packages (specifications->packages
            (list

generally useful

"emacs-guix"
"emacs-next"
"libreoffice"
"rsync"
"gnupg"
"crda"
"htop"
"tree"
"password-store"
"tomb"
"rbw"

KDE packages

various features not installed as part of plasma-desktop-service

"dolphin-plugins"
"spectacle"         ;; screencapture
"akonadi"           ;; PIM
"kamoso"            ;; webcam
"okular"            ;; doc viewer

terminal

kitty config located in dotfiles/.config/kitty/kitty.conf

"kitty"

Mail

"icedove" ;; aka thunderbird
"getmail6"
"notmuch"

graphics

drivers for opengl, opencl, vulkan, etc and some apps

"mesa" "mesa-opencl" "vulkan-loader" "vulkan-tools"
"scribus"
"inkscape"
"gimp"
"imagemagick"

music, sound & noise

"supercollider"
"tidal"
"ardour"
"audacity"
"qpwgraph"
"patchage"
"aubio"
"ffmpeg"

programming, dev & ops

"guile"
"sbcl"
"racket"
"python"
"gcc-toolchain"
"git" "git:send-email"
"cryptsetup"
"glances"
"file"

research & reading

"zotero"

network & interconnect

"librewolf"
;; "nyxt"
"nextcloud-client"
"nmap"
"w3m"
"bind:utils"

fonts & typography

"font-monaspace"
"font-recursive"
"font-fira-sans"
"font-fira-mono"
"font-victor-mono"

Hardware

"lm-sensors"
"dmidecode"
"lshw"
"hwinfo"
"acpi"
))) ;; end packages

services

The list of home services. To search for available services run guix home search KEYWORD in a terminal.

(services
  (list

channels

Additional channels → nonguix (aka “The GUIX Channel That Shall Not Be Named”) & zzkt (local particulars)

(simple-service 'variant-packages-service
                home-channels-service-type
                (list
                 (channel
                  (name 'nonguix)
                  (url "https://gitlab.com/nonguix/nonguix")
                  (branch "master")
                  (introduction
                   (make-channel-introduction
                    "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
                    (openpgp-fingerprint
                     "2A39 3FFF 68F4 EF7A 3D29  12AF 6F51 20A0 22FB B2D5"))))
                 (channel
                  (name 'zzkt)
                  (url "https://gitlab.com/zzkt/guix")
                  (branch "endless")
                  (commit
                   "02cdb798288a79e77e2b42f712c64b758de22499")
                  (introduction
                   (make-channel-introduction
                    "fc0ada85de1980e1fc9ee50672d827c0c17c3e7d"
                    (openpgp-fingerprint
                     "24A7 4604 91E6 A60F 5BB4  A00F 989F 5E6E DB47 8160"))))))

environment / variables

(simple-service 'variant-env-vars-service
                 home-environment-variables-service-type
                 `(("GUIX_LOCPATH" . "$HOME/.guix-profile/lib/locale")
                   ("NOTMUCH_CONFIG" . "$XDG_CONFIG_HOME/notmuch/notmuch.conf")
                   ("LD_LIBRARY_PATH" . "$HOME/.guix-profile/lib")
                   ("GPG_TTY" . "$TTY")
                   ("SHELL" . ,(file-append zsh "/bin/zsh"))))

zsh shell

zsh (and/or completions and/or help-guix) $fpath contains /run/current-system/profile/share/zsh/site-functions

(service home-zsh-service-type
         (home-zsh-configuration
          ;; configs in $XDG_CONFIG_HOME/zsh
          (xdg-flavor? #t)
          (environment-variables
           '(("HISTFILE" . "$HOME/.config/zsh/.history")
             ("HISTSIZE" . "800000")
             ("SAVEHIST" . "800000")))

the zsh dotfiles are added manually rather than using dotfiles-service (duplicate errors when managed by home-dotfiles-service )

(zshenv
 (list (local-file "dotfiles/.config/zsh/.zshenv" "zshenv")))
(zshrc
 (list (local-file "dotfiles/.config/zsh/.zshrc" "zshrc")))))))

gnupg

(service home-gpg-agent-service-type
         (home-gpg-agent-configuration
          (pinentry-program
           (file-append pinentry-qt "/bin/pinentry-qt"))
          (ssh-support? #t)))

dotfiles

(see guix docs and note about zsh config)

(service home-dotfiles-service-type
         (home-dotfiles-configuration
          (layout 'plain)
          (directories (list "dotfiles"))
          (excluded
           '(".*~" ".*\\.swp" "\\.git" "\\.gitignore"
             ".zshenv" ".zshrc"))))

ssh & sundry

(see also guix manual)

;; ssh config in 'dotfiles'

syncthing

using syncthing for local & point-to-point filesync across machines (see also nextcloud)

(service home-syncthing-service-type)

sound

via pipewire which requires dbus (see also guix manual)

(service home-dbus-service-type)

(service home-pipewire-service-type
         (home-pipewire-configuration
          (enable-pulseaudio? #t)))

fonts

(see -> https://guix.gnu.org/manual/devel/en/html_node/Fonts-Home-Services.html)

)) ;; end services

FIN

) ;; end home-environment