{ kicad, runCommand, nix-filter, panel, withTracks ? false, withZones ? false, }: let zonesArg = if withZones then "--include-zones" else ""; tracksArg = if withTracks then "--include-tracks" else ""; in runCommand "ocularium.model" { nativeBuildInputs = [ kicad ]; src = nix-filter { root = ./..; exclude = [ "nix" ".gitignore" "flake.nix" "flake.lock" ".envrc" "kikit" ]; }; allowedRequisites = []; KICAD8_3DMODEL_DIR = "${kicad.libraries.packages3d}/share/kicad/3dmodels"; } '' set -e mkdir -p $out/share/npry/ocularium/model mkdir -p $out/share/npry/ocularium/panel/model export HOME=$(mktemp -d) cd $out/share/npry/ocularium/model kicad-cli pcb export step --subst-models --no-dnp ${tracksArg} ${zonesArg} $src/okm.kicad_pcb -o ocularium.step kicad-cli pcb export glb --subst-models --no-dnp ${tracksArg} ${zonesArg} $src/okm.kicad_pcb -o ocularium.glb cd ../panel/model kicad-cli pcb export step --subst-models --no-dnp ${tracksArg} ${zonesArg} ${panel}/share/npry/ocularium/panel.kicad_pcb -o panel.step kicad-cli pcb export glb --subst-models --no-dnp ${tracksArg} ${zonesArg} ${panel}/share/npry/ocularium/panel.kicad_pcb -o panel.glb ''