Hello everyone. I am trying yo reference some local files in my guix configuartion, but I am running into some isses. Bellow I will past my configuration and the error I see when I run the build command. The code: ;;; base.scm --- Base Guix config inheriting from the official installer ;;; ;;; Defines a module named (machines base). It exports the variable ;;; `base-os`, which is an operating-system record built on top of ;;; `installation-os`. We allow SSH (with pubkey) on root, and run DHCP for ;;; networking.
(define-module (machines base) ;; Import modules providing 'operating-system', 'installation-os', etc. #:use-module (gnu system install) ; for installation-os #:use-module (gnu system file-systems) ; for installation-os #:use-module (gnu system) ; for operating-system, %base-user-accounts #:use-module (gnu system accounts) ; for operating-system, %base-user-accounts #:use-module (gnu services) ; base services #:use-module (gnu services ssh) #:use-module (gnu services networking) ; for dhcp-client-service-type #:use-module (guix gexp) ; for installation-os #:export (base-os)) (define %base-dir ;; The directory where *this* file (base.scm) lives. (dirname (current-filename))) ;; 1) Define a base OS that *inherits* 'installation-os' (the default Guix ;; live installer environment). ;; 2) Override the 'services' field to provide: ;; - a DHCP client (instead of 'networking-service-type') ;; - an SSH service that allows root login via pubkey only ;; 3) Override the 'users' field so 'root' has a public key. (define base-os (operating-system (inherit installation-os) ;; Basic identity (host-name "base-installer") (timezone "UTC") (locale "en_US.utf8") (file-system (device (local-file "./keys/install-key")) ; Danger: private key in store (mount-point "/root/.ssh/id_rsa") (type "none") (flags '(bind-mount))) ;; (file-systems ;; (append ;; (list ;; (file-system ;; (mount-point "/root/.ssh/authorized_keys") ;; (device (local-file "./keys/install-key.pub")) ;; (type "none") ;; (flags '(bind-mount)))) ;; (operating-system-file-systems installation-os))) ;; The 'services' field: we append a DHCP service & a custom SSH config (services (append (list ;; Networking: use a DHCP client on all interfaces (service dhcp-client-service-type (dhcp-client-configuration (interfaces '("eno1")))) ; or '("eno1") for a specific interface ;; SSH service: root login by key only (service openssh-service-type (openssh-configuration (permit-root-login 'without-password) ; No password logins (password-authentication? #false))) ;; (authorized-keys ;; `(("root" ,(local-file "./keys/install-key.pub")))))) ; disable password-based auth ;; Keep everything else from the standard Guix installation-os (operating-system-services installation-os)))))) ;; Finally, just reference 'base-os' at the top level so Guix sees it as ;; the OS to build or reconfigure. base-os ======== The terminal interaction ========================= [jan@bunker:/dna/@repo/installation-isos-guix]$ ls machines manifest.scm manifest.scm~ [jan@bunker:/dna/@repo/installation-isos-guix]$ ls machines/ base.scm base.scm~ common.scm~ keys [jan@bunker:/dna/@repo/installation-isos-guix]$ ls machines/keys/ install-key install-key.pub [jan@bunker:/dna/@repo/installation-isos-guix]$ ~/.config/guix/current/bin/guix system image -t iso9660 -L . machines/base.scm machines/base.scm:41:4: error: (file-system (device (local-file "./keys/install-key")) (mount-point "/root/.ssh/id_rsa") (type "none") (flags (quote (bind-mount)))): invalid field specifier [jan@bunker:/dna/@repo/installation-isos-guix]$