diff options
Diffstat (limited to 'hw/clef/nix/bom.nix')
| -rw-r--r-- | hw/clef/nix/bom.nix | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/hw/clef/nix/bom.nix b/hw/clef/nix/bom.nix new file mode 100644 index 0000000..fbff8ff --- /dev/null +++ b/hw/clef/nix/bom.nix @@ -0,0 +1,48 @@ +{ + runCommand, + interactiveHtmlBom, + + nix-filter, + lib, + + pcb_path, + src, + + boardName ? (lib.removeSuffix ".kicad_pcb" (builtins.baseNameOf pcb_path)), + extraArgs ? [ + "--dark-mode" + "--include-tracks" + "--include-nets" + ], +}: let + sharePath = "share/npry/clef/bom"; + +in runCommand "${boardName}.bom" { + nativeBuildInputs = [ + interactiveHtmlBom + ]; + + INTERACTIVE_HTML_BOM_NO_DISPLAY = 1; + + src = nix-filter { + root = src; + + include = [ + (nix-filter.matchExt "kicad_pcb") + (nix-filter.matchExt "kicad_pro") + (nix-filter.matchExt "kicad_wks") + + (_args: path: type: type == "directory") + ]; + }; +} '' + mkdir -p "$out/${sharePath}" + + cd $src + + generate_interactive_bom \ + --dest-dir "$out/${sharePath}" \ + --no-browser \ + ${lib.concatMapStrings (arg: "${arg} \\\n") extraArgs} \ + "$src/${pcb_path}" +'' |
