;;; GNU Guix --- Functional package management for GNU ;;; ;;; Copyright © 2023 Stefan ;;; ;;; This file is not part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (zephyr modules) #:use-module (guix gexp) #:use-module (guix build-system copy) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (ice-9 regex) #:use-module (zephyr)) (define-public (zephyr-module-installation-target zephyr-module) "Return the target directory for the install-plan of the copy-build-system for the ZEPHYR-MODULE package. It needs to match a certain pattern to collect search-paths for zephyr-modules in the ZEPHYR_MOUDULES environment variable." (string-append ;; Add the needed prefix to the module name. "/" %zephyr-module "/" ;; Get the module name from the usually prefixed package name. (regexp-substitute #f (string-match "^(zephyr-module-|)" (package-name zephyr-module)) "" 'post))) (define-public zephyr-module-template "Return a template package to inherit zephyr module packages from. It provides the build-system and proper arguments." (package (name "zephyr-module-template") (version "0") (source #f) (build-system copy-build-system) (arguments (list #:install-plan #~(list (list "." #$(zephyr-module-installation-target this-package))))) (home-page #f) (synopsis #f) (description #f) (license #f))) (define-public zephyr-module-cmsis (let ((revision "1") (commit "74981bf893e8b10931464b9945e2143d99a3f0a3")) (package/inherit zephyr-module-template (name "zephyr-module-cmsis") (version (git-version "5.8.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zephyrproject-rtos/cmsis") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "11wwcdwzi5ac8k881616p69v7cz356cwvbqsmmfw3w3v63b9dsmy")))) (home-page "https://github.com/zephyrproject-rtos/cmsis") (synopsis "Zephyr module for CMSIS") (description "Zephyr module providing the Common Microcontroller Software Interface Standard.") (license license:apsl2)))) (define-public zephyr-module-hal-nordic (let ((revision "1") (commit "cf6e9fc5f7c2c98df26f2a4227a95df9a50823e7")) (package/inherit zephyr-module-template (name "zephyr-module-hal-nordic") (version (git-version "3.1.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zephyrproject-rtos/hal_nordic") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1zbnhf7r9sg67xjhbdh6fn4gvccc71pxqcmbfnsi6a75bhfv9y55")))) (home-page "https://github.com/zephyrproject-rtos/hal_nordic") (synopsis "Zephyr module for Nordic Semiconductor's SoCs and SiPs") (description "Zephyr module providing the Hardware Abstraction Layer for Nordic Semiconductor's SoCs and SiPs. Supported SoCs and SiPs: @itemize @item nRF51 Series @item nRF52805 @item nRF52810 @item nRF52811 @item nRF52820 @item nRF52832 @item nRF52833 @item nRF52840 @item nRF5340 @item nRF9131 @item nRF9160 @item nRF9161 @end itemize ") (license license:bsd-3)))) (define-public zephyr-module-hal-nordic-2.11 (let ((revision "0") (commit "5644a13252e5d12e3e841105d106cfdeb40e59f9")) (package/inherit zephyr-module-hal-nordic (name "zephyr-module-hal-nordic") (version (git-version "2.11.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zephyrproject-rtos/hal_nordic") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0lj7wlbfp9pb5pv819h9kbddmlzfbdnbmxhpm1i4xmf89z9v14sm"))))))) (define-public zephyr-module-hal-stm32 (let ((revision "1") (commit "d466dc8421ee0c6592bb5682aa93a671bc948107")) (package/inherit zephyr-module-template (name "zephyr-module-hal-stm32") ;; Using highest version number listed in: ;; https://github.com/zephyrproject-rtos/hal_stm32/blob/main/stm32cube/common_ll/README.rst (version (git-version "1.27.1" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zephyrproject-rtos/hal_stm32") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0q0ckial6a3lvlag44zm65dklbbdnqpzr1vbh85dhwx7acpjd5ni")))) (home-page "https://github.com/zephyrproject-rtos/hal_stm32") (synopsis "Zephyr module for STM32 microcontrollers") (description "Zephyr module providing the required STM32cube packages, dtsi files and libraries needed to build a Zephyr application running on STM32 silicon.") (license license:bsd-3)))) (define-public zephyr-module-lvgl-8.2.0 (let ((revision "1") (commit "70a7849726be8375e3d941153dc417823ea7f355")) (package/inherit zephyr-module-template (name "zephyr-module-lvgl") (version (git-version "8.2.0" revision commit)) ; Taken from lvgl.h. (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zmkfirmware/lvgl") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "147mykkb72nwbjhrw4z7h0kkxw4p7kvy0w001s44rgplxhqqsg98")))) (home-page "https://github.com/zmkfirmware/lvgl") (synopsis "Zephyr module for LVGL") (description "Zephyr module providing LVGL, the Light and Versatile Graphics Library for an embedded GUI with graphical elements, visual effects and a low memory footprint.") (license license:apsl2)))) (define-public zephyr-module-lvgl (let ((revision "2") (commit "5da257f782a8f9c6e265bdc60ebc2a93fdee24de")) (package/inherit zephyr-module-lvgl-8.2.0 (name "zephyr-module-lvgl") (version (git-version "8.3.7" revision commit)) ; Taken from lvgl.h. (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zephyrproject-rtos/lvgl") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "14isczxi36dasks1w4hwdlbzpvja4wal458i0km0hi92bbxayg0a"))))))) (define-public zephyr-module-mbedtls (let ((revision "1") (commit "c38dc78d9a8dcbe43b898cc1171ab33ba3e6fc26")) (package/inherit zephyr-module-template (name "zephyr-module-mbedtls") (version (git-version "3.4.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zephyrproject-rtos/mbedtls") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0661myy0wjz38nypbyfw51x10mzg57syb5c28irblgjm2w25wbi7")))) (home-page "https://github.com/zephyrproject-rtos/mbedtls") (synopsis "Zephyr module for Mbed TLS") (description "Zephyr module providing Mbed TLS, a C library that implements cryptographic primitives, X.509 certificate manipulation and the SSL/TLS and DTLS protocols. Its small code footprint makes it suitable for embedded systems.") (license license:apsl2)))) (define-public zephyr-module-mcuboot (let ((revision "1") (commit "76d19b3b8885ea7ae25a6f4f5d8501f7ec646447")) (package/inherit zephyr-module-template (name "zephyr-module-mcuboot") (version (git-version "1.11.0-dev" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zephyrproject-rtos/mcuboot") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1frm9330bir1cz7h87qq26r74igy3pvrz3iqpvc7r6l7silj0fxf")))) (home-page "https://github.com/zephyrproject-rtos/mcuboot") (synopsis "Zephyr module for MCUboot") (description "Zephyr module providing the secure bootloader MCUboot for 32-bit microcontrollers. It defines a common infrastructure for the bootloader and the system flash layout on microcontroller systems, and provides a secure bootloader that enables easy software upgrade.") (license license:apsl2)))) (define-public zephyr-module-tinycrypt (let ((revision "1") (commit "3e9a49d2672ec01435ffbf0d788db6d95ef28de0")) (package/inherit zephyr-module-template (name "zephyr-module-tinycrypt") (version (git-version "0.2.8" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zephyrproject-rtos/tinycrypt") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "19d2q9y23yzz9i383q3cldjl3k5mryx9762cab23zy3ijdnmj2z6")))) (home-page "https://github.com/zephyrproject-rtos/tinycrypt") (synopsis "Zephyr module for the TinyCrypt library") (description "Zephyr module providing the TinyCrypt library.") (license (license:non-copyleft "file://README.zephyr"))))) (define-public zephyr-module-zcbor (let ((revision "1") (commit "67fd8bb88d3136738661fa8bb5f9989103f4599e")) (package/inherit zephyr-module-template (name "zephyr-module-zcbor") (version (git-version "0.7.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/zephyrproject-rtos/zcbor") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "16138k7xlahf63dfvplm8c2m0kxs1g17gcx1fa31y4gcfbi3b0k7")))) (home-page "https://github.com/zephyrproject-rtos/zcbor") (synopsis "Zephyr module for the zcbor library") (description "Zephyr module providing the zcbor low footprint CBOR (Concise Binary Object Representation) library in the C language, tailored for use in microcontrollers.") (license license:apsl2))))