base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / pkgs / by-name / gn / gnucap / package.nix
blob2713a2283de6d61c701eac1bee96eac0e17a07ed
1 { lib
2 , stdenv
3 , fetchurl
4 , readline
5 , termcap
6 , gnucap
7 , callPackage
8 , writeScript
9 }:
11 let
12   version = "20240130-dev";
13   meta = with lib; {
14     description = "Gnu Circuit Analysis Package";
15     longDescription = ''
16 Gnucap is a modern general purpose circuit simulator with several advantages over Spice derivatives.
17 It performs nonlinear dc and transient analyses, fourier analysis, and ac analysis.
18     '';
19     homepage = "http://www.gnucap.org/";
20     changelog = "https://git.savannah.gnu.org/cgit/gnucap.git/plain/NEWS?h=v${version}";
21     license = licenses.gpl3Plus;
22     platforms = platforms.all;
23     broken = stdenv.hostPlatform.isDarwin; # Relies on LD_LIBRARY_PATH
24     maintainers = [ maintainers.raboof ];
25     mainProgram = "gnucap";
26   };
28 stdenv.mkDerivation rec {
29   pname = "gnucap";
30   inherit version;
32   src = fetchurl {
33     url = "https://git.savannah.gnu.org/cgit/gnucap.git/snapshot/gnucap-${version}.tar.gz";
34     hash = "sha256-MUCtGw3BxGWgXgUwzklq5T1y9kjBTnFBa0/GK0hhl0E=";
35   };
37   buildInputs = [
38     readline
39     termcap
40   ];
42   doCheck = true;
44   inherit meta;
45 } // {
46   plugins = callPackage ./plugins.nix {};
47   withPlugins = p:
48     let
49       selectedPlugins = p gnucap.plugins;
50       wrapper = writeScript "gnucap" ''
51         export GNUCAP_PLUGPATH=${gnucap}/lib/gnucap
52         for plugin in ${builtins.concatStringsSep " " selectedPlugins}; do
53           export GNUCAP_PLUGPATH=$plugin/lib/gnucap:$GNUCAP_PLUGPATH
54         done
55         ${lib.getExe gnucap}
56       '';
57     in
58       stdenv.mkDerivation {
59         pname = "gnucap-with-plugins";
60         inherit version;
62         propagatedBuildInputs = selectedPlugins;
64         dontUnpack = true;
66         installPhase = ''
67           mkdir -p $out/bin
68           cp ${wrapper} $out/bin/gnucap
69         '';
71         inherit meta;
72       };