summaryrefslogtreecommitdiff
path: root/epistemia/bootloader.scm
blob: 413b0d78280eb1167bcc0e1d1f74eb726581a63c (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
;;; SPDX-License-Identifier: GPL-3.0-or-later
(define-module (epistemia bootloader)
  #:use-module (guix gexp)
  #:use-module (guix utils)
  #:use-module (gnu bootloader)
  #:use-module (gnu bootloader grub))

(define-public grub-zfs
  (bootloader
    (inherit grub-efi-bootloader)
    (name 'grub-zfs)
    (installer
     #~(lambda (bootloader targets mount-point)
         (use-modules (guix build utils))
         (let ((standard-installer #$(bootloader-installer grub-efi-bootloader)))
           (standard-installer bootloader targets mount-point))
         (let ((grub-cfg (string-append mount-point "/boot/grub/grub.cfg")))
           (chmod grub-cfg #o644)
           (substitute* grub-cfg
             (("search --label --set [^ ]+") 
              "set root=(hd0,gpt2)")
             ((" /store/") 
              " /gnu/@/store/")))))))

;; TODO combine into previous with an argument?
(define-public grub-zfs-bios
  (bootloader
    (inherit grub-bootloader)
    (name 'grub-zfs)
    (installer
     #~(lambda (bootloader targets mount-point)
         (use-modules (guix build utils))
         (let ((standard-installer #$(bootloader-installer grub-bootloader)))
           (standard-installer bootloader targets mount-point))
         (let ((grub-cfg (string-append mount-point "/boot/grub/grub.cfg")))
           (chmod grub-cfg #o644)
           (substitute* grub-cfg
             (("search --label --set [^ ]+")
              "set root=(hd0,gpt2)")
             ((" /store/")
              " /gnu/@/store/")))))))