aboutsummaryrefslogtreecommitdiff
path: root/nix/fabrication.nix
blob: 82a5d3f516be946fadcd703cc608e567638b0cf1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
{
  kicad,
  kikit,
  zip,

  runCommand,
  nix-filter,

  panel,
}: let
  schSrc = nix-filter {
    root = ./..;

    include = [
      (nix-filter.matchExt "kicad_sch")
    ];
  };

  pcbSrc = nix-filter {
    root = ./..;

    include = [
      (nix-filter.matchExt "kicad_pcb")
      (nix-filter.matchExt "kicad_pro")
    ];
  };

in runCommand "ocularium.fab" {
  nativeBuildInputs = [
    kicad
    kikit
    zip
  ];

  src = panel;

  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

  kikit fab jlcpcb --assembly \
    --no-drc \
    --schematic ${schSrc}/okm.kicad_sch \
    --field 'LCSC Part #,LCSC Part No' \
    --missingError \
    ${pcbSrc}/okm.kicad_pcb .
  rm -rf gerber

  cd ../panel

  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
''