284 lines
8.3 KiB
Org Mode
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
|