From a330a1fad3c1ccdd926297747c03fe95bcaa6587 Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Wed, 14 Aug 2024 01:34:16 -0400 Subject: nix: migrate functionality to clef --- clef/nix/model.nix | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 clef/nix/model.nix (limited to 'clef/nix/model.nix') diff --git a/clef/nix/model.nix b/clef/nix/model.nix new file mode 100644 index 0000000..04bf1b1 --- /dev/null +++ b/clef/nix/model.nix @@ -0,0 +1,52 @@ +{ + kicad, + runCommand, + + nix-filter, + lib, + + withTracks ? false, + withZones ? false, + + src, + pcb_path, + + boardName ? (lib.removeSuffix ".kicad_pcb" (builtins.baseNameOf pcb_path)), +}: let + zonesArg = if withZones then "--include-zones" else ""; + tracksArg = if withTracks then "--include-tracks" else ""; + sharePath = "share/npry/clef/model"; + +in runCommand "${boardName}.model" { + nativeBuildInputs = [ + kicad + ]; + + src = nix-filter { + root = src; + + include = [ + (nix-filter.matchExt "kicad_pcb") + + (nix-filter.matchExt "stp") + (nix-filter.matchExt "step") + (nix-filter.matchExt "wrl") + ]; + }; + + allowedRequisites = []; + + KICAD8_3DMODEL_DIR = "${kicad.libraries.packages3d}/share/kicad/3dmodels"; +} '' + set -e + + export HOME=$(mktemp -d) + + echo "board: '${boardName}'" >&2 + + mkdir -p $out/${sharePath} + cd "$out/${sharePath}" + + kicad-cli pcb export step --subst-models --no-dnp ${tracksArg} ${zonesArg} "$src/${pcb_path}" -o "${boardName}.step" + kicad-cli pcb export glb --subst-models --no-dnp ${tracksArg} ${zonesArg} "$src/${pcb_path}" -o "${boardName}.glb" +'' -- cgit v1.3.1