summaryrefslogtreecommitdiff
path: root/suweren/system.scm
blob: d7797e37a944aaf2799716d776f577f64c7fe603 (about) (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
(define-module (suweren system)
  #:use-module (gnu services)		; modify-services
  #:use-module (gnu services base)      ; guix-configuration
					; guix-service-type
					; login-configuration
					; login-service-type
  #:use-module (gnu services desktop)   ; %desktop-services
					; plasma-desktop-service-type
  #:use-module (gnu services sddm)      ; sddm-configuration
					; sddm-service-type
  #:use-module (gnu services xorg)      ; gdm-service-type
  #:use-module (gnu system)		; operating-system
  #:use-module (gnu system shadow)	; %base-user-accounts
  #:use-module (guix channels)          ; %default-channels
  #:use-module (guix gexp)		; plain-file
  )

;; record guix-configuration ->
;; record guix-configuration
(define (guix configuration)
  (let* ((deployment-commit "c24ce7cb11e74da13d491f9de3c4b7040a069f43")
	 (distribution-commit "7d17bded11ef1239592e6e5abd40ceee1e99cbb8")
	 (marekpasnikowski-fingerprint
	  (openpgp-fingerprint "590E 500F E39D 26B3 E60B 743B 6D81 B120 7711 899F"))
	 (nonguix-commit "897c1a470da759236cc11798f4e0a5f7d4d59fbc")
	 (nonguix-fingerprint
	  (openpgp-fingerprint "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))

	 (deployment-introduction (make-channel-introduction deployment-commit
							     marekpasnikowski-fingerprint))
	 (deployment-url "https://git.marekpasnikowski.pl/git/deployment.git")
	 (distribution-introduction (make-channel-introduction distribution-commit
							       marekpasnikowski-fingerprint))
	 (distribution-url "https://git.marekpasnikowski.pl/git/distribution.git")
	 (nonguix-authorized-guix-key-content
	  (string-append
	   "(public-key \n"
	   "(ecc \n"
	   "(curve Ed25519) \n"
	   "(q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#))) \n"))
	 (nonguix-authorized-guix-key-name "nonguix-authorized-guix-key")
	 (nonguix-introduction (make-channel-introduction nonguix-commit
							  nonguix-fingerprint))
	 (nonguix-url "https://gitlab.com/nonguix/nonguix")

	 (deployment (channel (name 'deployment)
			      (url deployment-url)
			      (introduction deployment-introduction)))
	 (distribution (channel (name 'distribution)
				(url distribution-url)
				(introduction distribution-introduction)))
	 (nonguix (channel (name 'nonguix)
			   (url nonguix-url)
			   (introduction nonguix-introduction)))
	 (nonguix-key (plain-file nonguix-authorized-guix-key-name
				  nonguix-authorized-guix-key-content))

	 (nonguix-authorized-guix-keys (list nonguix-key))
	 (nonguix-substitute-urls (list "https://substitutes.nonguix.org"))
	 (suweren-channels (list deployment
				 distribution
				 nonguix))

	 (%default-authorized-guix-keys* (append %default-authorized-guix-keys
						 nonguix-authorized-guix-keys))
	 (%default-channels* (append %default-channels
				     suweren-channels))
	 (%default-substitute-urls* (append %default-substitute-urls
					    nonguix-substitute-urls))
	 (extra-options* (list "--gc-keep-derivations=yes"
			       "--gc-keep-outputs=yes")))
    (guix-configuration (inherit configuration)
			(channels %default-channels*)
			(authorized-keys %default-authorized-guix-keys*)
			(substitute-urls %default-substitute-urls*)
			(extra-options extra-options*))))

;; record login-configuration ->
;; record login-configuration
(define (login configuration)
  (login-configuration (inherit configuration)
		       (allow-empty-passwords? #f)))

;; record package ->
;; record bootloader-configuration ->
;; record package ->
;; (record package) ->
;; string ->
;; (record file-system) ->
;; (record user-account) ->
;; record operating-system
(define-public (%suweren-operating-system kernel*
					  bootloader-configuration*
					  initrd*
					  firmware*
					  host-name*
					  file-systems*
					  users*)
  (let* ((sddm-configuration* (sddm-configuration (theme "breeze")))

	 (plasma-desktop (service plasma-desktop-service-type))
	 (sddm (service sddm-service-type
			sddm-configuration*))

	 (%desktop-services* (modify-services %desktop-services
					      (delete gdm-service-type)
					      (guix-service-type configuration
								 =>
								 (guix configuration))
					      (login-service-type configuration
								  =>
								  (login configuration))))
	 (suweren-services (list plasma-desktop
				 sddm))

	 (services* (append %desktop-services*
			    suweren-services))
	 (users* (append %base-user-accounts
			 users*)))
    (operating-system (kernel kernel*)
		      (bootloader bootloader-configuration*)
		      (initrd initrd*)
		      (firmware firmware*)
		      (host-name host-name*)
		      (file-systems file-systems*)
		      (users users*)
		      (services services*))))