I've been stuck on trying to "infect" an Ubuntu VPS with Guix for a
while. It keeps failing on the bootloader setup step and it does so in
a way that somehow nukes the `guix` command, but the store remains.
At press time, my config was the one attached.
As I'm a caveperson who never owned a single UEFI machine, I'm a bit
stumped as to what the absolute heck the nature of the error might be:
```
# guix system init /etc/config.scm /
...bunch of build stuff, and then:
guix system: error:
'/gnu/store/0az53wrhxvhpkm80pmfyzw607y0qas9n-grub-efi-2.04/sbin/grub-install
--boot-directory //boot --bootloader-id=Guix --efi-directory
//boot/efi' exited with status 1; output follows:
/gnu/store/0az53wrhxvhpkm80pmfyzw607y0qas9n-grub-efi-2.04/sbin/grub-install:
error:
/gnu/store/0az53wrhxvhpkm80pmfyzw607y0qas9n-grub-efi-2.04/lib/grub/i386-pc/modinfo.sh
doesn't exist. Please specify --target or --directory.
```
I found two existing guides, but one requires adding an extra block
device and other shenanigans, and the other mentions some alarmingly
outdated version numbers, so I don't trust either of them.
(use-modules (gnu) (gnu system nss))
(use-service-modules
admin
networking
ssh)
(use-package-modules
bootloaders
certs
gnome
networking
ssh)
(operating-system
(host-name "blue")
(timezone "Europe/Budapest")
(locale "en_US.utf8")
(keyboard-layout (keyboard-layout "us"))
;; Use the UEFI variant of GRUB with the EFI System
;; Partition mounted on /boot/efi.
(bootloader (bootloader-configuration
(bootloader grub-efi-bootloader)
(target "/boot/efi")
(keyboard-layout keyboard-layout)))
(file-systems (append
(list (file-system
(device (file-system-label "cloudimg-rootfs"))
(mount-point "/")
(type "ext4"))
(file-system
(device
(file-system-label "UEFI"))
(mount-point "/boot/efi")
(type "vfat")))
%base-file-systems))
;; Create user `bob' with `alice' as its initial password.
(users (cons (user-account
(name "user")
(password (crypt "alice" "$6$abc"))
(group "users")
(supplementary-groups '("wheel" "netdev")))
%base-user-accounts))
;; This is where we specify system-wide packages.
(packages (append (list
;; for HTTPS access
nss-certs
;; for user mounts
gvfs)
%base-packages))
(services (append (list
(service unattended-upgrade-service-type)
(static-networking-service
"eth0" "206.189.49.189"
#:netmask "255.255.240.000"
#:gateway "000.000.000.000"
#:name-servers '("84.200.69.80" "84.200.70.40"))
;(service dhcp-client-service-type)
(service openssh-service-type
(openssh-configuration
(openssh openssh-sans-x)))
(service
yggdrasil-service-type
(yggdrasil-configuration
(log-to 'stdout)
(log-level 'debug)
(autoconf? #f)
(config-file "/etc/yggdrasil-secret.conf")
(json-config
'((peers . #(;; Baden-Baden, IONOS, operated by
;; [jcgruenhage](https://jcg.re/)
"tcp://82.165.69.111:61216"
"tcp://[2001:8d8:1800:8224::1]:61216"
;; Praha, ITLDC, operated by
;; [Revertron](https://github.com/Revertron)
"tcp://195.123.245.146:7743"
"tcp://[2a05:9403::8b]:7743"
;; Praha, vpsFree, operated by @ehmry
"tcp://37.205.14.171:46370"
"tcp://[2a03:3b40:fe:ab::1]:46370")))))))
%base-services))
;; Allow resolution of '.local' host names with mDNS.
(name-service-switch %mdns-host-lookup-nss))