tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
klipper-firmware: Make runtimeInput conditional
Van Tuan Vo
3 years ago
2da038a9
9271773a
+8
-11
1 changed file
expand all
collapse all
unified
split
pkgs
servers
klipper
klipper-flash.nix
+8
-11
pkgs/servers/klipper/klipper-flash.nix
···
12
12
, firmwareConfig ? ./simulator.cfg
13
13
}:
14
14
let
15
15
-
isNotSupported = with builtins; isNull (match ''^.*CONFIG_BOARD_DIRECTORY="(avr|stm32|lpc176x)".*$'' (readFile firmwareConfig));
16
16
-
isNotStm = with builtins; isNull (match ''^.*CONFIG_BOARD_DIRECTORY="(stm32)".*$'' (readFile firmwareConfig));
15
15
+
supportedArches = [ "avr" "stm32" "lpc176x" ];
16
16
+
matchBoard = with builtins; match ''^.*CONFIG_BOARD_DIRECTORY="([a-zA-Z0-9_]+)".*$'' (readFile firmwareConfig);
17
17
+
boardArch = if matchBoard == null then null else builtins.head matchBoard;
17
18
in
18
19
writeShellApplication {
19
20
name = "klipper-flash-${mcu}";
20
21
runtimeInputs = [
21
22
python2
22
22
-
avrdude
23
23
-
stm32flash
24
23
pkgsCross.avr.stdenv.cc
25
24
gnumake
26
26
-
];
25
25
+
] ++ lib.optionals (boardArch == "avr") [ avrdude ] ++ lib.optionals (boardArch == "stm32") [ stm32flash ];
27
26
text = ''
28
28
-
NOT_SUPPORTED=${lib.boolToString isNotSupported}
29
29
-
NOT_STM=${lib.boolToString isNotStm}
30
30
-
if $NOT_SUPPORTED; then
27
27
+
if ${lib.boolToString (!builtins.elem boardArch supportedArches)}; then
31
28
printf "Flashing Klipper firmware to your board is not supported yet.\n"
32
29
printf "Please use the compiled firmware at ${klipper-firmware} and flash it using the tools provided for your microcontroller."
33
30
exit 1
34
31
fi
35
35
-
if $NOT_STM; then
36
36
-
make -C ${klipper.src} FLASH_DEVICE="${toString flashDevice}" OUT="${klipper-firmware}/" KCONFIG_CONFIG="${klipper-firmware}/config" flash
32
32
+
if ${lib.boolToString (boardArch == "stm32")}; then
33
33
+
make -C ${klipper.src} FLASH_DEVICE="${toString flashDevice}" OUT="${klipper-firmware}/" KCONFIG_CONFIG="${klipper-firmware}/config" serialflash
37
34
else
38
38
-
make -C ${klipper.src} FLASH_DEVICE="${toString flashDevice}" OUT="${klipper-firmware}/" KCONFIG_CONFIG="${klipper-firmware}/config" serialflash
35
35
+
make -C ${klipper.src} FLASH_DEVICE="${toString flashDevice}" OUT="${klipper-firmware}/" KCONFIG_CONFIG="${klipper-firmware}/config" flash
39
36
fi
40
37
'';
41
38
}