summaryrefslogtreecommitdiffstats
path: root/Guix.org
diff options
context:
space:
mode:
Diffstat (limited to 'Guix.org')
-rw-r--r--Guix.org276
1 files changed, 0 insertions, 276 deletions
diff --git a/Guix.org b/Guix.org
deleted file mode 100644
index e2c9ef8..0000000
--- a/Guix.org
+++ /dev/null
@@ -1,276 +0,0 @@
1#+TITLE: Guix Configuration file
2
3* Resources
4[[https://guix.gnu.org/manual/en/html_node/index.html][guix]]
5[[https://github.com/daviwil/dotfiles/blob/master/Systems.org][daviwil/dotfiles]]
6
7* Managing profiles
8Source: [[https://github.com/daviwil/dotfiles/blob/master/Systems.org#profile-management][daviwil/dotfiles]]
9** Activate profiles
10
11#+begin_src sh :tangle bin/activate-profiles :shebang #!/bin/sh
12 # Source: https://github.com/daviwil/dotfiles/blob/master/Systems.org#profile-management
13
14 GREEN='\033[1;32m'
15 RED='\033[1;30m'
16 NC='\033[0m'
17 GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
18
19 profiles=$*
20 if [[ $# -eq 0 ]]; then
21 profiles="$HOME/.config/guix/manifests/*.scm";
22 fi
23
24 for profile in $profiles; do
25 # Remove the path and file extension, if any
26 profileName=$(basename $profile)
27 profileName="${profileName%.*}"
28 profilePath="$GUIX_EXTRA_PROFILES/$profileName"
29 manifestPath=$HOME/.config/guix/manifests/$profileName.scm
30
31 if [ -f $manifestPath ]; then
32 echo
33 echo -e "${GREEN}Activating profile:" $manifestPath "${NC}"
34 echo
35
36 mkdir -p $profilePath
37 guix package --manifest=$manifestPath --profile="$profilePath/$profileName"
38
39 # Source the new profile
40 GUIX_PROFILE="$profilePath/$profileName"
41 if [ -f $GUIX_PROFILE/etc/profile ]; then
42 . "$GUIX_PROFILE"/etc/profile
43 else
44 echo -e "${RED}Couldn't find profile:" $GUIX_PROFILE/etc/profile "${NC}"
45 fi
46 else
47 echo "No profile found at path" $profilePath
48 fi
49 done
50
51#+end_src
52
53** Update profiles
54
55#+begin_src sh :tangle bin/update-profiles :shebang #!/bin/sh
56 # Source: https://github.com/daviwil/dotfiles/blob/master/Systems.org#profile-management
57
58 GREEN='\033[1;32m'
59 NC='\033[0m'
60 GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
61
62 profiles=$*
63 if [[ $# -eq 0 ]]; then
64 profiles="$GUIX_EXTRA_PROFILES/*";
65 fi
66
67 for profile in $profiles; do
68 profileName=$(basename $profile)
69 profilePath=$GUIX_EXTRA_PROFILES/$profileName
70
71 echo
72 echo -e "${GREEN}Updating profile:" $profilePath "${NC}"
73 echo
74
75 guix package --profile="$profilePath/$profileName" --manifest="$HOME/.config/guix/manifests/$profileName.scm"
76 done
77
78#+end_src
79
80* Channels
81#+begin_src scheme :tangle .config/guix/channels.scm
82 (list
83 (channel
84 (name 'guix)
85 (url "https://git.savannah.gnu.org/git/guix.git")
86 ;; (url "file:///home/daviwil/Projects/Code/guix"))
87 (introduction
88 (make-channel-introduction
89 "9edb3f66fd807b096b48283debdcddccfea34bad"
90 (openpgp-fingerprint
91 "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))
92 (channel
93 (name 'nonguix)
94 (url "https://gitlab.com/nonguix/nonguix")
95 ;; Enable signature verification:
96 (introduction
97 (make-channel-introduction
98 "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
99 (openpgp-fingerprint
100 "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))))
101#+end_src
102
103* Systems
104** Base
105
106#+begin_src scheme :tangle .config/guix/systems/base-system.scm
107
108 (define-module (base-system)
109 #:use-module (gnu)
110 #:use-module (gnu services pm)
111 #:use-module (gnu services docker)
112 #:use-module (gnu services networking)
113 #:use-module (gnu services virtualization) ; todo make
114 #:use-module (gnu packages vim)
115 #:use-module (gnu services desktop)
116 #:use-module (gnu packages xorg)
117 #:use-module (gnu packages emacs)
118 #:use-module (gnu packages file-systems)
119 #:use-module (gnu packages linux)
120 #:use-module (gnu packages audio)
121 #:use-module (gnu packages pulseaudio)
122 #:use-module (gnu packages version-control)
123 #:use-module (gnu packages package-management))
124 ; #:use-module (nongnu packages linux)
125 ; #:use-module (nongnu system linux-initrd))
126
127 (use-service-modules ssh)
128 (use-package-modules certs)
129 (use-service-modules desktop xorg)
130#+end_src
131
132*Packages*
133 #+begin_src scheme :noweb-ref packages :noweb yes
134
135 ;; Packages
136 (packages (append (list
137 git
138 exfat-utils
139 fuse-exfat
140 stow
141 vim
142 emacs
143 bluez
144 bluez-alsa
145 pulseaudio
146 tlp
147 ncurses
148 xf86-input-libinput
149 nss-certs) ;; For https connection
150 %base-packages))
151
152 #+end_src
153
154 *Services*
155 #+begin_src scheme :noweb-ref services :noweb yes
156
157 ;; Services
158 (services
159 (append
160 (list
161
162 (service elogind-service-type)
163 (service openssh-service-type)
164 (service network-manager-service-type)
165 (service slim-service-type)
166 (service tlp-service-type
167 (tlp-configuration
168 (cpu-boost-on-ac? #t)
169 (wifi-pwr-on-bat? #t)))
170 (bluetooth-service #:auto-enable? #t)
171 (service docker-service-type)
172 (service wpa-supplicant-service-type))
173 (service libvirt-service-type
174 (libvirt-configuration
175 (unix-sock-group "libvirt")
176 (tls-port "16555")))
177 (set-xorg-configuration
178 (xorg-configuration
179 (keyboard-layout keyboard-layout)))
180
181 %base-services))
182
183 #+end_src
184
185 *Users Accounts*
186 #+begin_src scheme :noweb-ref users :noweb yes
187
188 ;; Users
189 (users (cons (user-account
190 (name "jakub")
191 (comment "Jakub Dlugosz")
192 (group "users")
193 (home-directory "/home/jakub")
194 (supplementary-groups '(
195 "wheel"
196 "netdev"
197 "kvm"
198 "tty"
199 "input"
200 "docker"
201 "lp"
202 "audio"
203 "video")))
204 %base-user-accounts))
205
206#+end_src
207
208*Base operating system*
209#+begin_src scheme :tangle .config/guix/systems/base-system.scm :noweb yes
210
211 (define-public base-operating-system
212 (operating-system
213 (host-name "base")
214 (timezone "Europe/Warsaw")
215 (locale "en_US.utf8")
216 (keyboard-layout (keyboard-layout "pl"))
217
218 ;; Use non-free Linux and firmware
219 ;; (kernel linux)
220 ;; (firmware (list linux-firmware))
221 ;; (initrd microcode-initrd)
222
223 (bootloader (bootloader-configuration
224 (bootloader grub-efi-bootloader)
225 (targets "/boot/efi")))
226 ;; (keyboard-layout keyboard-layout)))
227
228 ;; Guix doesn't like it when there isn't a file-systems
229 ;; entry, so add one that is meant to be overridden
230 (file-systems (cons*
231 (file-system
232 (mount-point "/tmp")
233 (device "none")
234 (type "tmpfs")
235 (check? #f))
236 %base-file-systems))
237 <<users>>
238 <<packages>>
239 <<services>>
240 ;; Allow resolution of '.local' host names with mDNS
241 (name-service-switch %mdns-host-lookup-nss)))
242
243#+end_src
244
245** Systems
246*** Viking
247
248#+begin_src scheme :tangle .config/guix/systems/viking.scm
249 (define-module (viking)
250 #:use-module (base-system)
251 #:use-module (gnu))
252
253 (operating-system
254 (inherit base-operating-system)
255 (host-name "viking")
256
257 (bootloader
258 (bootloader-configuration
259 (bootloader grub-bootloader)
260 (target "/dev/sda")))
261
262 (mapped-devices
263 (list (mapped-device
264 (source
265 (uuid "75a1ebd7-13c2-442f-80ff-1b5e59522e29"))
266 (target "cryptroot")
267 (type luks-device-mapping))))
268
269 (file-systems
270 (cons* (file-system
271 (mount-point "/")
272 (device "/dev/mapper/cryptroot")
273 (type "ext4")
274 (dependencies mapped-devices))
275 %base-file-systems)))
276#+end_src