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