aboutsummaryrefslogtreecommitdiff
path: root/nix/fabrication.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix/fabrication.nix')
-rw-r--r--nix/fabrication.nix73
1 files changed, 45 insertions, 28 deletions
diff --git a/nix/fabrication.nix b/nix/fabrication.nix
index 82a5d3f..18bc6f6 100644
--- a/nix/fabrication.nix
+++ b/nix/fabrication.nix
@@ -4,62 +4,79 @@
zip,
runCommand,
+
nix-filter,
+ lib,
- panel,
-}: let
- schSrc = nix-filter {
- root = ./..;
+ src,
+ pcb_path,
+ sch_path,
- include = [
- (nix-filter.matchExt "kicad_sch")
- ];
- };
+ boardName ? (lib.removeSuffix ".kicad_pcb" (builtins.baseNameOf pcb_path)),
+
+ fabHouse ? "jlcpcb",
+ withAssembly ? true,
+}: let
+ sharePath = "share/npry/clef/fab";
- pcbSrc = nix-filter {
- root = ./..;
+ fabSrc = nix-filter {
+ root = src;
include = [
+ (nix-filter.matchExt "kicad_sch")
+ (nix-filter.matchExt "kicad_wks")
(nix-filter.matchExt "kicad_pcb")
(nix-filter.matchExt "kicad_pro")
+
+ (_args: path: type: type == "directory")
];
};
-in runCommand "ocularium.fab" {
+in runCommand "${boardName}.fab" {
nativeBuildInputs = [
kicad
kikit
zip
];
- src = panel;
+ src = fabSrc;
allowedRequisites = [];
} ''
set -e
- mkdir -p $out/share/npry/ocularium/fab
- mkdir -p $out/share/npry/ocularium/panel/fab
-
export HOME=$(mktemp -d)
- cd $out/share/npry/ocularium/fab
+ echo "board: '${boardName}'" >&2
+
+ mkdir -p "$out/${sharePath}"
+ cd "$src"
- kikit fab jlcpcb --assembly \
+ kikit fab ${fabHouse} \
+ ${if withAssembly then "--assembly" else ""} \
--no-drc \
- --schematic ${schSrc}/okm.kicad_sch \
+ --schematic "${sch_path}" \
--field 'LCSC Part #,LCSC Part No' \
--missingError \
- ${pcbSrc}/okm.kicad_pcb .
- rm -rf gerber
+ "${pcb_path}" \
+ "$out/${sharePath}"
- cd ../panel
+ cd "$out/${sharePath}"
+ rm -vf "gerbers.zip"
- kikit fab jlcpcb --assembly \
- --no-drc \
- --schematic ${schSrc}/okm.kicad_sch \
- --field 'LCSC Part #,LCSC Part No' \
- --missingError \
- $src/share/npry/ocularium/panel.kicad_pcb .
- rm -rf gerber
+ pushd gerber
+
+ # normalize
+ for f in ${boardName}-*; do
+ mv -nv "$f" "''${f#${boardName}-}"
+ done
+
+ for f in ${boardName}.*; do
+ mv -nv "$f" "board''${f#${boardName}}"
+ done
+
+ popd
+
+ zip -vj "gerbers.zip" gerber/*
+ rm -vrf gerber
''