From 9e1f359d788ec3c4f2d4ebe4ba8134da0c38a928 Mon Sep 17 00:00:00 2001 From: linuswck Date: Tue, 12 Dec 2023 11:43:39 +0800 Subject: [PATCH] flake: Generate prod files with flake.nix - Generate production files with nix build . --- .gitignore | 5 +- flake.lock | 44 +++++++ flake.nix | 66 +++++++++++ scripts/diff_sch_svg.py | 15 --- scripts/generate_bom_from_xml.py | 63 ---------- scripts/generate_production_files.py | 112 ------------------ asupply.kicad_sch => src/asupply.kicad_sch | 0 .../driveStage.kicad_sch | 0 dsupply.kicad_sch => src/dsupply.kicad_sch | 0 eth.kicad_sch => src/eth.kicad_sch | 0 src/flake.lock | 27 +++++ src/flake.nix | 39 ++++++ fp-lib-table => src/fp-lib-table | 0 {graphics => src/graphics}/logo.svg | 0 kirdy.ioc => src/kirdy.ioc | 0 kirdy.kicad_dru => src/kirdy.kicad_dru | 0 kirdy.kicad_pcb => src/kirdy.kicad_pcb | 0 kirdy.kicad_pro => src/kirdy.kicad_pro | 0 kirdy.kicad_sch => src/kirdy.kicad_sch | 0 kirdy.kicad_sym => src/kirdy.kicad_sym | 0 .../kirdy.pretty}/1156915.kicad_mod | 0 ...56915_00_00_FQ-2-54D-20-PV-380-1-BT_3D.stp | 0 .../kirdy.pretty}/132203-12.stp | 0 .../kirdy.pretty}/204-121ST.kicad_mod | 0 .../kirdy.pretty}/204-121ST.stpz | Bin .../kirdy.pretty}/629722000214.stp | 0 .../kirdy.pretty}/744273501.stp | 0 .../kirdy.pretty}/AD7172-4BCPZ.stp | 0 .../kirdy.pretty}/AG5300.kicad_mod | 0 ...M11C7-114-BA-EW2--3DModel-STEP-368357.STEP | 0 .../ARJM11C7-114-BA-EW2_ABR.kicad_mod | 0 .../kirdy.pretty}/ARJP11A v1.step | 0 .../Adafuit_SWD_Header_4048.kicad_mod | 0 .../kirdy.pretty}/Ag5300.step | 0 .../BG050-10A-0-0450-0737-0350-L-D.kicad_mod | 0 .../BG050-10A-0-0450-0737-0350-L-D.stp | 0 .../BG050-10A-0-0650-0737-0350-L-B.stp | 0 .../BG050-10A-0-0650-0737-0350-L-D.kicad_mod | 0 .../kirdy.pretty}/CAPC1810X65N.kicad_mod | 0 .../Cap_Elec_SMD_865080345012.kicad_mod | 0 .../kirdy.pretty}/DMP4015SK3.kicad_mod | 0 .../kirdy.pretty}/FKH0008A.stp | 0 .../kirdy.pretty}/FP_1550_3U8HP_PANEL.step | 0 .../kirdy.pretty}/GRMJN65C1H104JE01J.stp | 0 .../kirdy.pretty}/Kirdy_LD_Adapter.kicad_mod | 0 .../kirdy.pretty}/Kirdy_LD_Adapter.step | 0 .../LCC127P500X500X155-8N.kicad_mod | 0 .../kirdy.pretty}/LTC6655BHMS8-4.096#PBF.stp | 0 .../kirdy.pretty}/PM1202.kicad_mod | 0 .../kirdy.pretty}/PM1202.step | 0 .../kirdy.pretty}/Panel.kicad_mod | 0 .../kirdy.pretty}/Panel_Cutout.kicad_mod | 0 .../QFN50P500X500X80-33N-D.kicad_mod | 0 .../kirdy.pretty}/R_Shunt_VCS1625ZP.kicad_mod | 0 .../kirdy.pretty}/SOIC8-TL082Hx.kicad_mod | 0 .../kirdy.pretty}/SOP65P490X110-8N.kicad_mod | 0 .../kirdy.pretty}/TO-220-F4.stp | 0 .../kirdy.pretty}/Type-C 16P.STEP | 0 .../kirdy.pretty}/WE-SL5_HC_744273 (rev1).stp | 0 mcu.kicad_sch => src/mcu.kicad_sch | 0 sym-lib-table => src/sym-lib-table | 0 .../thermostat.kicad_sch | 0 usb.kicad_sch => src/usb.kicad_sch | 0 63 files changed, 180 insertions(+), 191 deletions(-) create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100644 scripts/diff_sch_svg.py delete mode 100644 scripts/generate_bom_from_xml.py delete mode 100644 scripts/generate_production_files.py rename asupply.kicad_sch => src/asupply.kicad_sch (100%) rename driveStage.kicad_sch => src/driveStage.kicad_sch (100%) rename dsupply.kicad_sch => src/dsupply.kicad_sch (100%) rename eth.kicad_sch => src/eth.kicad_sch (100%) create mode 100644 src/flake.lock create mode 100644 src/flake.nix rename fp-lib-table => src/fp-lib-table (100%) rename {graphics => src/graphics}/logo.svg (100%) rename kirdy.ioc => src/kirdy.ioc (100%) rename kirdy.kicad_dru => src/kirdy.kicad_dru (100%) rename kirdy.kicad_pcb => src/kirdy.kicad_pcb (100%) rename kirdy.kicad_pro => src/kirdy.kicad_pro (100%) rename kirdy.kicad_sch => src/kirdy.kicad_sch (100%) rename kirdy.kicad_sym => src/kirdy.kicad_sym (100%) rename {kirdy.pretty => src/kirdy.pretty}/1156915.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/1156915_00_00_FQ-2-54D-20-PV-380-1-BT_3D.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/132203-12.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/204-121ST.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/204-121ST.stpz (100%) rename {kirdy.pretty => src/kirdy.pretty}/629722000214.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/744273501.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/AD7172-4BCPZ.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/AG5300.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/ARJM11C7-114-BA-EW2--3DModel-STEP-368357.STEP (100%) rename {kirdy.pretty => src/kirdy.pretty}/ARJM11C7-114-BA-EW2_ABR.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/ARJP11A v1.step (100%) rename {kirdy.pretty => src/kirdy.pretty}/Adafuit_SWD_Header_4048.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/Ag5300.step (100%) rename {kirdy.pretty => src/kirdy.pretty}/BG050-10A-0-0450-0737-0350-L-D.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/BG050-10A-0-0450-0737-0350-L-D.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/BG050-10A-0-0650-0737-0350-L-B.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/BG050-10A-0-0650-0737-0350-L-D.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/CAPC1810X65N.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/Cap_Elec_SMD_865080345012.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/DMP4015SK3.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/FKH0008A.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/FP_1550_3U8HP_PANEL.step (100%) rename {kirdy.pretty => src/kirdy.pretty}/GRMJN65C1H104JE01J.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/Kirdy_LD_Adapter.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/Kirdy_LD_Adapter.step (100%) rename {kirdy.pretty => src/kirdy.pretty}/LCC127P500X500X155-8N.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/LTC6655BHMS8-4.096#PBF.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/PM1202.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/PM1202.step (100%) rename {kirdy.pretty => src/kirdy.pretty}/Panel.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/Panel_Cutout.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/QFN50P500X500X80-33N-D.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/R_Shunt_VCS1625ZP.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/SOIC8-TL082Hx.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/SOP65P490X110-8N.kicad_mod (100%) rename {kirdy.pretty => src/kirdy.pretty}/TO-220-F4.stp (100%) rename {kirdy.pretty => src/kirdy.pretty}/Type-C 16P.STEP (100%) rename {kirdy.pretty => src/kirdy.pretty}/WE-SL5_HC_744273 (rev1).stp (100%) rename mcu.kicad_sch => src/mcu.kicad_sch (100%) rename sym-lib-table => src/sym-lib-table (100%) rename thermostat.kicad_sch => src/thermostat.kicad_sch (100%) rename usb.kicad_sch => src/usb.kicad_sch (100%) diff --git a/.gitignore b/.gitignore index e91d255..d323e4e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ # Temporary files *.000 +*.cache +*.config +*.local *.bak *.bck *.kicad_pcb-bak @@ -28,4 +31,4 @@ __pycache__ *.ses # Generated Production Files -production \ No newline at end of file +result diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..d80231a --- /dev/null +++ b/flake.lock @@ -0,0 +1,44 @@ +{ + "nodes": { + "kicad_bom_generator": { + "flake": false, + "locked": { + "lastModified": 1702353729, + "narHash": "sha256-NIM/GLC71VdGdMletBBv9lSPuHpgD9zzeGiVQLEAULA=", + "ref": "refs/heads/main", + "rev": "72686f5556785c9aa13678dc42757dddfb7d7c23", + "revCount": 2, + "type": "git", + "url": "https://git.m-labs.hk/linuswck/KiCAD_BOM_Generator.git" + }, + "original": { + "type": "git", + "url": "https://git.m-labs.hk/linuswck/KiCAD_BOM_Generator.git" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1701952659, + "narHash": "sha256-TJv2srXt6fYPUjxgLAL0cy4nuf1OZD4KuA1TrCiQqg0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b4372c4924d9182034066c823df76d6eaf1f4ec4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "kicad_bom_generator": "kicad_bom_generator", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..1299542 --- /dev/null +++ b/flake.nix @@ -0,0 +1,66 @@ +{ + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; + inputs.kicad_bom_generator = { + url = "git+https://git.m-labs.hk/linuswck/KiCAD_BOM_Generator.git"; + flake = false; + }; + + outputs = { self, nixpkgs, kicad_bom_generator }: { + formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt; + + devShells.x86_64-linux.default = + let pkgs = nixpkgs.legacyPackages.x86_64-linux; + in pkgs.mkShell { + name = "kicad-dev-shell"; + buildInputs = [ pkgs.kicad ]; + }; + + defaultPackage.x86_64-linux = + with import nixpkgs { system = "x86_64-linux"; }; + stdenv.mkDerivation { + name = "production_files"; + src = ./src; + + nativeBuildInputs = [ pkgs.kicad pkgs.zip pkgs.python3 ]; + + buildPhase = '' + # kicad-cli requires the use of $HOME + export HOME=/tmp + + SCH=kirdy.kicad_sch + PCB=kirdy.kicad_pcb + + # Get Revision Number from the Title Block in KiCAD Top Schematics + REV=$(cat $SCH | grep rev | cut -d'"' -f 2) + PREFIX=kirdy_$REV + + kicad-cli sch export python-bom $SCH -o $PREFIX"_bom".xml + export PYTHONPATH=${pkgs.kicad.base}/share/kicad/plugins + python ${kicad_bom_generator}/generate_bom_from_xml.py $PREFIX"_bom".xml $PREFIX"_bom".csv + + kicad-cli sch export pdf $SCH -o $PREFIX.pdf + kicad-cli pcb export pos $PCB --format csv --units mm -o $PREFIX"_pos".csv + + export KICAD7_3DMODEL_DIR=${pkgs.kicad.libraries.packages3d}/share/kicad/3dmodels + kicad-cli pcb export step $PCB --subst-models --force -o $PREFIX.step + + mkdir -p $PREFIX"_gerber_drill" + kicad-cli pcb export gerbers $PCB -l 'F.Cu,In1.Cu,In2.Cu,B.Cu,F.Paste,B.Paste,F.Silkscreen,B.Silkscreen,F.Mask,B.Mask,Edge.Cuts' --no-x2 --subtract-soldermask -o ./$PREFIX"_gerber_drill" + + # The additional trailing slash is due to a bug in the kicad-cli tool. https://gitlab.com/kicad/code/kicad/-/issues/14438 + kicad-cli pcb export drill $PCB -u mm --generate-map --map-format gerberx2 -o ./$PREFIX"_gerber_drill"/ + + zip -r -j $PREFIX"_gerber_drill" $PREFIX"_gerber_drill" + ''; + + installPhase = '' + mkdir -p $out/production_files + cp $PREFIX"_bom".csv $out/production_files/$PREFIX"_bom".csv + cp $PREFIX.pdf $out/production_files/$PREFIX.pdf + cp $PREFIX"_pos".csv $out/production_files/$PREFIX"_pos.csv" + cp $PREFIX.step $out/production_files/$PREFIX.step + cp $PREFIX"_gerber_drill".zip $out/production_files/$PREFIX"_gerber_drill".zip + ''; + }; + }; +} diff --git a/scripts/diff_sch_svg.py b/scripts/diff_sch_svg.py deleted file mode 100644 index 65b0e2b..0000000 --- a/scripts/diff_sch_svg.py +++ /dev/null @@ -1,15 +0,0 @@ -import os - -dir1 = "./production/svg" -dir2 = "./production/svg_org" - -svg_sch_files = os.popen("ls ./production/svg").read().split("\n") -svg_org_sch_files = os.popen("ls ./production/svg_org").read().split("\n") - -print(svg_sch_files) -print(svg_org_sch_files) -for org_svg in svg_org_sch_files: - print("#############") - #print(os.path.join('./production/svg', svg)) - print(os.path.join('./production/svg', org_svg)) - os.system(f"python -m scripts.k-eediff-svg {os.path.join('./production/svg', org_svg)} {os.path.join('./production/svg_org', org_svg)}") \ No newline at end of file diff --git a/scripts/generate_bom_from_xml.py b/scripts/generate_bom_from_xml.py deleted file mode 100644 index ebe7f60..0000000 --- a/scripts/generate_bom_from_xml.py +++ /dev/null @@ -1,63 +0,0 @@ -# Modified from "bom_csv_grouped_by_value_with_fp.py" Example BOM Generation Script - -""" - @package - Output: CSV (comma-separated) - The BOM does not include components with DNP or excluded from BOM field(s) checked. - Grouped By: Value, Footprint, MFR_PN, MFR_ALT - Sorted By: Ref - Fields: Ref, Value, MFR_PN, MFR_PN_ALT, Qnty, LibPart, Footprint, Comment - - Command line: - python "pathToFile/generate_bom_from_xml.py" "%I" "%O.csv" -""" - -import kicad_netlist_reader -import csv -import sys -import os - -try: - if not os.path.isdir(os.path.dirname(sys.argv[2])): - os.makedirs(os.path.dirname(sys.argv[2])) - f = open(sys.argv[2], 'w', encoding='utf-8') -except IOError: - raise IOError("Can't open output file for writing: " + sys.argv[2]) - -# Custom Equal Operator for "groupComponents" method -def __eq__(self, other): - result = False - if self.getValue() == other.getValue(): - if self.getFootprint() == other.getFootprint(): - if self.getField("MFR_PN") == other.getField("MFR_PN"): - if self.getField("MFR_PN_ALT") == other.getField("MFR_PN_ALT"): - result = True - return result -kicad_netlist_reader.comp.__eq__ = __eq__ - -net = kicad_netlist_reader.netlist(sys.argv[1]) - -out = csv.writer(f, lineterminator='\n', delimiter=',', quotechar='\"', quoting=csv.QUOTE_ALL) -out.writerow(['Source:', net.getSource()]) -out.writerow(['Date:', net.getDate()]) -out.writerow(['Tool:', net.getTool()]) -out.writerow(['Ref', 'Value', 'MFR_PN', 'MFR_PN_ALT', 'Qnty', 'LibPart', 'Footprint', 'Comment']) - -grouped = net.groupComponents(components=net.getInterestingComponents(excludeBOM=True, DNP=True)) - -for group in grouped: - refs = "" - for component in group: - if refs != "": - refs += ", " - refs += component.getRef() - c = component - - out.writerow([refs, - c.getValue(), - c.getField("MFR_PN"), - c.getField("MFR_PN_ALT"), - len(group), - c.getLibName() + ":" + c.getPartName(), - c.getFootprint(), - c.getField("Comment")]) diff --git a/scripts/generate_production_files.py b/scripts/generate_production_files.py deleted file mode 100644 index 5c6fe85..0000000 --- a/scripts/generate_production_files.py +++ /dev/null @@ -1,112 +0,0 @@ -import os -import argparse - -__cmd_get_kicad_bin_path = "which kicad | xargs readlink | sed 's/$/-cli/' | xargs readlink" - -def setup_env(prefix, sch, out_dir, dir_kicad_plugins, dir_3d_models): - # Get the path to "kicad_netlist_reader.py" script in NixOs - if dir_kicad_plugins is None: - dir_kicad_plugins = os.path.join(os.popen(__cmd_get_kicad_bin_path).read().replace("\n", ""), - "../../share/kicad/plugins") - - # Setup the PYTHONPATH for "generate_bom_from_xml.py" to import "kicad_netlist_reader" - try: - pythonpath = os.environ['PYTHONPATH'] - except KeyError: - pythonpath = '' - pathlist = [dir_kicad_plugins] - if pythonpath: - pathlist.extend(pythonpath.split(os.pathsep)) - os.environ['PYTHONPATH'] = os.pathsep.join(pathlist) - - # NIXOS installs KiCAD Built-in 3D models in a separated folder - if dir_3d_models is None: - temp = os.popen("ls /nix/store | grep kicad-packages3d").read().split() - for model_3d_path in temp: - if model_3d_path.find(".drv") == -1: - # Setup the KICAD7_3DMODEL_DIR for step file to be generated with kicad-cli" - os.environ['KICAD7_3DMODEL_DIR'] = os.path.join("/nix/store", model_3d_path, "share/kicad/3dmodels") - break - - # Generate the prefix from the title and revision fields in title block of the schematics top - if prefix is None: - with open (sch, "r") as f: - data = f.read().splitlines() - title_line = data[7][1:-1].split() - revision_line = data[9][1:-1].split() - if title_line[0].find("title") and revision_line[0].find("rev"): - ret_prefix = f"{title_line[1][1:-1]}_{revision_line[1][1:-1]}" - else: - raise ValueError("Prefix cannot be generated from schematic file.") - else: - ret_prefix = prefix - - gerber_drill_dir = os.path.join(out_dir, f"{ret_prefix}_gerber_drill") - if not os.path.exists(out_dir): - os.makedirs(out_dir) - if not os.path.exists(gerber_drill_dir): - os.makedirs(gerber_drill_dir) - - return ret_prefix - -def generate_production_files(prefix, sch, pcb, out_dir): - out_path = os.path.join(out_dir, prefix) - - bom_ret_code = os.system(f"kicad-cli sch export python-bom {sch} -o {out_path}_bom.xml") - bom_ret_code |= os.system(f"python -m scripts.generate_bom_from_xml {out_path}_bom.xml {out_path}_bom.csv") - os.system(f"rm {out_path}_bom.xml") - - pdf_ret_code = os.system(f"kicad-cli sch export pdf {sch} -o {out_path}.pdf") - - pos_ret_code = os.system(f"kicad-cli pcb export pos {pcb} --format csv --units mm -o {out_path}_pos.csv") - - step_ret_code = os.system(f"kicad-cli pcb export step {pcb} --subst-models --force -o {out_path}.step") - - out_path = os.path.join(out_dir, f"{prefix}_gerber_drill") - - gerber_ret_code = os.system(f"kicad-cli pcb export gerbers {pcb} -l 'F.Cu,In1.Cu,In2.Cu,B.Cu,F.Paste,B.Paste,F.Silkscreen,B.Silkscreen,F.Mask,B.Mask,Edge.Cuts' --no-x2 --subtract-soldermask -o {out_path}") - - # The additional trailing slash is due to a bug in the kicad-cli tool. https://gitlab.com/kicad/code/kicad/-/issues/14438 - drill_ret_code = os.system(f"kicad-cli pcb export drill {pcb} -u mm --generate-map --map-format gerberx2 -o {out_path}/") - zip_ret_code = os.system(f"zip -r -j {out_path} {out_path}") - os.system(f"rm -r {out_path}") - - print("=== File Generation Status === ") - print("Gerber: {}".format("Success" if gerber_ret_code == 0 else "Failed")) - print("Drill: {}".format("Success" if drill_ret_code == 0 else "Failed")) - print("Zip_Gerber_Drill: {}".format("Success" if zip_ret_code == 0 else "Failed")) - print("Bom: {}".format("Success" if bom_ret_code == 0 else "Failed")) - print("Pdf: {}".format("Success" if pdf_ret_code == 0 else "Failed")) - print("Pos: {}".format("Success" if pos_ret_code == 0 else "Failed")) - print("Step: {}".format("Success" if step_ret_code == 0 else "Failed")) - -def main(): - parser = argparse.ArgumentParser( - description="Python Script to Generate Production Files(Gerber, Drill, Drill Map, Bom, Component Placement, Schematics PDF, Step Files)") - parser.add_argument("-s", "--sch", - default="kirdy.kicad_sch", - help="schematics top file. defaults to 'kirdy.kicad_sch' if omitted") - parser.add_argument("-p", "--pcb", - default="kirdy.kicad_pcb", - help="pcb file. defaults to 'kirdy.kicad_pcb' if omitted") - parser.add_argument("-o", "--output", - default="./production", - help="output folder, defaults to './production' if omitted") - parser.add_argument("-pre", "--prefix", - default=None, - help="output filename prefix, attempts to generated from schematics top file if omitted") - parser.add_argument("-dir_plugins", "--dir_kicad_plugins", - default=None, - help="path to kicad_netlist_reader.py, attempts to find the required path in the system if omitted") - parser.add_argument("-dir_3d", "--dir_3d_models", - default=None, - help="path to kicad 3d models folder, attempts to find the required path in the system if omitted") - - args = parser.parse_args() - - prefix = setup_env(args.prefix, args.sch, args.output, args.dir_kicad_plugins, args.dir_3d_models) - - generate_production_files(prefix, args.sch, args.pcb, args.output) - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/asupply.kicad_sch b/src/asupply.kicad_sch similarity index 100% rename from asupply.kicad_sch rename to src/asupply.kicad_sch diff --git a/driveStage.kicad_sch b/src/driveStage.kicad_sch similarity index 100% rename from driveStage.kicad_sch rename to src/driveStage.kicad_sch diff --git a/dsupply.kicad_sch b/src/dsupply.kicad_sch similarity index 100% rename from dsupply.kicad_sch rename to src/dsupply.kicad_sch diff --git a/eth.kicad_sch b/src/eth.kicad_sch similarity index 100% rename from eth.kicad_sch rename to src/eth.kicad_sch diff --git a/src/flake.lock b/src/flake.lock new file mode 100644 index 0000000..c19674c --- /dev/null +++ b/src/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1701952659, + "narHash": "sha256-TJv2srXt6fYPUjxgLAL0cy4nuf1OZD4KuA1TrCiQqg0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b4372c4924d9182034066c823df76d6eaf1f4ec4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/src/flake.nix b/src/flake.nix new file mode 100644 index 0000000..f2a6a71 --- /dev/null +++ b/src/flake.nix @@ -0,0 +1,39 @@ +{ + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; + + outputs = { self, nixpkgs }: { + + devShells.x86_64-linux.default = + let pkgs = nixpkgs.legacyPackages.x86_64-linux; + in pkgs.mkShell { + name = "kicad-dev-shell"; + buildInputs = [ pkgs.kicad ]; + shellHook = '' + export KICAD7_3DMODEL_DIR=${pkgs.kicad.libraries.packages3d} + export PYTHONPATH=${pkgs.kicad.base}/share/kicad/plugins + export OUTPUT_DIR=$(pwd)/production + ''; + }; + + defaultPackage.x86_64-linux = # Notice the reference to nixpkgs here. + with import nixpkgs { system = "x86_64-linux"; }; + stdenv.mkDerivation { + name = "proj"; + src = self; + + nativeBuildInputs = [ pkgs.kicad pkgs.python3 ]; + buildPhase = '' + export HOME=/tmp + echo ${src} + kicad-cli sch export pdf ${src}/kirdy.kicad_sch -o kirdy.pdf + ''; + installPhase = "echo test"; + }; + + }; + # pkgs = nixpkgs.legacyPackages.x86_64-linux; + # nativeBuildInputs = [ + # pkgs.kicad pkgs.python3 + # ]; + +} diff --git a/fp-lib-table b/src/fp-lib-table similarity index 100% rename from fp-lib-table rename to src/fp-lib-table diff --git a/graphics/logo.svg b/src/graphics/logo.svg similarity index 100% rename from graphics/logo.svg rename to src/graphics/logo.svg diff --git a/kirdy.ioc b/src/kirdy.ioc similarity index 100% rename from kirdy.ioc rename to src/kirdy.ioc diff --git a/kirdy.kicad_dru b/src/kirdy.kicad_dru similarity index 100% rename from kirdy.kicad_dru rename to src/kirdy.kicad_dru diff --git a/kirdy.kicad_pcb b/src/kirdy.kicad_pcb similarity index 100% rename from kirdy.kicad_pcb rename to src/kirdy.kicad_pcb diff --git a/kirdy.kicad_pro b/src/kirdy.kicad_pro similarity index 100% rename from kirdy.kicad_pro rename to src/kirdy.kicad_pro diff --git a/kirdy.kicad_sch b/src/kirdy.kicad_sch similarity index 100% rename from kirdy.kicad_sch rename to src/kirdy.kicad_sch diff --git a/kirdy.kicad_sym b/src/kirdy.kicad_sym similarity index 100% rename from kirdy.kicad_sym rename to src/kirdy.kicad_sym diff --git a/kirdy.pretty/1156915.kicad_mod b/src/kirdy.pretty/1156915.kicad_mod similarity index 100% rename from kirdy.pretty/1156915.kicad_mod rename to src/kirdy.pretty/1156915.kicad_mod diff --git a/kirdy.pretty/1156915_00_00_FQ-2-54D-20-PV-380-1-BT_3D.stp b/src/kirdy.pretty/1156915_00_00_FQ-2-54D-20-PV-380-1-BT_3D.stp similarity index 100% rename from kirdy.pretty/1156915_00_00_FQ-2-54D-20-PV-380-1-BT_3D.stp rename to src/kirdy.pretty/1156915_00_00_FQ-2-54D-20-PV-380-1-BT_3D.stp diff --git a/kirdy.pretty/132203-12.stp b/src/kirdy.pretty/132203-12.stp similarity index 100% rename from kirdy.pretty/132203-12.stp rename to src/kirdy.pretty/132203-12.stp diff --git a/kirdy.pretty/204-121ST.kicad_mod b/src/kirdy.pretty/204-121ST.kicad_mod similarity index 100% rename from kirdy.pretty/204-121ST.kicad_mod rename to src/kirdy.pretty/204-121ST.kicad_mod diff --git a/kirdy.pretty/204-121ST.stpz b/src/kirdy.pretty/204-121ST.stpz similarity index 100% rename from kirdy.pretty/204-121ST.stpz rename to src/kirdy.pretty/204-121ST.stpz diff --git a/kirdy.pretty/629722000214.stp b/src/kirdy.pretty/629722000214.stp similarity index 100% rename from kirdy.pretty/629722000214.stp rename to src/kirdy.pretty/629722000214.stp diff --git a/kirdy.pretty/744273501.stp b/src/kirdy.pretty/744273501.stp similarity index 100% rename from kirdy.pretty/744273501.stp rename to src/kirdy.pretty/744273501.stp diff --git a/kirdy.pretty/AD7172-4BCPZ.stp b/src/kirdy.pretty/AD7172-4BCPZ.stp similarity index 100% rename from kirdy.pretty/AD7172-4BCPZ.stp rename to src/kirdy.pretty/AD7172-4BCPZ.stp diff --git a/kirdy.pretty/AG5300.kicad_mod b/src/kirdy.pretty/AG5300.kicad_mod similarity index 100% rename from kirdy.pretty/AG5300.kicad_mod rename to src/kirdy.pretty/AG5300.kicad_mod diff --git a/kirdy.pretty/ARJM11C7-114-BA-EW2--3DModel-STEP-368357.STEP b/src/kirdy.pretty/ARJM11C7-114-BA-EW2--3DModel-STEP-368357.STEP similarity index 100% rename from kirdy.pretty/ARJM11C7-114-BA-EW2--3DModel-STEP-368357.STEP rename to src/kirdy.pretty/ARJM11C7-114-BA-EW2--3DModel-STEP-368357.STEP diff --git a/kirdy.pretty/ARJM11C7-114-BA-EW2_ABR.kicad_mod b/src/kirdy.pretty/ARJM11C7-114-BA-EW2_ABR.kicad_mod similarity index 100% rename from kirdy.pretty/ARJM11C7-114-BA-EW2_ABR.kicad_mod rename to src/kirdy.pretty/ARJM11C7-114-BA-EW2_ABR.kicad_mod diff --git a/kirdy.pretty/ARJP11A v1.step b/src/kirdy.pretty/ARJP11A v1.step similarity index 100% rename from kirdy.pretty/ARJP11A v1.step rename to src/kirdy.pretty/ARJP11A v1.step diff --git a/kirdy.pretty/Adafuit_SWD_Header_4048.kicad_mod b/src/kirdy.pretty/Adafuit_SWD_Header_4048.kicad_mod similarity index 100% rename from kirdy.pretty/Adafuit_SWD_Header_4048.kicad_mod rename to src/kirdy.pretty/Adafuit_SWD_Header_4048.kicad_mod diff --git a/kirdy.pretty/Ag5300.step b/src/kirdy.pretty/Ag5300.step similarity index 100% rename from kirdy.pretty/Ag5300.step rename to src/kirdy.pretty/Ag5300.step diff --git a/kirdy.pretty/BG050-10A-0-0450-0737-0350-L-D.kicad_mod b/src/kirdy.pretty/BG050-10A-0-0450-0737-0350-L-D.kicad_mod similarity index 100% rename from kirdy.pretty/BG050-10A-0-0450-0737-0350-L-D.kicad_mod rename to src/kirdy.pretty/BG050-10A-0-0450-0737-0350-L-D.kicad_mod diff --git a/kirdy.pretty/BG050-10A-0-0450-0737-0350-L-D.stp b/src/kirdy.pretty/BG050-10A-0-0450-0737-0350-L-D.stp similarity index 100% rename from kirdy.pretty/BG050-10A-0-0450-0737-0350-L-D.stp rename to src/kirdy.pretty/BG050-10A-0-0450-0737-0350-L-D.stp diff --git a/kirdy.pretty/BG050-10A-0-0650-0737-0350-L-B.stp b/src/kirdy.pretty/BG050-10A-0-0650-0737-0350-L-B.stp similarity index 100% rename from kirdy.pretty/BG050-10A-0-0650-0737-0350-L-B.stp rename to src/kirdy.pretty/BG050-10A-0-0650-0737-0350-L-B.stp diff --git a/kirdy.pretty/BG050-10A-0-0650-0737-0350-L-D.kicad_mod b/src/kirdy.pretty/BG050-10A-0-0650-0737-0350-L-D.kicad_mod similarity index 100% rename from kirdy.pretty/BG050-10A-0-0650-0737-0350-L-D.kicad_mod rename to src/kirdy.pretty/BG050-10A-0-0650-0737-0350-L-D.kicad_mod diff --git a/kirdy.pretty/CAPC1810X65N.kicad_mod b/src/kirdy.pretty/CAPC1810X65N.kicad_mod similarity index 100% rename from kirdy.pretty/CAPC1810X65N.kicad_mod rename to src/kirdy.pretty/CAPC1810X65N.kicad_mod diff --git a/kirdy.pretty/Cap_Elec_SMD_865080345012.kicad_mod b/src/kirdy.pretty/Cap_Elec_SMD_865080345012.kicad_mod similarity index 100% rename from kirdy.pretty/Cap_Elec_SMD_865080345012.kicad_mod rename to src/kirdy.pretty/Cap_Elec_SMD_865080345012.kicad_mod diff --git a/kirdy.pretty/DMP4015SK3.kicad_mod b/src/kirdy.pretty/DMP4015SK3.kicad_mod similarity index 100% rename from kirdy.pretty/DMP4015SK3.kicad_mod rename to src/kirdy.pretty/DMP4015SK3.kicad_mod diff --git a/kirdy.pretty/FKH0008A.stp b/src/kirdy.pretty/FKH0008A.stp similarity index 100% rename from kirdy.pretty/FKH0008A.stp rename to src/kirdy.pretty/FKH0008A.stp diff --git a/kirdy.pretty/FP_1550_3U8HP_PANEL.step b/src/kirdy.pretty/FP_1550_3U8HP_PANEL.step similarity index 100% rename from kirdy.pretty/FP_1550_3U8HP_PANEL.step rename to src/kirdy.pretty/FP_1550_3U8HP_PANEL.step diff --git a/kirdy.pretty/GRMJN65C1H104JE01J.stp b/src/kirdy.pretty/GRMJN65C1H104JE01J.stp similarity index 100% rename from kirdy.pretty/GRMJN65C1H104JE01J.stp rename to src/kirdy.pretty/GRMJN65C1H104JE01J.stp diff --git a/kirdy.pretty/Kirdy_LD_Adapter.kicad_mod b/src/kirdy.pretty/Kirdy_LD_Adapter.kicad_mod similarity index 100% rename from kirdy.pretty/Kirdy_LD_Adapter.kicad_mod rename to src/kirdy.pretty/Kirdy_LD_Adapter.kicad_mod diff --git a/kirdy.pretty/Kirdy_LD_Adapter.step b/src/kirdy.pretty/Kirdy_LD_Adapter.step similarity index 100% rename from kirdy.pretty/Kirdy_LD_Adapter.step rename to src/kirdy.pretty/Kirdy_LD_Adapter.step diff --git a/kirdy.pretty/LCC127P500X500X155-8N.kicad_mod b/src/kirdy.pretty/LCC127P500X500X155-8N.kicad_mod similarity index 100% rename from kirdy.pretty/LCC127P500X500X155-8N.kicad_mod rename to src/kirdy.pretty/LCC127P500X500X155-8N.kicad_mod diff --git a/kirdy.pretty/LTC6655BHMS8-4.096#PBF.stp b/src/kirdy.pretty/LTC6655BHMS8-4.096#PBF.stp similarity index 100% rename from kirdy.pretty/LTC6655BHMS8-4.096#PBF.stp rename to src/kirdy.pretty/LTC6655BHMS8-4.096#PBF.stp diff --git a/kirdy.pretty/PM1202.kicad_mod b/src/kirdy.pretty/PM1202.kicad_mod similarity index 100% rename from kirdy.pretty/PM1202.kicad_mod rename to src/kirdy.pretty/PM1202.kicad_mod diff --git a/kirdy.pretty/PM1202.step b/src/kirdy.pretty/PM1202.step similarity index 100% rename from kirdy.pretty/PM1202.step rename to src/kirdy.pretty/PM1202.step diff --git a/kirdy.pretty/Panel.kicad_mod b/src/kirdy.pretty/Panel.kicad_mod similarity index 100% rename from kirdy.pretty/Panel.kicad_mod rename to src/kirdy.pretty/Panel.kicad_mod diff --git a/kirdy.pretty/Panel_Cutout.kicad_mod b/src/kirdy.pretty/Panel_Cutout.kicad_mod similarity index 100% rename from kirdy.pretty/Panel_Cutout.kicad_mod rename to src/kirdy.pretty/Panel_Cutout.kicad_mod diff --git a/kirdy.pretty/QFN50P500X500X80-33N-D.kicad_mod b/src/kirdy.pretty/QFN50P500X500X80-33N-D.kicad_mod similarity index 100% rename from kirdy.pretty/QFN50P500X500X80-33N-D.kicad_mod rename to src/kirdy.pretty/QFN50P500X500X80-33N-D.kicad_mod diff --git a/kirdy.pretty/R_Shunt_VCS1625ZP.kicad_mod b/src/kirdy.pretty/R_Shunt_VCS1625ZP.kicad_mod similarity index 100% rename from kirdy.pretty/R_Shunt_VCS1625ZP.kicad_mod rename to src/kirdy.pretty/R_Shunt_VCS1625ZP.kicad_mod diff --git a/kirdy.pretty/SOIC8-TL082Hx.kicad_mod b/src/kirdy.pretty/SOIC8-TL082Hx.kicad_mod similarity index 100% rename from kirdy.pretty/SOIC8-TL082Hx.kicad_mod rename to src/kirdy.pretty/SOIC8-TL082Hx.kicad_mod diff --git a/kirdy.pretty/SOP65P490X110-8N.kicad_mod b/src/kirdy.pretty/SOP65P490X110-8N.kicad_mod similarity index 100% rename from kirdy.pretty/SOP65P490X110-8N.kicad_mod rename to src/kirdy.pretty/SOP65P490X110-8N.kicad_mod diff --git a/kirdy.pretty/TO-220-F4.stp b/src/kirdy.pretty/TO-220-F4.stp similarity index 100% rename from kirdy.pretty/TO-220-F4.stp rename to src/kirdy.pretty/TO-220-F4.stp diff --git a/kirdy.pretty/Type-C 16P.STEP b/src/kirdy.pretty/Type-C 16P.STEP similarity index 100% rename from kirdy.pretty/Type-C 16P.STEP rename to src/kirdy.pretty/Type-C 16P.STEP diff --git a/kirdy.pretty/WE-SL5_HC_744273 (rev1).stp b/src/kirdy.pretty/WE-SL5_HC_744273 (rev1).stp similarity index 100% rename from kirdy.pretty/WE-SL5_HC_744273 (rev1).stp rename to src/kirdy.pretty/WE-SL5_HC_744273 (rev1).stp diff --git a/mcu.kicad_sch b/src/mcu.kicad_sch similarity index 100% rename from mcu.kicad_sch rename to src/mcu.kicad_sch diff --git a/sym-lib-table b/src/sym-lib-table similarity index 100% rename from sym-lib-table rename to src/sym-lib-table diff --git a/thermostat.kicad_sch b/src/thermostat.kicad_sch similarity index 100% rename from thermostat.kicad_sch rename to src/thermostat.kicad_sch diff --git a/usb.kicad_sch b/src/usb.kicad_sch similarity index 100% rename from usb.kicad_sch rename to src/usb.kicad_sch