Skip to content

Commit

Permalink
add kikit
Browse files Browse the repository at this point in the history
This closes #1

Co-authored-by: Rohit <[email protected]>
Co-authored-by: Matúš Ferech <[email protected]>
Co-authored-by: Shahar "Dawn" Or <[email protected]>
Co-authored-by: Alejandro Sanchez Medina <[email protected]>
  • Loading branch information
5 people committed Aug 1, 2023
1 parent 26ffcbc commit 054e765
Show file tree
Hide file tree
Showing 7 changed files with 325 additions and 1 deletion.
10 changes: 9 additions & 1 deletion all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,16 @@
gnunet-messenger-cli = callPackage ./pkgs/gnunet-messenger-cli {};
liberaforms = callPackage ./pkgs/liberaforms {};
liberaforms-env = callPackage ./pkgs/liberaforms/env.nix {};
kikit = callPackage ./pkgs/kikit {};
};

callPackage = newScope self;
nixpkgs-candidates = {
pcbnew-transition = callPackage ./nixpkgs-candidates/pcbnew-transition {};
pybars3 = callPackage ./nixpkgs-candidates/pybars3 {};
pymeta3 = callPackage ./nixpkgs-candidates/pymeta3 {};
euclid3 = callPackage ./nixpkgs-candidates/euclid3 {};
};

callPackage = newScope (self // nixpkgs-candidates // {inherit callPackage;});
in
self
27 changes: 27 additions & 0 deletions nixpkgs-candidates/euclid3/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
python3,
lib,
fetchPypi,
}: let
inherit (python3.pkgs) buildPythonPackage;
in
buildPythonPackage rec {
pname = "euclid3";
version = "0.01";
format = "setuptools";

src = fetchPypi {
inherit pname version;
hash = "sha256-JbgnpXrb/Zo/qGJeQ6vD6Qf2HeYiND5+U4SC75tG/Qs=";
};

pythonImportsCheck = [
"euclid3"
];

meta = with lib; {
description = "2D and 3D vector, matrix, quaternion and geometry module.";
homepage = "http://code.google.com/p/pyeuclid/";
license = licenses.lgpl21Plus;
};
}
40 changes: 40 additions & 0 deletions nixpkgs-candidates/pcbnew-transition/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
python3,
fetchPypi,
lib,
}: let
inherit (python3.pkgs) buildPythonPackage;

properCaseName = "pcbnewTransition";
in
buildPythonPackage rec {
pname = properCaseName;
version = "0.3.4";
format = "setuptools";

disabled = python3.pythonOlder "3.7";

src = fetchPypi {
inherit pname version;
hash = "sha256-3CJUG1kd63Lg0r9HpJRIvttHS5s2EuZRoxeXrqsJ/kQ=";
};

propagatedBuildInputs = with python3.pkgs; [
kicad
];

nativeBuildInputs = with python3.pkgs; [
versioneer
];

pythonImportsCheck = [
properCaseName
];

meta = with lib; {
description = "Library that allows you to support both, KiCAD 5 and KiCAD 6 in your plugins";
homepage = "https://github.com/yaqwsx/pcbnewTransition";
changelog = "https://github.com/yaqwsx/pcbnewTransition/releases/tag/v${version}";
license = licenses.mit;
};
}
37 changes: 37 additions & 0 deletions nixpkgs-candidates/pybars3/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
python3,
fetchPypi,
lib,
pymeta3,
}:
python3.pkgs.buildPythonPackage rec {
pname = "pybars3";
version = "0.9.7";
format = "setuptools";

src = fetchPypi {
inherit pname version;
hash = "sha256-ashH6QXlO5xbk2rxEskQR14nv3Z/efRSjBb5rx7A4lI=";
};

propagatedBuildInputs = with python3.pkgs; [
pymeta3
];

checkPhase = ''
runHook preCheck
${python3.interpreter} tests.py
runHook postCheck
'';

pythonImportsCheck = [
"pybars"
];

meta = with lib; {
description = "Handlebars.js template support for Python 3 and 2";
homepage = "https://github.com/wbond/pybars3";
changelog = "https://github.com/wbond/pybars3/releases/tag/${version}";
license = licenses.lgpl3Only;
};
}
32 changes: 32 additions & 0 deletions nixpkgs-candidates/pymeta3/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
python3,
fetchPypi,
lib,
}: let
inherit (python3.pkgs) buildPythonPackage;
properCaseName = "PyMeta3";
in
buildPythonPackage rec {
pname = lib.toLower properCaseName;
version = "0.5.1";
format = "setuptools";

src = fetchPypi {
inherit version;
pname = properCaseName;
hash = "sha256-GL2jJtmpu/WHv8DuC8loZJZNeLBnKIvPVdTZhoHQW8s=";
};

doCheck = false; # Tests do not support Python3

pythonImportsCheck = [
"pymeta"
];

meta = with lib; {
description = "Pattern-matching language based on OMeta for Python 3 and 2";
homepage = "https://github.com/wbond/pymeta3";
changelog = "https://github.com/wbond/pymeta3/releases/tag/${version}";
license = licenses.mit;
};
}
90 changes: 90 additions & 0 deletions pkgs/kikit/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
{
lib,
pcbnew-transition,
pybars3,
python3,
fetchFromGitHub,
bats,
callPackage,
}: let
properCaseName = "KiKit";

solidpython = callPackage ./solidpython {};

# https://github.com/yaqwsx/KiKit/issues/574
shapelyPkgsRoot = fetchFromGitHub {
owner = "NixOS";
repo = "nixpkgs";
rev = "8d8e62e74f511160a599471549a98bc9e4f4818d";
sha256 = "sha256-2vm6IAnaCo5KAA5/rWSb6dzJsS/raEqR93xbM2/jgng=";
};

shapelyFile = "${shapelyPkgsRoot}/pkgs/development/python-modules/shapely";

shapely =
python3.pkgs.callPackage
shapelyFile
{};
in
python3.pkgs.buildPythonPackage rec {
pname = lib.toLower properCaseName;
version = "1.3.0";
format = "setuptools";

disabled = python3.pythonOlder "3.7";

src = fetchFromGitHub {
owner = "yaqwsx";
repo = properCaseName;
rev = "v${version}";
hash = "sha256-kDTPk/R3eZtm4DjoUV4tSQzjGQ9k8MKQedX4oUXYzeo=";
};

propagatedBuildInputs = with python3.pkgs;
[
kicad
numpy
click
markdown2
commentjson
# https://github.com/yaqwsx/KiKit/issues/575
wxPython_4_2
]
++ [
pcbnew-transition
shapely
pybars3
# https://github.com/yaqwsx/KiKit/issues/576
solidpython
];

nativeBuildInputs = with python3.pkgs; [
versioneer
];

nativeCheckInputs = with python3.pkgs;
[
pytest
]
++ [
bats
];

pythonImportsCheck = [
pname
];

checkPhase = ''
runHook preCheck
export PATH=$PATH:$out/bin
make test
runHook postCheck
'';

meta = with lib; {
description = "Automation for KiCAD boards";
homepage = "https://github.com/yaqwsx/KiKit/";
changelog = "https://github.com/yaqwsx/KiKit/releases/tag/v${version}";
license = licenses.mit;
};
}
90 changes: 90 additions & 0 deletions pkgs/kikit/solidpython/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# SolidPython is an unmaintained library with old dependencies.
{
python3,
fetchFromGitHub,
fetchFromGitLab,
fetchpatch,
lib,
euclid3,
}: let
inherit (python3.pkgs) buildPythonPackage;

# https://github.com/SolidCode/SolidPython/issues/207
prettytablePkgsRoot = fetchFromGitHub {
owner = "NixOS";
repo = "nixpkgs";
rev = "6dda65e8da23cc123060e3f24723471a15b3f0cd";
sha256 = "sha256-1zdXZIs5C81slD+nLeIk5j+O/aAujejbiW4g07JHU5s=";
};

prettytableFile = "${prettytablePkgsRoot}/pkgs/development/python-modules/prettytable";

prettytable =
python3.pkgs.callPackage
prettytableFile
{
# stdenv seems to have moved since then. Shim something that'll make this
# old version of prettytable happy.
stdenv = {
inherit lib;
};
};

pypng = python3.pkgs.pypng.overrideAttrs (old: rec {
version = "0.0.19";
src = fetchFromGitLab {
owner = "drj11";
repo = "pypng";
rev = "refs/tags/${old.pname}-${version}";
hash = "sha256-XVsXgvLVFfxrRXDwdZO7oi7LPozN2XiYeXCK9NTx4Qs=";
};
patches = [
(fetchpatch {
url = "https://gitlab.com/drj11/pypng/-/commit/fe9c973c5e92f24746dfa1be8796c14a2befec4f.diff";
hash = "sha256-OYO8TE4MRHhRmgLjetk4TajFT7INQ9WdjCRjDsGc+pg=";
})
];

disabledTests = [
"test_test_dir"
];
});
in
buildPythonPackage rec {
pname = "solidpython";
version = "1.1.3";
format = "pyproject";

src = fetchFromGitHub {
owner = "SolidCode";
repo = "SolidPython";
rev = "d962740d600c5dfd69458c4559fc416b9beab575";
hash = "sha256-3fJta2a5c8hV9FPwKn5pj01aBtsCGSRCz3vvxR/5n0Q=";
};

propagatedBuildInputs = with python3.pkgs;
[
ply
setuptools
]
++ [
prettytable
euclid3
pypng
];

buildInputs = with python3.pkgs; [
poetry-core
];

pythonImportsCheck = [
"solid"
];

meta = with lib; {
description = "Python interface to the OpenSCAD declarative geometry language";
homepage = "https://github.com/SolidCode/SolidPython";
changelog = "https://github.com/SolidCode/SolidPython/releases/tag/v${version}";
license = licenses.lgpl21Plus;
};
}

0 comments on commit 054e765

Please sign in to comment.