summaryrefslogtreecommitdiff
path: root/ikaruga-os.scm
blob: ac341bbbdd96dca82114ce04b28938d9c50579c3 (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
;;; Copyright © 2022 David Thompson <davet@gnu.org>
;;;
;;; This program is free software; you can redistribute it and/or
;;; modify it under the terms of the GNU General Public License as
;;; published by the Free Software Foundation; either version 3 of the
;;; License, or (at your option) any later version.
;;;
;;; This program is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;;; General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program.  If not, see
;;; <http://www.gnu.org/licenses/>.

;;; Commentary:
;;
;; Laptop OS configuration.
;;
;; To update using this OS configuration, run:
;;
;;    guix system reconfigure ikaruga.scm

(use-modules (gnu)
             (gnu services cups)
             (gnu services desktop)
             (gnu services games)
             (gnu services pm)
             (nongnu packages linux)
             (nongnu system linux-initrd))

(operating-system
 (locale "en_US.utf8")
 (timezone "America/New_York")
 (keyboard-layout (keyboard-layout "us"))
 (host-name "ikaruga")
 (bootloader (bootloader-configuration
              (bootloader grub-efi-bootloader)
              (targets (list "/boot/efi"))
              (keyboard-layout keyboard-layout)))
 ;; Use regular Linux with the big bad proprietary firmware blobs.
 (kernel linux)
 (initrd microcode-initrd)
 ;; sof-firmware is required for sound to work, linux-firmware takes
 ;; care of everything else.
 (firmware (list sof-firmware linux-firmware))
 (users (cons* (user-account
                (name "dave")
                (comment "David Thompson")
                (group "users")
                (home-directory "/home/dave")
                (supplementary-groups
                 '("audio"
                   "kvm" ; for running VMs
                   "lp" ; for bluetooth
                   "netdev"
                   "video"
                   "wheel"))) ; for sudo
               %base-user-accounts))
 (packages (append (list (specification->package "nss-certs"))
                   %base-packages))
 (services (modify-services (cons* (service gnome-desktop-service-type)
                                   (service bluetooth-service-type)
                                   (service thermald-service-type)
                                   (service joycond-service-type)
                                   (service cups-service-type
                                            (cups-configuration
                                             (web-interface? #t)
                                             (extensions
                                              (list (specification->package "cups-filters")
                                                    (specification->package "brlaser")))))
                                   %desktop-services)
             ;; Get nonguix substitutes.
             (guix-service-type config =>
                                (guix-configuration
                                 (inherit config)
                                 (substitute-urls
                                  (append (list "https://substitutes.nonguix.org")
                                          %default-substitute-urls))
                                 (authorized-keys
                                  (append (list (local-file "keys/nonguix-signing-key.pub"))
                                          %default-authorized-guix-keys))))))
 (mapped-devices (list (mapped-device
                        (source (uuid "02b1ffb4-d868-4e5f-ab9b-8be3092e3a3c"))
                        (target "cryptroot")
                        (type luks-device-mapping))))
 (file-systems (cons* (file-system
                        (mount-point "/boot/efi")
                        (device (uuid "91D3-F76B" 'fat32))
                        (type "vfat"))
                      (file-system
                        (mount-point "/")
                        (device "/dev/mapper/cryptroot")
                        (type "ext4")
                        (dependencies mapped-devices))
                      %base-file-systems))
 (name-service-switch %mdns-host-lookup-nss))