From ea12d87356f336af214a00919d46ee49b24a2cf5 Mon Sep 17 00:00:00 2001 From: Jack O'Sullivan Date: Sat, 31 Aug 2024 15:00:30 +0100 Subject: [PATCH] Move mcu into full flake-parts module --- flake.nix | 13 +++++++------ mcu/default.nix | 40 ++++++++++++++++++++++++++++++++++++++++ mcu/devenv.nix | 36 ------------------------------------ 3 files changed, 47 insertions(+), 42 deletions(-) create mode 100644 mcu/default.nix delete mode 100644 mcu/devenv.nix diff --git a/flake.nix b/flake.nix index 26e5ece..2ed3d5c 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,8 @@ flake-parts.lib.mkFlake { inherit inputs; } { imports = [ devenv.flakeModule + + ./mcu ]; systems = [ "x86_64-linux" ]; @@ -26,14 +28,13 @@ rootFileContent = builtins.readFile rootdir.outPath; in pkgs.lib.mkIf (rootFileContent != "") rootFileContent; - withRootdir = f: mkMerge [ - (import f) - { devenv.root = rootdirOpt; } - ]; in { - devenv.shells = { - mcu = withRootdir mcu/devenv.nix; + _module.args.libMy = { + withRootdir = c: mkMerge [ + c + { devenv.root = rootdirOpt; } + ]; }; }; }; diff --git a/mcu/default.nix b/mcu/default.nix new file mode 100644 index 0000000..69dd868 --- /dev/null +++ b/mcu/default.nix @@ -0,0 +1,40 @@ +{ + perSystem = { libMy, pkgs, ... }: { + devenv.shells.mcu = libMy.withRootdir { + packages = with pkgs; [ + gnumake + cmake + pkgsCross.arm-embedded.buildPackages.gdb # ARM one is broken + gcc-arm-embedded + python3 + picotool + openocd-rp2040 + ]; + + env = { + PICO_SDK_PATH = "${pkgs.pico-sdk}/lib/pico-sdk"; + }; + + scripts = { + build.exec = '' + cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -D PICO_STDIO_SEMIHOSTING=1 + cmake --build build --parallel + ''; + build-rel.exec = '' + cmake -S . -B build-release -D CMAKE_BUILD_TYPE=Release + cmake --build build-release --parallel + ''; + clean.exec = '' + rm -rf build/ build-release/ + ''; + + ocd.exec = '' + openocd -f ${./tigard-swd.cfg} -f target/rp2040.cfg + ''; + gdb.exec = '' + arm-none-eabi-gdb -x .gdbinit build/qclk.elf + ''; + }; + }; + }; +} diff --git a/mcu/devenv.nix b/mcu/devenv.nix deleted file mode 100644 index a0cef0a..0000000 --- a/mcu/devenv.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ pkgs, ... }: { - packages = with pkgs; [ - gnumake - cmake - pkgsCross.arm-embedded.buildPackages.gdb # ARM one is broken - gcc-arm-embedded - python3 - picotool - openocd-rp2040 - ]; - - env = { - PICO_SDK_PATH = "${pkgs.pico-sdk}/lib/pico-sdk"; - }; - - scripts = { - build.exec = '' - cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -D PICO_STDIO_SEMIHOSTING=1 - cmake --build build --parallel - ''; - build-rel.exec = '' - cmake -S . -B build-release -D CMAKE_BUILD_TYPE=Release - cmake --build build-release --parallel - ''; - clean.exec = '' - rm -rf build/ build-release/ - ''; - - ocd.exec = '' - openocd -f ${./tigard-swd.cfg} -f target/rp2040.cfg - ''; - gdb.exec = '' - arm-none-eabi-gdb -x .gdbinit build/qclk.elf - ''; - }; -}