guix-config

Configuration files for Guix

git clone https://git.8pit.net/guix-config.git

  1;; This Guix Home configuration is intentionally very simple and
  2;; essentially limited to the installation of packages and the
  3;; configuration of user services. Configuration files are managed
  4;; without Guix Home.
  5
  6(define-module (guix-home-config)
  7  #:use-module (guix records)
  8  #:use-module (gnu home)
  9  #:use-module (gnu home services)
 10  #:use-module (gnu home services desktop)
 11  #:use-module (gnu home services shells)
 12  #:use-module (gnu home services sound)
 13  #:use-module (gnu packages)
 14  #:use-module (gnu packages linux)
 15  #:use-module (gnu services)
 16  #:use-module (gnu system shadow))
 17
 18(define packages-desktop
 19  '("adwaita-icon-theme"
 20    "alacritty"
 21    "bemenu"
 22    "creek"
 23    "firefox"
 24    "river"
 25    "waylock"
 26    "wl-clipboard"
 27    "wlr-randr"
 28    "wlsunset"))
 29
 30(define packages-documents
 31  '("mandoc"))
 32
 33(define packages-font
 34  '("fontconfig"
 35    "font-terminus-patched"
 36    "font-terminus-patched:otb"
 37    "font-google-noto"
 38    "font-google-noto-emoji"
 39    "font-dejavu"))
 40
 41(define packages-networking
 42  '("bind:utils"
 43    "iproute2"
 44    "mosh"
 45    "mtr"
 46    "whois"))
 47
 48(define packages-multimedia
 49  '("ncmpc"
 50    "mpv"
 51    "pipewire"
 52    "wireplumber"
 53    "yt-dlp"))
 54
 55(define packages-programming
 56  '("curl"
 57    "clang"
 58    "gcc-toolchain"
 59    "git"
 60    "make"
 61    "neovim"
 62    "python"
 63    "universal-ctags"))
 64
 65(define packages-tools
 66  '("chimerautils"
 67    "cryptsetup"
 68    "file"
 69    "fzf"
 70    "htop"
 71    "ripgrep"
 72    "strace"
 73    "tmux"
 74    "tree"))
 75
 76(define my-packages
 77  (append
 78    packages-desktop
 79    packages-documents
 80    packages-font
 81    packages-networking
 82    packages-multimedia
 83    packages-programming
 84    packages-tools))
 85
 86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 87
 88(define (my-essential-services he)
 89  ;; I don't want Guix home to overwrite my ~/.profile.
 90  ;; Therefore, I remove the services responsible for that.
 91  (filter
 92    (lambda (s)
 93      ;; The home-shell-profile creates the ~/.profile file.
 94      (not (eqv? (service-type-name (service-kind s)) 'home-shell-profile)))
 95    (home-environment-essential-services he)))
 96
 97(define home-config
 98  (let ((home-environment-base
 99          ;; Need to set packages here, otherwise the essential services
100          ;; operate on an empty package set and no package is installed.
101          (home-environment
102            (packages (specifications->packages my-packages)))))
103    (home-environment
104      ;; Awful hack to change the default essential services.
105      (inherit home-environment-base)
106      (essential-services
107        (my-essential-services home-environment-base))
108
109      (services
110        (append
111          (list
112            (service home-dbus-service-type)
113            (service home-pipewire-service-type
114                     (home-pipewire-configuration
115                       (enable-pulseaudio? #t))))
116          %base-home-services)))))
117
118home-config