aboutsummaryrefslogtreecommitdiff
path: root/systems/h4x.scm
blob: 55b606b25735563c93ea747007cc017576372243 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
;; This is an operating system configuration template
;; for a "desktop" setup with GNOME and Xfce where the
;; root partition is encrypted with LUKS, and a swap file.

(use-modules (guix)
             (guix utils)
             (gnu)
             (gnu system nss)
             (nongnu packages linux)
             (nongnu packages mozilla)
             (nongnu packages printers)
             (nongnu system linux-initrd))
(use-service-modules avahi
                     base
                     cups
                     dbus
                     desktop
                     linux
                     mcron
                     networking
                     nix
                     security-token
                     xorg)
(use-package-modules admin
                     aspell
                     base
                     bash
                     bittorrent
                     bootloaders
                     certs
                     code
                     compression
                     cryptsetup
                     cups
                     disk
                     ebook
                     emacs
                     engineering
                     entr
                     file
                     fontutils
                     fonts
                     freedesktop
                     gawk
                     gimp
                     gnome
                     gnupg
                     graphviz
                     groff
                     gstreamer
                     idutils
                     image
                     kde
                     less
                     libusb
                     linux
                     lsof
                     music
                     ncdu
                     networking
                     nfs
                     package-management
                     password-utils
                     patchutils
                     parallel
                     pciutils
                     pv
                     rsync
                     rust-apps
                     security-token
                     ssh
                     shells
                     shellutils
                     sync
                     terminals
                     textutils
                     time
                     tls
                     tmux
                     version-control
                     video
                     vim
                     vpn
                     w3m
                     web
                     wget
                     wordnet
                     xorg)

(define garbage-collector-job
  #~(job "5 0 * * *"
         "guix gc -F 1G"))

(operating-system
 ;; (kernel linux)
 ;; (firmware linux-firmware)
 (initrd microcode-initrd)
 (host-name "h4x")
 (timezone "America/Boise")
 (locale "en_US.utf8")
 (keyboard-layout (keyboard-layout "us" #:options '("ctrl:nocaps")))

 (bootloader (bootloader-configuration
              (bootloader grub-bootloader)
              (terminal-outputs '(console))
              (targets (list "/dev/disk/by-id/wwn-0x5002538e000c21b7"
                             "/dev/disk/by-id/wwn-0x5002538e40de02bf"))
              (keyboard-layout keyboard-layout)))

 (initrd-modules (append (list "dm-raid" "raid1")
                         %base-initrd-modules))

 (mapped-devices
  (list
   (mapped-device
    (source (list "/dev/sda2" "/dev/sdb2"))
    (target "/dev/md0")
    (type raid-device-mapping))
   (mapped-device
    (source (uuid "80e61014-c20d-428e-b7f2-c4dd206a3ade"))
    (target "luks-80e61014-c20d-428e-b7f2-c4dd206a3ade")
    (type luks-device-mapping))))

 (file-systems (append
                (list (file-system
                       (device (uuid "4bceee1a-23e3-484a-965c-04707e81b1f8"))
                       (mount-point "/")
                       (type "ext4")
                       (dependencies mapped-devices)))
                %base-file-systems))

 ;; Specify a swap file for the system, which resides on the
 ;; root file system.
 (swap-devices
  (list (swap-space
         (target "/swapfile")
         (dependencies mapped-devices))))

 (users (cons (user-account
               (name "kb")
               (password (crypt "alice" "$6$abc"))
               (group "users")
               (supplementary-groups '("wheel" "netdev"
                                       "audio" "video")))
              %base-user-accounts))

 ;; This is where we specify system-wide packages.
 (packages (append (list
                    aria2
                    aspell-dict-en
                    bash-completion
                    calibre
                    cryptsetup
                    diffstat
                    diffutils
                    dos2unix
                    dot2tex
                    emacs
                    entr
                    ethtool
                    exiv2
                    fd
                    fdisk
                    ffmpeg
                    file
                    findutils
                    firefox
                    font-dejavu
                    font-google-noto
                    fontconfig
                    ;; freecad
                    fzf
                    gawk
                    gimp
                    git
                    gnome-tweaks
                    gnupg
                    gnutls
                    gptfdisk
                    grep
                    groff
                    gstreamer
                    gst-plugins-bad
                    gst-plugins-base
                    gst-plugins-good
                    gst-plugins-ugly
                    gvfs
                    hplip
                    hplip-plugin
                    htop
                    iotop
                    iperf
                    jq
                    kcachegrind
                    kitty
                    less
                    lsof
                    ltrace
                    mtr
                    ncdu
                    nfs-utils
                    nmap
                    nss-certs
                    okular
                    openssh
                    openssl
                    parallel
                    patch
                    patchutils
                    pciutils
                    perf
                    picard
                    progress
                    pv
                    pwgen
                    rclone
                    renameutils
                    ripgrep
                    rsync
                    sed
                    smartmontools
                    socat
                    stow
                    strace
                    tar
                    tcpdump
                    time
                    tmux
                    tree
                    unzip
                    util-linux
                    vim
                    vlc
                    w3m
                    wget
                    which
                    whois
                    wireguard-tools
                    wordnet
                    xdg-utils
                    xev
                    xfsprogs
                    xkill
                    xz
                    yubikey-personalization
                    zip
                    zsh
                    zsh-syntax-highlighting)
                   %base-packages))

 ;; Add GNOME and Xfce---we can choose at the log-in screen
 ;; by clicking the gear.  Use the "desktop" services, which
 ;; include the X11 log-in service, networking with
 ;; NetworkManager, and more.
 (services (append (list (service gnome-desktop-service-type)
                         ;;(geoclue-service)
                         (service cups-service-type)
                         (set-xorg-configuration
                          (xorg-configuration
                           (keyboard-layout keyboard-layout)))
                         (service nix-service-type)
                         (service pcscd-service-type)
                         (simple-service 'my-cron-jobs
                                         mcron-service-type
                                         (list garbage-collector-job)))
                   %kbg-desktop-services))

 ;; Allow resolution of '.local' host names with mDNS.
 (name-service-switch %mdns-host-lookup-nss))