about summary refs log tree commit diff
path: root/pkgs/servers/klipper/klipper-flash.nix
diff options
context:
space:
mode:
authorVan Tuan Vo <mail@tuan-vo.de>2022-03-22 01:48:17 +0100
committerVan Tuan Vo <mail@tuan-vo.de>2022-03-22 09:21:36 +0100
commit2da038a900f36ee75847f717fa447c02fd4c2df2 (patch)
tree5680250f527f5a7ced0eef339013a0822edc4bed /pkgs/servers/klipper/klipper-flash.nix
parent9271773a7bfd0871a1673c32fd372a0769cb4942 (diff)
klipper-firmware: Make runtimeInput conditional
Diffstat (limited to 'pkgs/servers/klipper/klipper-flash.nix')
-rw-r--r--pkgs/servers/klipper/klipper-flash.nix19
1 files changed, 8 insertions, 11 deletions
diff --git a/pkgs/servers/klipper/klipper-flash.nix b/pkgs/servers/klipper/klipper-flash.nix
index a9c6ecdac4062..fedc477c27617 100644
--- a/pkgs/servers/klipper/klipper-flash.nix
+++ b/pkgs/servers/klipper/klipper-flash.nix
@@ -12,30 +12,27 @@
 , firmwareConfig ? ./simulator.cfg
 }:
 let
-  isNotSupported = with builtins; isNull (match ''^.*CONFIG_BOARD_DIRECTORY="(avr|stm32|lpc176x)".*$'' (readFile firmwareConfig));
-  isNotStm = with builtins; isNull (match ''^.*CONFIG_BOARD_DIRECTORY="(stm32)".*$'' (readFile firmwareConfig));
+  supportedArches = [ "avr" "stm32" "lpc176x" ];
+  matchBoard = with builtins; match ''^.*CONFIG_BOARD_DIRECTORY="([a-zA-Z0-9_]+)".*$'' (readFile firmwareConfig);
+  boardArch = if matchBoard == null then null else builtins.head matchBoard;
 in
 writeShellApplication {
   name = "klipper-flash-${mcu}";
   runtimeInputs = [
     python2
-    avrdude
-    stm32flash
     pkgsCross.avr.stdenv.cc
     gnumake
-  ];
+  ] ++ lib.optionals (boardArch == "avr") [ avrdude ] ++ lib.optionals (boardArch == "stm32") [ stm32flash ];
   text = ''
-    NOT_SUPPORTED=${lib.boolToString isNotSupported}
-    NOT_STM=${lib.boolToString isNotStm}
-    if $NOT_SUPPORTED; then
+    if ${lib.boolToString (!builtins.elem boardArch supportedArches)}; then
       printf "Flashing Klipper firmware to your board is not supported yet.\n"
       printf "Please use the compiled firmware at ${klipper-firmware} and flash it using the tools provided for your microcontroller."
       exit 1
     fi
-    if $NOT_STM; then
-      make -C ${klipper.src} FLASH_DEVICE="${toString flashDevice}" OUT="${klipper-firmware}/" KCONFIG_CONFIG="${klipper-firmware}/config" flash
-    else
+    if ${lib.boolToString (boardArch == "stm32")}; then
       make -C ${klipper.src} FLASH_DEVICE="${toString flashDevice}" OUT="${klipper-firmware}/" KCONFIG_CONFIG="${klipper-firmware}/config" serialflash
+    else
+      make -C ${klipper.src} FLASH_DEVICE="${toString flashDevice}" OUT="${klipper-firmware}/" KCONFIG_CONFIG="${klipper-firmware}/config" flash
     fi
   '';
 }