diff options
Diffstat (limited to 'nix/model.nix')
| -rw-r--r-- | nix/model.nix | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/nix/model.nix b/nix/model.nix new file mode 100644 index 0000000..daa86ca --- /dev/null +++ b/nix/model.nix @@ -0,0 +1,53 @@ +{ + 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 +'' |
