diff options
| -rw-r--r-- | guix/guix-acl-keys/jc.pub | 6 | ||||
| -rw-r--r-- | guix/ssh-keys/chris.pub | 1 | ||||
| -rw-r--r-- | guix/ssh-keys/jb.pub | 1 | ||||
| -rw-r--r-- | guix/ssh-keys/jb2.pub | 1 | ||||
| -rw-r--r-- | guix/ssh-keys/jc.pub | 1 | ||||
| -rw-r--r-- | guix/turing.scm | 115 | 
6 files changed, 125 insertions, 0 deletions
diff --git a/guix/guix-acl-keys/jc.pub b/guix/guix-acl-keys/jc.pub new file mode 100644 index 0000000..7bf00b0 --- /dev/null +++ b/guix/guix-acl-keys/jc.pub @@ -0,0 +1,6 @@ +(public-key + (ecc +  (curve Ed25519) +  (q #69B54CB8F663421D77E674EF58794F8CB7FB3F5F39F90640DF271E68D79DBBE1#) +  ) + ) diff --git a/guix/ssh-keys/chris.pub b/guix/ssh-keys/chris.pub new file mode 100644 index 0000000..c7c2d10 --- /dev/null +++ b/guix/ssh-keys/chris.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFMxOPLzQEOJtBJJ6Od9ucrDUpAFOviqJaUAvoG8NzyM chris@neptune diff --git a/guix/ssh-keys/jb.pub b/guix/ssh-keys/jb.pub new file mode 100644 index 0000000..dffdbd8 --- /dev/null +++ b/guix/ssh-keys/jb.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPyNdEOw7tfOHWCM0w2A7UzspnYYpNiF+nak51dcx3d7 diff --git a/guix/ssh-keys/jb2.pub b/guix/ssh-keys/jb2.pub new file mode 100644 index 0000000..66ad73f --- /dev/null +++ b/guix/ssh-keys/jb2.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBAeclEz5F0yR4ip/cCbsJ6uHdo8QPK5FBPb6aH/e2Fg diff --git a/guix/ssh-keys/jc.pub b/guix/ssh-keys/jc.pub new file mode 100644 index 0000000..a4ac057 --- /dev/null +++ b/guix/ssh-keys/jc.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINoHtDPD+w3rKGW4JVEDXidpRM1UXksC+/cMFgCykQBy [email protected] diff --git a/guix/turing.scm b/guix/turing.scm new file mode 100644 index 0000000..bc9bccd --- /dev/null +++ b/guix/turing.scm @@ -0,0 +1,115 @@ +;; Module imports +(use-modules (gnu) +             (guix) +             (gnu packages linux) +             (gnu packages tmux) +             (gnu packages vim)) +(use-service-modules networking ssh) +(use-package-modules bootloaders) + +;; Getting "unauthorized public key"? +;; your key needs to be in the guix authorized-keys, search for `guix-archive-key`. +;; Add your key there, then: +;;     scp -r . turing.box.chrisjl.dev:guix +;;     ssh turing.box.chrisjl.dev +;;     cd guix +;;     vim turing.scm +;;     # Delete the `(list (machine ...))` stuff +;;     # Add %turing-os +;;     # Save +;;     sudo guix system reconfigure turing.scm + +(define %this-dir (dirname (current-filename))) + +; https://logs.guix.gnu.org/guile/2017-07-01.log +; <rekado>davidl: a syntax checker probably wouldn’t help you here. “invalid field specifier” means that you have a record (e.g. operating-system) and you try to initialise a field that doesn’t exist. +; <rekado>davidl: this can mean that you close an expression too early, which makes it seem that its contents are fields for the parent expression. +; <rekado>davidl: but without more context it’s hard to say what’s wrong in your case. +; +; alternatively, that means you're trying to `guix system reconfigure` + +(define (file-from-cwd path) +  (local-file (string-append %this-dir path))) + +(define (ssh-key name) +  (file-from-cwd (string-append "/ssh-keys/" name ".pub"))) + +(define (guix-archive-key name) +  (file-from-cwd (string-append "/guix-acl-keys/" name ".pub"))) + +(define %services +  (append (list (service openssh-service-type +                   (openssh-configuration +                     (permit-root-login #f) +                     (password-authentication?  #f) +                     (authorized-keys `(("cj" ,(ssh-key "chris")) +                                        ("jc" ,(ssh-key "jc")) +                                        ("j" ,(ssh-key "jb") +                                             ,(ssh-key "jb2")))))) +                (service dhcp-client-service-type) +                (simple-service 'resolv-conf etc-service-type +                                (list `("resolv.conf" ,(plain-file +                                                        "resolv.conf" +                                                        "nameserver 1.1.1.1 1.0.0.1\n"))))) +               %base-services)) + +;; Operating system description +(define %turing-os +  (operating-system +    (locale "en_GB.utf8") +    (timezone "UTC") +    (keyboard-layout (keyboard-layout "gb")) +    (bootloader (bootloader-configuration +                  (bootloader grub-bootloader) +                  (targets '("/dev/vda")) +                  (keyboard-layout keyboard-layout))) +    (file-systems (cons* (file-system +                           (mount-point "/") +                           (device "/dev/vda2") +                           (type "ext4")) +                          %base-file-systems)) +    (host-name "u-76") +    (users (cons* (user-account +                    (name "cj") +                    (comment "Chris") +                    (group "users") +                    (home-directory "/home/cj") +                    (supplementary-groups '("wheel" "netdev" "audio" "video"))) +                  (user-account +                    (name "jc") +                    (comment "void") +                    (group "users") +                    (home-directory "/home/jc") +                    (supplementary-groups '("wheel" "netdev" "audio" "video"))) +                  (user-account +                    (name "j") +                    (comment "J") +                    (group "users") +                    (home-directory "/home/j") +                    (supplementary-groups '("wheel" "netdev" "audio" "video"))) +                  %base-user-accounts)) +    (packages (cons* vim %base-packages)) +    (sudoers-file (plain-file "sudoers" "root ALL=(ALL) ALL +%wheel ALL=NOPASSWD: ALL +")) +    (services (modify-services %services +                (guix-service-type config => +                                   (guix-configuration +                                     (inherit config) +                                     (authorized-keys +                                       (append (list (guix-archive-key "jc")) +                                               %default-authorized-guix-keys)))))))) + +; local deployments: +; SSHKEY=path/to/key USER=myuser guix deploy turing.scm +; USER is usually implicitly declared somewhere +(list (machine +        (operating-system %turing-os) +        (environment managed-host-environment-type) +        (configuration (machine-ssh-configuration +                         (host-name "turing.box.chrisjl.dev") +                         (build-locally? #f) +                         (system "x86_64-linux") +                         (host-key "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMvvi6P/G+rZ2qUZ+anluvFQwYM/WFZkERygd9X9+xqU") +                         (user (getenv "USER")) +                         (identity (getenv "SSHKEY"))))))  |