Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
58 lines
1.5 KiB
Nix
58 lines
1.5 KiB
Nix
# For building the multiple addons that are in the kikit repo.
|
|
{
|
|
stdenv,
|
|
bc,
|
|
kikit,
|
|
zip,
|
|
python3,
|
|
addonName,
|
|
addonPath,
|
|
}:
|
|
let
|
|
# This python is only used when building the package, it's not the python
|
|
# environment that will ultimately run the code packaged here. The python env defined
|
|
# in KiCad will import the python code packaged here when KiCad starts up.
|
|
python = python3.withPackages (ps: with ps; [ click ]);
|
|
kikit-module = python3.pkgs.toPythonModule (kikit.override { inherit python3; });
|
|
|
|
# The following different addons can be built from the same source.
|
|
targetSpecs = {
|
|
"kikit" = {
|
|
makeTarget = "pcm-kikit";
|
|
resultZip = "pcm-kikit.zip";
|
|
description = "KiCad plugin and a CLI tool to automate several tasks in a standard KiCad workflow";
|
|
};
|
|
"kikit-library" = {
|
|
makeTarget = "pcm-lib";
|
|
resultZip = "pcm-kikit-lib.zip";
|
|
description = "KiKit uses these symbols and footprints to annotate your boards (e.g., to place a tab in a panel)";
|
|
};
|
|
};
|
|
targetSpec = targetSpecs.${addonName};
|
|
in
|
|
stdenv.mkDerivation {
|
|
pname = "kicadaddon-${addonName}";
|
|
inherit (kikit-module) src version;
|
|
|
|
nativeBuildInputs = [
|
|
python
|
|
bc
|
|
zip
|
|
];
|
|
propagatedBuildInputs = [ kikit-module ];
|
|
|
|
buildPhase = ''
|
|
patchShebangs scripts/setJson.py
|
|
make ${targetSpec.makeTarget}
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir $out
|
|
mv build/${targetSpec.resultZip} $out/${addonPath}
|
|
'';
|
|
|
|
meta = kikit-module.meta // {
|
|
description = targetSpec.description;
|
|
};
|
|
}
|