2024-02-07 17:24:32 +00:00
# -*- 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
2024-02-09 13:01:22 +00:00
** use-modules
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
(use-modules (gnu)
2024-03-19 14:14:46 +00:00
(gnu home)
2024-02-07 18:16:54 +00:00
(gnu services)
2024-02-08 10:13:13 +00:00
(gnu packages)
2024-02-07 17:24:32 +00:00
(gnu packages gnupg)
2024-02-07 18:16:54 +00:00
(gnu packages shells)
(gnu home services)
(gnu home services guix)
2024-02-07 17:24:32 +00:00
(gnu home services shells)
2024-02-07 18:16:54 +00:00
(gnu home services dotfiles)
(gnu home services desktop)
(gnu home services sound)
2024-02-08 10:13:13 +00:00
(gnu home services gnupg)
(guix channels)
(guix gexp))
2024-02-07 17:24:32 +00:00
#+END_SRC
2024-02-09 13:01:22 +00:00
* home environment
** packages
2024-04-14 11:48:11 +00:00
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)
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
(home-environment
(packages (specifications->packages
(list
2024-02-09 13:01:22 +00:00
#+END_SRC
*** generally useful
#+BEGIN_SRC scheme
2024-02-07 17:24:32 +00:00
"emacs-guix"
"emacs-next"
2024-03-04 21:54:13 +00:00
"libreoffice"
2024-02-07 17:24:32 +00:00
"rsync"
"gnupg"
"crda"
"htop"
2024-03-04 21:54:13 +00:00
"tree"
2024-02-07 17:24:32 +00:00
"password-store"
2024-04-14 11:48:11 +00:00
"tomb"
"rbw"
2024-02-09 13:01:22 +00:00
#+END_SRC
*** KDE packages
2024-10-29 10:47:54 +00:00
various features not installed as part of =plasma-desktop-service=
2024-02-09 13:01:22 +00:00
#+BEGIN_SRC scheme
2024-03-19 22:04:32 +00:00
"dolphin-plugins"
2024-10-29 10:47:54 +00:00
"spectacle" ;; screencapture
"akonadi" ;; PIM
"kamoso" ;; webcam
"okular" ;; doc viewer
2024-02-09 13:01:22 +00:00
#+END_SRC
*** terminal
2024-03-19 22:04:32 +00:00
kitty config located in =dotfiles/.config/kitty/kitty.conf=
2024-02-09 13:01:22 +00:00
#+BEGIN_SRC scheme
2024-03-04 21:54:13 +00:00
"kitty"
2024-02-09 13:01:22 +00:00
#+END_SRC
*** Mail
#+BEGIN_SRC scheme
2024-03-19 14:14:46 +00:00
"icedove" ;; aka thunderbird
2024-03-04 21:54:13 +00:00
"getmail6"
"notmuch"
2024-02-09 13:01:22 +00:00
#+END_SRC
*** graphics
2024-10-29 10:47:54 +00:00
drivers for opengl, opencl, vulkan, etc and some apps
2024-02-09 13:01:22 +00:00
#+BEGIN_SRC scheme
2024-10-29 10:47:54 +00:00
"mesa" "mesa-opencl" "vulkan-loader" "vulkan-tools"
2024-03-04 21:54:13 +00:00
"scribus"
"inkscape"
"gimp"
2024-02-09 13:01:22 +00:00
"imagemagick"
#+END_SRC
*** music, sound & noise
#+BEGIN_SRC scheme
2024-03-04 21:54:13 +00:00
"supercollider"
"tidal"
"ardour"
"audacity"
2024-02-07 17:24:32 +00:00
"qpwgraph"
2024-03-07 14:41:42 +00:00
"patchage"
2024-04-14 11:48:11 +00:00
"aubio"
"ffmpeg"
2024-02-09 13:01:22 +00:00
#+END_SRC
2024-03-07 14:41:42 +00:00
*** programming, dev & ops
#+BEGIN_SRC scheme :session
"guile"
"sbcl"
"racket"
"python"
"gcc-toolchain"
"git" "git:send-email"
2024-10-29 10:47:54 +00:00
"cryptsetup"
"glances"
"file"
#+END_SRC
*** research & reading
#+BEGIN_SRC scheme :session
"zotero"
2024-03-07 14:41:42 +00:00
#+END_SRC
2024-03-04 21:54:13 +00:00
*** network & interconnect
#+BEGIN_SRC scheme
2024-04-14 11:48:11 +00:00
"librewolf"
2024-03-19 22:04:32 +00:00
;; "nyxt"
2024-03-04 21:54:13 +00:00
"nextcloud-client"
2024-03-19 22:04:32 +00:00
"nmap"
"w3m"
2024-04-14 13:00:04 +00:00
"bind:utils"
2024-03-04 21:54:13 +00:00
#+END_SRC
2024-03-07 14:41:42 +00:00
*** fonts & typography
#+BEGIN_SRC scheme :session
"font-monaspace"
"font-recursive"
"font-fira-sans"
"font-fira-mono"
"font-victor-mono"
#+END_SRC
2024-02-09 13:01:22 +00:00
*** Hardware
#+BEGIN_SRC scheme
2024-02-07 17:24:32 +00:00
"lm-sensors"
"dmidecode"
"lshw"
"hwinfo"
"acpi"
2024-02-09 13:01:22 +00:00
))) ;; end packages
2024-02-07 17:24:32 +00:00
#+END_SRC
2024-02-09 13:01:22 +00:00
** services
2024-02-08 10:13:13 +00:00
The list of home services. To search for available services run =guix home search KEYWORD= in a terminal.
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
(services
(list
#+END_SRC
2024-02-09 13:01:22 +00:00
*** channels
2024-02-07 17:24:32 +00:00
2024-02-08 10:13:13 +00:00
Additional channels → nonguix (aka “The GUIX Channel That Shall Not Be Named”) & zzkt (local particulars)
2024-02-07 17:24:32 +00:00
#+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
2024-03-19 22:04:32 +00:00
"02cdb798288a79e77e2b42f712c64b758de22499")
2024-02-07 17:24:32 +00:00
(introduction
(make-channel-introduction
"fc0ada85de1980e1fc9ee50672d827c0c17c3e7d"
(openpgp-fingerprint
"24A7 4604 91E6 A60F 5BB4 A00F 989F 5E6E DB47 8160"))))))
#+END_SRC
2024-02-09 13:01:22 +00:00
*** environment / variables
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
2024-02-07 18:16:54 +00:00
(simple-service 'variant-env-vars-service
2024-02-07 17:24:32 +00:00
home-environment-variables-service-type
2024-03-04 21:54:13 +00:00
`(("GUIX_LOCPATH" . "$HOME/.guix-profile/lib/locale")
2024-03-19 14:14:46 +00:00
("NOTMUCH_CONFIG" . "$XDG_CONFIG_HOME/notmuch/notmuch.conf")
2024-02-07 17:24:32 +00:00
("LD_LIBRARY_PATH" . "$HOME/.guix-profile/lib")
2024-03-07 14:41:42 +00:00
("GPG_TTY" . "$TTY")
2024-02-07 17:24:32 +00:00
("SHELL" . ,(file-append zsh "/bin/zsh"))))
#+END_SRC
2024-02-09 13:01:22 +00:00
*** zsh shell
2024-02-07 17:24:32 +00:00
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
2024-02-07 18:16:54 +00:00
(service home-zsh-service-type
(home-zsh-configuration
;; configs in $XDG_CONFIG_HOME/zsh
(xdg-flavor? #t)
(environment-variables
2024-04-14 11:48:11 +00:00
'(("HISTFILE" . "$HOME/.config/zsh/ .history")
2024-02-07 18:16:54 +00:00
("HISTSIZE" . "800000")
2024-04-14 13:00:04 +00:00
("SAVEHIST" . "800000")))
2024-03-19 14:14:46 +00:00
#+END_SRC
2024-04-14 11:48:11 +00:00
the zsh dotfiles are added manually rather than using dotfiles-service (duplicate errors when managed by =home-dotfiles-service= )
2024-03-19 14:14:46 +00:00
#+BEGIN_SRC scheme
2024-04-14 11:48:11 +00:00
(zshenv
(list (local-file "dotfiles/.config/zsh/ .zshenv" "zshenv")))
(zshrc
2024-04-14 13:00:04 +00:00
(list (local-file "dotfiles/.config/zsh/ .zshrc" "zshrc")))))))
2024-02-07 17:24:32 +00:00
#+END_SRC
2024-02-09 13:01:22 +00:00
*** gnupg
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
2024-02-07 18:16:54 +00:00
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(pinentry-program
2024-02-23 12:09:11 +00:00
(file-append pinentry-qt "/bin/pinentry-qt"))
2024-02-07 18:16:54 +00:00
(ssh-support? #t)))
2024-02-07 17:24:32 +00:00
#+END_SRC
2024-02-09 13:01:22 +00:00
*** dotfiles
2024-04-14 11:48:11 +00:00
(see [[https://guix.gnu.org/manual/devel/en/html_node/Essential-Home-Services.html ][guix docs ]] and note about zsh config)
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
2024-03-19 14:14:46 +00:00
(service home-dotfiles-service-type
(home-dotfiles-configuration
(layout 'plain)
(directories (list "dotfiles"))
(excluded
2024-04-14 11:48:11 +00:00
'(".*~" ".* \\.swp" "\\.git" "\\.gitignore"
".zshenv" ".zshrc"))))
2024-02-07 17:24:32 +00:00
#+END_SRC
2024-02-09 13:01:22 +00:00
*** ssh & sundry
2024-03-19 14:14:46 +00:00
(see also [[https://guix.gnu.org/manual/devel/en/html_node/Secure-Shell.html ][guix manual ]])
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
2024-02-08 10:13:13 +00:00
;; ssh config in 'dotfiles'
2024-02-07 17:24:32 +00:00
#+END_SRC
2024-08-02 09:17:40 +00:00
*** 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
2024-02-09 13:01:22 +00:00
*** sound
2024-10-29 10:47:54 +00:00
via pipewire which requires dbus (see also [[https://guix.gnu.org/manual/devel/en/html_node/Sound-Home-Services.html ][guix manual ]])
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
2024-02-07 18:16:54 +00:00
(service home-dbus-service-type)
(service home-pipewire-service-type
(home-pipewire-configuration
(enable-pulseaudio? #t)))
2024-02-07 17:24:32 +00:00
#+END_SRC
2024-02-09 13:01:22 +00:00
*** fonts
2024-10-29 10:47:54 +00:00
(see -> https://guix.gnu.org/manual/devel/en/html_node/Fonts-Home-Services.html)
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
2024-02-09 13:01:22 +00:00
)) ;; end services
2024-02-07 17:24:32 +00:00
#+END_SRC
2024-02-09 13:01:22 +00:00
* FIN
2024-02-07 17:24:32 +00:00
#+BEGIN_SRC scheme
2024-02-09 13:01:22 +00:00
) ;; end home-environment
2024-02-07 17:24:32 +00:00
#+END_SRC