summaryrefslogtreecommitdiff
path: root/px/packages/bootloaders.scm
blob: 3e5e49cbc91b5aa258c9b0f9eed20f2a2ee2c9ec (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
;;; Bootloader definitions for PantherX OS
;;; Author: Reza Alizadeh Majd <r.majd@pantherx.org>
;;;

(define-module (px packages bootloaders)
  #:use-module (gnu bootloader)
  #:use-module (gnu bootloader u-boot)
  #:use-module (gnu packages)
  #:use-module (gnu packages bootloaders)
  #:use-module (gnu packages firmware)
  #:use-module (guix gexp)
  #:use-module (guix packages)
  #:use-module (guix utils)
  ; #:export (u-boot-khadas-edge-rk3399-bootloader)
)

;;; required items:
;;;   1. bootloader package
;;;   2. bootloader definition
;;;

; (define-public u-boot-khadas-edge-rk3399
;   (let ((base (make-u-boot-package "khadas-edge-rk3399" "aarch64-linux-gnu")))
;     (package
;       (inherit base)
;       (arguments
;         (substitute-keyword-arguments (package-arguments base)
;           ((#:phases phases)
;            `(modify-phases ,phases
;               (add-after 'unpack 'set-environment
;                 (lambda* (#:key inputs #:allow-other-keys)
;                   ;; Reference:
;                   ;; https://github.com/krescue/khadas-uboot/blob/2a2c7b5058b8cf26b4aa315d463f2c32c32d1abb/packages/arm-trusted-firmware/package.mk#L23
;                   (setenv "BL31" (string-append (assoc-ref inputs "firmware")
;                                                 "/bl31.elf"))
;                   #t))
;               ;; Phases do not succeed on bl31 ELF.
;               (delete 'strip)
;               (delete 'validate-runpath)))))
;       (native-inputs
;        `(("firmware" ,arm-trusted-firmware-rk3399)
;         ,@(package-native-inputs base))))))


; (define install-khadas-edge-rk3399-u-boot
;   #~(lambda (bootloader root-index image)
;       (let ((idb (string-append bootloader "/libexec/idbloader.img"))
;             (u-boot (string-append bootloader "/libexec/u-boot.itb")))
;         ;; (write-file-on-device file size device offset)
;         ;; TODO: we might need to update offset
;         (write-file-on-device idb (stat:size (stat idb))
;                               image (* 64 512))
;         (write-file-on-device u-boot (stat:size (stat u-boot))
;                               image (* 16384 512)))))

; (define u-boot-khadas-edge-rk3399-bootloader
;   (bootloader
;     (inherit u-boot-bootloader)
;     (package u-boot-khadas-edge-rk3399)
;     (disk-image-installer install-khadas-edge-rk3399-u-boot)))


(define-public u-boot-rpi-arm64
  (make-u-boot-package "rpi_arm64" "aarch64-linux-gnu"))