diff options
author | Ryan Schanzenbacher <ryan@rschanz.org> | 2023-05-16 23:52:36 -0400 |
---|---|---|
committer | Ryan Schanzenbacher <ryan@rschanz.org> | 2023-05-16 23:52:36 -0400 |
commit | 4fe3a734d104fa1836255b18f8d8bcf4aeaa407f (patch) | |
tree | 6e26d0b474a1d26ecf60d3dfea51c2f0e5afa7e5 /system.scm | |
parent | b081473eaa08537dee157d6810de49ca71adf0e1 (diff) |
CACerts now populate correctly
Diffstat (limited to 'system.scm')
-rw-r--r-- | system.scm | 91 |
1 files changed, 39 insertions, 52 deletions
@@ -15,9 +15,9 @@ | |||
15 | (use-modules (guix packages)) | 15 | (use-modules (guix packages)) |
16 | (use-modules (gnu services authentication)) | 16 | (use-modules (gnu services authentication)) |
17 | (use-modules (gnu packages shells)) | 17 | (use-modules (gnu packages shells)) |
18 | (use-modules (gnu packages perl)) | ||
19 | (use-modules (guix build-system trivial)) | 18 | (use-modules (guix build-system trivial)) |
20 | (use-modules (guix licenses)) | 19 | (use-modules (guix licenses)) |
20 | (use-modules (gnu packages tls)) | ||
21 | (use-modules (srfi srfi-1)) | 21 | (use-modules (srfi srfi-1)) |
22 | (use-package-modules security-token) | 22 | (use-package-modules security-token) |
23 | (use-service-modules cups desktop networking ssh xorg sound security-token docker) | 23 | (use-service-modules cups desktop networking ssh xorg sound security-token docker) |
@@ -25,57 +25,44 @@ | |||
25 | ; Define package that installs my root ca public keys | 25 | ; Define package that installs my root ca public keys |
26 | (define my-ca-certs | 26 | (define my-ca-certs |
27 | (package | 27 | (package |
28 | (name "my-ca-certs") | 28 | (name "my-ca-certs") |
29 | (version "1") | 29 | (version "1") |
30 | (source (local-file "./CACerts/" | 30 | (source (local-file "./CACerts" |
31 | #:recursive? #t)) | 31 | #:recursive? #t)) |
32 | (home-page "https://rschanz.org") | 32 | (build-system trivial-build-system) |
33 | (license agpl3+) | 33 | (license mpl2.0) |
34 | (build-system trivial-build-system) | 34 | (home-page "https://rschanz.org") |
35 | (arguments | 35 | (arguments |
36 | `(#:modules | 36 | `(#:modules |
37 | ((guix build utils)) | 37 | ((guix build utils)) |
38 | #:builder | 38 | #:builder |
39 | (begin | 39 | (begin |
40 | (use-modules (guix build utils) | 40 | (use-modules (guix build utils) |
41 | (srfi srfi-1) | 41 | (srfi srfi-1) |
42 | (srfi srfi-26) | 42 | (srfi srfi-26) |
43 | (ice-9 ftw)) | 43 | (ice-9 ftw)) |
44 | (let* ((ca-certificates (assoc-ref %build-inputs "source")) | 44 | (let* ((ca-certificates (assoc-ref %build-inputs "source")) |
45 | (crt-suffix ".crt") | 45 | (crt-suffix ".crt") |
46 | (is-certificate? (cut string-suffix? crt-suffix <>)) | 46 | (is-certificate? (cut string-suffix? crt-suffix <>)) |
47 | (certificates (filter is-certificate? | 47 | (certificates (filter is-certificate? |
48 | (scandir ca-certificates))) | 48 | (scandir ca-certificates))) |
49 | (out (assoc-ref %outputs "out")) | 49 | (out (assoc-ref %outputs "out")) |
50 | (certificate-directory (string-append out | 50 | (certificate-directory (string-append out "/etc/ssl/certs")) |
51 | "/etc/ssl/certs")) | 51 | (openssl (string-append (assoc-ref %build-inputs "openssl") "/bin/openssl"))) |
52 | (openssl (string-append (assoc-ref %build-inputs | 52 | (mkdir-p certificate-directory) |
53 | "openssl") | 53 | (for-each |
54 | "/bin/openssl"))) | 54 | (lambda (cert) |
55 | (mkdir-p certificate-directory) | 55 | (invoke |
56 | ;; When this package is installed into a profile, any files in the | 56 | openssl "x509" |
57 | ;; package output's etc/ssl/certs directory ending in ".pem" will | 57 | "-in" (string-append ca-certificates "/" cert) |
58 | ;; also be put into a ca-certificates.crt bundle. In the case of a | 58 | "-outform" "PEM" |
59 | ;; system profile, this bundle will be made available to the system | 59 | "-out" (string-append certificate-directory "/" cert ".pem"))) |
60 | ;; at activation time. See the profile hooks defined in (guix | 60 | certificates) |
61 | ;; profiles) and the etc-service-type define in (gnu services) for | 61 | #t)))) |
62 | ;; details. | 62 | (native-inputs |
63 | (for-each | 63 | (list openssl)) |
64 | ;; Ensure the certificate is in an appropriate format. | 64 | (synopsis "My CA Certs") |
65 | (lambda (certificate) | 65 | (description synopsis))) |
66 | (invoke | ||
67 | openssl "x509" | ||
68 | "-in" (string-append ca-certificates "/" certificate) | ||
69 | "-outform" "PEM" | ||
70 | "-out" (string-append | ||
71 | certificate-directory "/" | ||
72 | (basename certificate crt-suffix) ".pem"))) | ||
73 | certificates) | ||
74 | #t)))) | ||
75 | (inputs | ||
76 | (list openssl)) | ||
77 | (synopsis "My certificate authority certificates") | ||
78 | (description synopsis))) | ||
79 | 66 | ||
80 | ; Re-define the base packages to remove sudo | 67 | ; Re-define the base packages to remove sudo |
81 | (define %my-base-packages | 68 | (define %my-base-packages |