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

284 lines
8.3 KiB
Org Mode

# -*- mode: org; coding: utf-8; -*-
#+title: a GUIX home config
#+property: header-args :tangle home-configuration.scm
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
#+name: timestamp
#+BEGIN_SRC sh :results output code :tangle no
echo ";; -*- mode: scheme; coding: utf-8; -*-
;;
;; tangled from home-configuration.org on `date --rfc-3339 seconds`)"
#+end_src
#+begin_src scheme :noweb yes
<<timestamp()>>
#+end_src
** use-modules
#+BEGIN_SRC scheme
(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))
#+END_SRC
* 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)
#+BEGIN_SRC scheme
(home-environment
(packages (specifications->packages
(list
#+END_SRC
*** generally useful
#+BEGIN_SRC scheme
"emacs-guix"
"emacs-next"
"libreoffice"
"rsync"
"gnupg"
"crda"
"htop"
"tree"
"password-store"
"tomb"
"rbw"
#+END_SRC
*** KDE packages
various features not installed as part of =plasma-desktop-service=
#+BEGIN_SRC scheme
"dolphin-plugins"
"spectacle" ;; screencapture
"akonadi" ;; PIM
"kamoso" ;; webcam
"okular" ;; doc viewer
#+END_SRC
*** terminal
kitty config located in =dotfiles/.config/kitty/kitty.conf=
#+BEGIN_SRC scheme
"kitty"
#+END_SRC
*** Mail
#+BEGIN_SRC scheme
"icedove" ;; aka thunderbird
"getmail6"
"notmuch"
#+END_SRC
*** graphics
drivers for opengl, opencl, vulkan, etc and some apps
#+BEGIN_SRC scheme
"mesa" "mesa-opencl" "vulkan-loader" "vulkan-tools"
"scribus"
"inkscape"
"gimp"
"imagemagick"
#+END_SRC
*** music, sound & noise
#+BEGIN_SRC scheme
"supercollider"
"tidal"
"ardour"
"audacity"
"qpwgraph"
"patchage"
"aubio"
"ffmpeg"
#+END_SRC
*** programming, dev & ops
#+BEGIN_SRC scheme :session
"guile"
"sbcl"
"racket"
"python"
"gcc-toolchain"
"git" "git:send-email"
"cryptsetup"
"glances"
"file"
#+END_SRC
*** research & reading
#+BEGIN_SRC scheme :session
"zotero"
#+END_SRC
*** network & interconnect
#+BEGIN_SRC scheme
"librewolf"
;; "nyxt"
"nextcloud-client"
"nmap"
"w3m"
"bind:utils"
#+END_SRC
*** fonts & typography
#+BEGIN_SRC scheme :session
"font-monaspace"
"font-recursive"
"font-fira-sans"
"font-fira-mono"
"font-victor-mono"
#+END_SRC
*** Hardware
#+BEGIN_SRC scheme
"lm-sensors"
"dmidecode"
"lshw"
"hwinfo"
"acpi"
))) ;; end packages
#+END_SRC
** services
The list of home services. To search for available services run =guix home search KEYWORD= in a terminal.
#+BEGIN_SRC scheme
(services
(list
#+END_SRC
*** channels
Additional channels → nonguix (aka “The GUIX Channel That Shall Not Be Named”) & zzkt (local particulars)
#+BEGIN_SRC scheme
(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"))))))
#+END_SRC
*** environment / variables
#+BEGIN_SRC scheme
(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"))))
#+END_SRC
*** zsh shell
zsh (and/or completions and/or [[https://lists.gnu.org/archive/html/help-guix/2020-06/msg00005.html][help-guix]])
=$fpath= contains =/run/current-system/profile/share/zsh/site-functions=
#+BEGIN_SRC scheme
(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")))
#+END_SRC
the zsh dotfiles are added manually rather than using dotfiles-service (duplicate errors when managed by =home-dotfiles-service= )
#+BEGIN_SRC scheme
(zshenv
(list (local-file "dotfiles/.config/zsh/.zshenv" "zshenv")))
(zshrc
(list (local-file "dotfiles/.config/zsh/.zshrc" "zshrc")))))))
#+END_SRC
*** gnupg
#+BEGIN_SRC scheme
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(pinentry-program
(file-append pinentry-qt "/bin/pinentry-qt"))
(ssh-support? #t)))
#+END_SRC
*** dotfiles
(see [[https://guix.gnu.org/manual/devel/en/html_node/Essential-Home-Services.html][guix docs]] and note about zsh config)
#+BEGIN_SRC scheme
(service home-dotfiles-service-type
(home-dotfiles-configuration
(layout 'plain)
(directories (list "dotfiles"))
(excluded
'(".*~" ".*\\.swp" "\\.git" "\\.gitignore"
".zshenv" ".zshrc"))))
#+END_SRC
*** ssh & sundry
(see also [[https://guix.gnu.org/manual/devel/en/html_node/Secure-Shell.html][guix manual]])
#+BEGIN_SRC scheme
;; ssh config in 'dotfiles'
#+END_SRC
*** syncthing
using [[https://syncthing.net/][syncthing]] for local & point-to-point filesync across machines (see also nextcloud)
#+BEGIN_SRC scheme
(service home-syncthing-service-type)
#+END_SRC
*** sound
via pipewire which requires dbus (see also [[https://guix.gnu.org/manual/devel/en/html_node/Sound-Home-Services.html][guix manual]])
#+BEGIN_SRC scheme
(service home-dbus-service-type)
(service home-pipewire-service-type
(home-pipewire-configuration
(enable-pulseaudio? #t)))
#+END_SRC
*** fonts
(see -> https://guix.gnu.org/manual/devel/en/html_node/Fonts-Home-Services.html)
#+BEGIN_SRC scheme
)) ;; end services
#+END_SRC
* FIN
#+BEGIN_SRC scheme
) ;; end home-environment
#+END_SRC