diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index e77f4a603a8..08daabf6f01 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -1,16 +1,31 @@ -{ wxGTK, lib, stdenv, fetchurl, cmake, libGLU_combined, zlib +{ wxGTK, lib, stdenv, fetchurl, fetchFromGitHub, cmake, libGLU_combined, zlib , libX11, gettext, glew, glm, cairo, curl, openssl, boost, pkgconfig , doxygen, pcre, libpthreadstubs, libXdmcp , wrapGAppsHook , oceSupport ? true, opencascade , ngspiceSupport ? true, libngspice , swig, python, pythonPackages +, lndir, withLibraries ? true, with3DPackages ? false }: assert ngspiceSupport -> libngspice != null; with lib; -stdenv.mkDerivation rec { +let + mkLib = version: name: sha256: stdenv.mkDerivation { + name = "kicad-${name}-${version}"; + src = fetchFromGitHub { + owner = "KiCad"; + repo = "kicad-${name}"; + rev = "${version}"; + inherit sha256 name; + }; + nativeBuildInputs = [ + cmake + ]; + }; + +in stdenv.mkDerivation rec { name = "kicad-${version}"; series = "5.0"; version = "5.0.2"; @@ -41,12 +56,13 @@ stdenv.mkDerivation rec { pkgconfig wrapGAppsHook pythonPackages.wrapPython + lndir ]; pythonPath = [ pythonPackages.wxPython ]; propagatedBuildInputs = [ pythonPackages.wxPython ]; buildInputs = [ - libGLU_combined zlib libX11 wxGTK pcre libXdmcp gettext glew glm libpthreadstubs + libGLU_combined zlib libX11 wxGTK pcre libXdmcp glew glm libpthreadstubs cairo curl openssl boost swig python ] ++ optional (oceSupport) opencascade @@ -55,6 +71,33 @@ stdenv.mkDerivation rec { # this breaks other applications in kicad dontWrapGApps = true; + i18n = (mkLib version "i18n" "1hkc240gymhmyv6r858mq5d2slz0vjqc47ah8wn82vvmb83fpnjy").overrideAttrs (_: { + buildInputs = [ + gettext + ]; + }); + + symbols = mkLib version "symbols" "1rjh2pjcrc3bhcgyyskj5pssm7vffrjk0ymwr70fb7sjpmk96yjk"; + + footprints = mkLib version "footprints" "19khqyrbrqsdzxvm1b1vxfscxhss705fqky0ilrbvnbvf27fnx8w"; + + templates = mkLib version "templates" "0rlzq1n09n0sf2kj5c9bvbnkvs6cpycjxmxwcswql0fbpcp0sql7"; + + packages3d = (mkLib version "packages3d" "135jyrljgknnv2y35skhnwcxg16yxxkfbcx07nad3vr4r76zk3am").overrideAttrs (_: { + hydraPlatforms = []; # Disable big package3d library + preferLocalBuild = true; + }); + + postInstall = '' + lndir -silent $i18n/share $out/share + '' + optionalString withLibraries '' + lndir -silent $symbols/share $out/share + lndir -silent $footprints/share $out/share + lndir -silent $templates/share $out/share + '' + optionalString with3DPackages '' + lndir -silent $packages3d/share $out/share + ''; + preFixup = '' buildPythonPath "$out $pythonPath" gappsWrapperArgs+=(--set PYTHONPATH "$program_PYTHONPATH") @@ -65,7 +108,7 @@ stdenv.mkDerivation rec { meta = { description = "Free Software EDA Suite"; homepage = http://www.kicad-pcb.org/; - license = licenses.gpl2; + license = [ licenses.gpl2 ] ++ optional (withLibraries || with3DPackages) licenses.cc-by-sa-40; maintainers = with maintainers; [ berce ]; platforms = with platforms; linux; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fb0d1246e35..555acfe68d9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -22031,6 +22031,7 @@ in wxGTK = wxGTK30; boost = boost160; }; + kicad-with-3dpackages = kicad.override { with3DPackages = true; }; kicad-unstable = python.pkgs.callPackage ../applications/science/electronics/kicad/unstable.nix { wxGTK = wxGTK30;