on master help sign in
prybar/flake.nix
173 lines 4.9 kB history raw
1{
2 description = "A universal interpreter front-end";
4 inputs = {
5 nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11";
6 flake-utils.url = "github:numtide/flake-utils";
7 };
9 outputs = { self, nixpkgs, flake-utils }:
10 {
11 overlays.default = final: prev: {
12 prybar = prev.lib.recurseIntoAttrs {
13 inherit (self.packages.${prev.system})
14 prybar-R prybar-clojure prybar-elisp prybar-julia prybar-lua prybar-nodejs
15 prybar-ocaml prybar-python2 prybar-python3 prybar-python310 prybar-ruby
16 prybar-scala prybar-sqlite prybar-tcl;
17 };
18 };
19 } //
20 flake-utils.lib.eachDefaultSystem (system:
21 let
22 pkgs = nixpkgs.legacyPackages.${system};
24 rev = if self ? rev then
25 "0.0.0-${builtins.substring 0 7 self.rev}"
26 else
27 "0.0.0-dirty";
29 buildPrybar = attrs:
30 pkgs.callPackage (import ./build-prybar.nix attrs) { inherit rev; };
32 julia = import ./languages/julia/julia.nix { inherit pkgs; };
34 clojureWithCP =
35 import ./languages/clojure/wrappedClojure.nix { inherit pkgs; };
37 python310Full = pkgs.python310.override {
38 self = python310Full;
39 pythonAttr = "python310Full";
40 bluezSupport = true;
41 x11Support = true;
42 };
44 ocaml = pkgs.ocaml-ng.ocamlPackages_4_12.ocaml;
45 opam = pkgs.opam;
46 findlib = pkgs.ocaml-ng.ocamlPackages_4_12.findlib;
47 topkg = pkgs.ocaml-ng.ocamlPackages_4_12.topkg;
48 reason = pkgs.ocaml-ng.ocamlPackages_4_12.reason;
50 in {
51 packages = {
52 prybar-R = buildPrybar {
53 language = "R";
54 buildInputs = [ pkgs.R ];
55 pkgName = "libR";
56 setFlags = true;
57 };
59 prybar-nodejs = buildPrybar {
60 language = "nodejs";
61 binaries = [ pkgs.nodejs-16_x ];
62 };
64 prybar-python2 = buildPrybar {
65 language = "python2";
66 buildInputs = [ pkgs.python2 ];
67 };
69 prybar-python3 = buildPrybar {
70 language = "python3";
71 buildInputs = [ pkgs.libxcrypt pkgs.python38Full ];
72 };
74 prybar-python310 = buildPrybar {
75 language = "python310";
76 buildInputs = [ pkgs.libxcrypt python310Full ];
77 };
79 prybar-lua = buildPrybar {
80 language = "lua";
81 buildInputs = [ pkgs.lua5_1 pkgs.readline ];
82 };
84 prybar-clojure = buildPrybar {
85 language = "clojure";
86 buildInputs = [ clojureWithCP ];
87 binaries = [ pkgs.jdk11_headless ];
88 };
90 prybar-elisp = buildPrybar { language = "elisp"; };
92 prybar-ocaml = buildPrybar {
93 language = "ocaml";
94 # This has to be in the build inputs so it set-ups the library paths before the check phase
95 # It will not be copied over to the final package.
96 buildInputs = [
97 opam
98 ocaml
99 findlib
100 topkg
101 reason
102 ];
103 };
105 prybar-scala = buildPrybar { language = "scala"; };
107 prybar-sqlite = buildPrybar {
108 language = "sqlite";
109 binaries = [ pkgs.sqlite ];
110 };
112 prybar-tcl = buildPrybar {
113 language = "tcl";
114 buildInputs = [ pkgs.tcl ];
115 };
116 }
117 # These packages have issues on macOS
118 // nixpkgs.lib.optionalAttrs (!pkgs.stdenv.isDarwin) {
119 prybar-julia = buildPrybar {
120 language = "julia";
121 buildInputs = [ julia ];
122 setFlags = true;
123 binaries = [ pkgs.zlib ];
124 };
126 # The official Ruby packages is running ruby 2.7
127 prybar-ruby = buildPrybar {
128 language = "ruby";
129 buildInputs = [ pkgs.ruby ];
130 pkgName = "ruby-2.7";
131 setFlags = true;
132 };
134 };
137 devShells.default = pkgs.mkShell {
138 nativeBuildInputs = [
139 pkgs.pkg-config
140 ];
141 buildInputs = [
142 pkgs.libxcrypt
143 pkgs.R
144 pkgs.nodejs-16_x
145 pkgs.python2
146 pkgs.python38Full
147 pkgs.python310Full
148 pkgs.lua5_1
149 pkgs.readline
150 clojureWithCP
151 pkgs.jdk11_headless
152 opam
153 ocaml
154 findlib
155 topkg
156 reason
157 julia
158 pkgs.zlib
159 pkgs.ruby
160 pkgs.sqlite
161 pkgs.tcl
162 pkgs.expect
163 ];
164 shellHook = ''
165 export CGO_LDFLAGS_ALLOW="-Wl,--compress-debug-sections=zlib"
166 export DISABLE_GO_TESTS=1
167 '';
168 };
171 });