diff options
author | Franz Geffke <franz@pantherx.org> | 2023-06-25 16:07:34 +0100 |
---|---|---|
committer | Franz Geffke <franz@pantherx.org> | 2023-06-25 16:07:34 +0100 |
commit | 54b4056ac571611892c743b65f4c47dc298c49da (patch) | |
tree | 36e4a84137d2b9bc9a241cf82563da6114bf6189 /px/packages/linux.scm |
initial commit
Diffstat (limited to 'px/packages/linux.scm')
-rw-r--r-- | px/packages/linux.scm | 355 |
1 files changed, 355 insertions, 0 deletions
diff --git a/px/packages/linux.scm b/px/packages/linux.scm new file mode 100644 index 0000000..bbb8f09 --- /dev/null +++ b/px/packages/linux.scm @@ -0,0 +1,355 @@ +(define-module (px packages linux) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system copy) + #:use-module (guix build-system gnu) + #:use-module (guix build-system linux-module) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix gexp) + #:use-module (guix packages) + #:use-module (guix platform) + #:use-module (guix utils) + #:use-module (gnu packages base) + #:use-module (gnu packages bootloaders) + #:use-module (gnu packages compression) + #:use-module (gnu packages linux) + #:use-module (gnu system) + #:use-module (ice-9 match) + #:use-module (nongnu packages linux) + #:use-module (nonguix licenses) + #:export (%reterminal-kernel-modules)) + + +(define-public brcm80211-firmware + (package + (name "brcm80211-firmware") + (version "20210818-1") + (source (origin + (method url-fetch) + (uri (string-append + "http://ftp.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-brcm80211_" + version "_all.deb")) + (sha256 (base32 "04wg9fqay6rpg80b7s4h4g2kwq8msbh81lb3nd0jj45nnxrdxy7p")))) + (build-system copy-build-system) + (native-inputs (list tar bzip2)) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key inputs #:allow-other-keys) + (let ((source (assoc-ref inputs "source"))) + (invoke "ar" "x" source) + (invoke "ls") + (invoke "tar" "-xvf" "data.tar.xz")))) + (add-after 'install 'make-symlinks + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (symlink (string-append out "/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt") + (string-append out "/lib/firmware/brcm/brcmfmac43455-sdio.txt")) + (symlink (string-append out "/lib/firmware/brcm/brcmfmac43455-sdio.bin") + (string-append out "/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin")))))) + #:install-plan + '(("lib/firmware/" "lib/firmware")))) + (home-page "https://packages.debian.org/sid/firmware-brcm80211") + (synopsis "Binary firmware for Broadcom/Cypress 802.11 wireless cards") + (description "This package contains the binary firmware for wireless +network cards supported by the brcmsmac or brcmfmac driver.") + (license license:expat))) + + +(define-public bluez-firmware + (let ((commit "31ad68831357d2019624004f1f0846475671088f") + (revision "1")) + (package + (name "bluez-firmware") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/RPi-Distro/bluez-firmware.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "083s9n7kgyqjpr8jk6xw97fszzqpp3ndss3wjxn7c3snl47m9cy2")))) + (build-system copy-build-system) + (arguments + '(#:install-plan + '(("broadcom/BCM4345C0.hcd" "lib/firmware/brcm/BCM4345C0.hcd")))) + (home-page "https://github.com/RPi-Distro/bluez-firmware") + (synopsis "Bluetooth firmware") + (description "BlueZ - Bluetooth protocol stack for Linux") + (license license:expat)))) + + +(define-public linux-px + (corrupt-linux linux-libre-5.15)) + +(define-public linux-firmware-px + (package + (inherit linux-firmware) + (name "linux-firmware") + (version "20210919"))) + + +(define (config->string options) + (string-join (map (match-lambda + ((option . 'm) + (string-append option "=m")) + ((option . #t) + (string-append option "=y")) + ((option . #f) + (string-append option "=n"))) + options) + "\n")) + +(define %default-extra-linux-options + `(;; Some very mild hardening. + ("CONFIG_SECURITY_DMESG_RESTRICT" . #t) + ;; All kernels should have NAMESPACES options enabled + ("CONFIG_NAMESPACES" . #t) + ("CONFIG_UTS_NS" . #t) + ("CONFIG_IPC_NS" . #t) + ("CONFIG_USER_NS" . #t) + ("CONFIG_PID_NS" . #t) + ("CONFIG_NET_NS" . #t) + ;; Various options needed for elogind service: + ;; https://issues.guix.gnu.org/43078 + ("CONFIG_CGROUP_FREEZER" . #t) + ("CONFIG_BLK_CGROUP" . #t) + ("CONFIG_CGROUP_WRITEBACK" . #t) + ("CONFIG_CGROUP_SCHED" . #t) + ("CONFIG_CGROUP_PIDS" . #t) + ("CONFIG_CGROUP_FREEZER" . #t) + ("CONFIG_CGROUP_DEVICE" . #t) + ("CONFIG_CGROUP_CPUACCT" . #t) + ("CONFIG_CGROUP_PERF" . #t) + ("CONFIG_SOCK_CGROUP_DATA" . #t) + ("CONFIG_BLK_CGROUP_IOCOST" . #t) + ("CONFIG_CGROUP_NET_PRIO" . #t) + ("CONFIG_CGROUP_NET_CLASSID" . #t) + ("CONFIG_MEMCG" . #t) + ("CONFIG_MEMCG_SWAP" . #t) + ("CONFIG_MEMCG_KMEM" . #t) + ("CONFIG_CPUSETS" . #t) + ("CONFIG_PROC_PID_CPUSET" . #t) + ;; Allow disk encryption by default + ("CONFIG_DM_CRYPT" . m) + ;; Modules required for initrd: + ("CONFIG_NET_9P" . m) + ("CONFIG_NET_9P_VIRTIO" . m) + ("CONFIG_VIRTIO_BLK" . m) + ("CONFIG_VIRTIO_NET" . m) + ("CONFIG_VIRTIO_PCI" . m) + ("CONFIG_VIRTIO_BALLOON" . m) + ("CONFIG_VIRTIO_MMIO" . m) + ("CONFIG_FUSE_FS" . m) + ("CONFIG_CIFS" . m) + ("CONFIG_9P_FS" . m))) + +(define-public linux-raspberry-5.15 + (package + (inherit linux-libre-5.15) + (name "linux-raspberry") + (version "5.15.32") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/raspberrypi/linux") + (commit "1.20220331"))) + (file-name (string-append "linux-" version)) + (sha256 + (base32 + "1k18cwnsqdy5ckymy92kp8czckzwgn8wn2zdibzrrg9jxrflx6vl")))) + (supported-systems '("aarch64-linux")) + (arguments + (substitute-keyword-arguments (package-arguments linux-libre-5.15) + ((#:phases phases) + #~(modify-phases #$phases + + (replace 'configure + (lambda* (#:key inputs target #:allow-other-keys) + ;; Avoid introducing timestamps + (setenv "KCONFIG_NOTIMESTAMP" "1") + (setenv "KBUILD_BUILD_TIMESTAMP" (getenv "SOURCE_DATE_EPOCH")) + + ;; Other variables useful for reproducibility. + (setenv "KBUILD_BUILD_USER" "guix") + (setenv "KBUILD_BUILD_HOST" "guix") + + ;; Set ARCH and CROSS_COMPILE. + (let ((arch #$(platform-linux-architecture + (lookup-platform-by-target-or-system + (or (%current-target-system) + (%current-system)))))) + (setenv "ARCH" arch) + (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")) + + (when target + (setenv "C_INCLUDE_PATH" (string-join + (cdr (string-split (getenv "C_INCLUDE_PATH") #\:)) + ":")) + + (setenv "CPLUS_INCLUDE_PATH" (string-join + (cdr (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) + ":")) + + (setenv "LIBRARY_PATH" (string-join + (cdr (string-split (getenv "LIBRARY_PATH") #\:)) + ":")) + (setenv "CROSS_COMPILE" (string-append target "-")) + (format #t "`CROSS_COMPILE' set to `~a'~%" + (getenv "CROSS_COMPILE")))) + (setenv "KERNEL" "kernel8") + (invoke "make" "bcm2711_defconfig") + (let ((port (open-file ".config" "a")) + (extra-configuration #$(config->string %default-extra-linux-options))) + (display extra-configuration port) + (close-port port)) + + )))))))) + +;;; +;;; reTerminal related modules +;;; + +(define-public bq24179-charger-linux-module + (package + (name "bq24179-charger-linux-module") + (version "0.1") + (source + (file-append + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git") + (commit "589dab165f7a55eec0cc5fa25cc0bf892f4aa52c"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "002y8x0dmglhfgm60az6059jjnfm5q1zxdfp0b4s8dqybhjbdhb5"))) + "/modules/bq24179_charger")) + (build-system linux-module-build-system) + (arguments + (list #:tests? #f #:linux linux-raspberry-5.15)) ; no test suite, RPI Linux + (home-page "https://github.com/Seeed-Studio/seeed-linux-dtoverlays/tree/master/modules/bq24179_charger") + (synopsis "Linux kernel module for bq24179_charger found in Seeed Studio ReTerminal") + (description "This is the Linux kernel bq24179_charger driver") + (license license:gpl2))) + +(define-public lis3lv02d-linux-module + (package + (name "lis3lv02d-linux-module") + (version "0.1") + (source + (file-append + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git") + (commit "589dab165f7a55eec0cc5fa25cc0bf892f4aa52c"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "002y8x0dmglhfgm60az6059jjnfm5q1zxdfp0b4s8dqybhjbdhb5"))) + "/modules/lis3lv02d")) + (build-system linux-module-build-system) + (arguments + (list #:tests? #f #:linux linux-raspberry-5.15)) ; no test suite, RPI Linux + (home-page "https://github.com/Seeed-Studio/seeed-linux-dtoverlays/tree/master/modules/lis3lv02d") + (synopsis "Linux kernel module for GROVE 3-Axis Digital Accelerometer found in Seed Studio ReTerminal") + (description "This is the Linux kernel GROVE 3-Axis Digital Accelerometer driver") + (license license:gpl2))) + +(define-public ltr30x-linux-module + (package + (name "ltr30x-linux-module") + (version "0.1") + (source + (file-append + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git") + (commit "589dab165f7a55eec0cc5fa25cc0bf892f4aa52c"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "002y8x0dmglhfgm60az6059jjnfm5q1zxdfp0b4s8dqybhjbdhb5"))) + "/modules/ltr30x")) + (build-system linux-module-build-system) + (arguments + (list #:tests? #f #:linux linux-raspberry-5.15)) ; no test suite, RPI Linux + (home-page "https://github.com/Seeed-Studio/seeed-linux-dtoverlays/tree/master/modules/ltr30x") + (synopsis "Linux kernel module for ltr30x ambient light and proximity sensor found in Seed Studio ReTerminal") + (description "This is the Linux kernel ltr30x ambient light and proximity sensor driver") + (license license:gpl2))) + +(define-public mipi_dsi-linux-module + (package + (name "mipi_dsi-linux-module") + (version "0.1") + (source + (file-append + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git") + (commit "589dab165f7a55eec0cc5fa25cc0bf892f4aa52c"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "002y8x0dmglhfgm60az6059jjnfm5q1zxdfp0b4s8dqybhjbdhb5"))) + "/modules/mipi_dsi")) + (build-system linux-module-build-system) + (arguments + (list #:tests? #f #:linux linux-raspberry-5.15)) ; no test suite, RPI Linux + (home-page "https://github.com/Seeed-Studio/seeed-linux-dtoverlays/tree/master/modules/mipi_dsi") + (synopsis "Linux kernel module for MIPI-DSI panel with touch panel attached to I2C bus found in Seed Studio ReTerminal") + (description "This is a linux kernel driver for MIPI-DSI panel with touch panel attached to I2C bus.") + (license license:gpl2))) + +(define-public seeed-reterminal-dtoverlays + (package + (name "seeed-reterminal-dtoverlays") + (version "1.9") + (license license:gpl2) + (source + (file-append + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git") + (commit "589dab165f7a55eec0cc5fa25cc0bf892f4aa52c"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "002y8x0dmglhfgm60az6059jjnfm5q1zxdfp0b4s8dqybhjbdhb5"))) + "/overlays/rpi")) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'set-prefix-in-makefile + (lambda* (#:key outputs #:allow-other-keys) + ;; Modify the makefile so that its + ;; 'DEST' variable points to "out". + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("DEST :=.*") + (string-append "DEST := " + out "\n"))) + #true)) + ) + (add-before 'install 'create-dir + (lambda* (#:key outputs #:allow-other-keys) + (mkdir-p (assoc-ref outputs "out"))) + ) + ) #:tests? #f)) + (native-inputs `(("dtc" ,dtc))) + (synopsis "Device Tree overlays for Seed Studio ReTerminal") + (description + "Device Tree overlays for Seed Studio ReTerminal") + (home-page "https://github.com/Seeed-Studio/seeed-linux-dtoverlays/"))) + + +(define %reterminal-kernel-modules + (list bq24179-charger-linux-module + lis3lv02d-linux-module + ltr30x-linux-module + mipi_dsi-linux-module)) |