This repository has been archived by the owner on Feb 11, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathflake.nix
150 lines (127 loc) · 4.16 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
{
description = "A universal interpreter front-end";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
{
overlays.default = final: prev: {
prybar = prev.lib.recurseIntoAttrs {
inherit (self.packages.${prev.system})
prybar-elisp prybar-julia prybar-lua prybar-nodejs
prybar-python2 prybar-python3 prybar-python38 prybar-python310 prybar-python311
prybar-scala prybar-sqlite prybar-tcl;
};
};
} //
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
rev = if self ? rev then
"0.0.0-${builtins.substring 0 7 self.rev}"
else
"0.0.0-dirty";
buildPrybar = attrs:
pkgs.callPackage (import ./build-prybar.nix attrs) { inherit rev; };
julia = import ./languages/julia/julia.nix { inherit pkgs; };
python38Full = pkgs.python3.override {
self = python38Full;
sourceVersion = {
major = "3";
minor = "8";
patch = "18";
suffix = "";
};
hash = "sha256-P/txzTSaMmunsvrcfn34a6V33ZxJF+UqhAGtvadAXj8=";
pythonAttr = "python38Full";
bluezSupport = true;
x11Support = true;
};
python310Full = pkgs.python310.override {
self = python310Full;
pythonAttr = "python310Full";
bluezSupport = true;
x11Support = true;
};
python311Full = pkgs.python311.override {
self = python311Full;
pythonAttr = "python311Full";
bluezSupport = true;
x11Support = true;
};
in {
packages = rec {
prybar-nodejs = buildPrybar {
language = "nodejs";
binaries = [ pkgs.nodejs ];
};
prybar-python38 = buildPrybar {
language = "python3";
target = "python3";
cgoPkgs = "python-3.8-embed";
cgoExtraCflags = "-DPYTHON_3_8";
buildInputs = [ pkgs.libxcrypt python38Full ];
};
prybar-python3 = prybar-python38;
prybar-python310 = buildPrybar {
language = "python3";
target = "python310";
cgoPkgs = "python-3.10-embed";
cgoExtraCflags = "-DPYTHON_3_10";
buildInputs = [ pkgs.libxcrypt python310Full ];
};
prybar-python311 = buildPrybar {
language = "python3";
target = "python311";
cgoPkgs = "python-3.11-embed";
cgoExtraCflags = "-DPYTHON_3_11";
buildInputs = [ pkgs.libxcrypt python311Full ];
};
prybar-lua = buildPrybar {
language = "lua";
buildInputs = [ pkgs.lua5_1 pkgs.readline ];
};
prybar-elisp = buildPrybar { language = "elisp"; };
prybar-scala = buildPrybar { language = "scala"; };
prybar-sqlite = buildPrybar {
language = "sqlite";
binaries = [ pkgs.sqlite ];
};
prybar-tcl = buildPrybar {
language = "tcl";
buildInputs = [ pkgs.tcl ];
};
}
# These packages have issues on macOS
// nixpkgs.lib.optionalAttrs (!pkgs.stdenv.isDarwin) {
prybar-julia = buildPrybar {
language = "julia";
buildInputs = [ julia ];
setFlags = true;
binaries = [ pkgs.zlib ];
};
};
devShells.default = pkgs.mkShell {
nativeBuildInputs = [
pkgs.pkg-config
];
buildInputs = [
pkgs.libxcrypt
pkgs.nodejs
python38Full
python310Full
python311Full
pkgs.readline
pkgs.zlib
pkgs.sqlite
pkgs.tcl
pkgs.expect
];
shellHook = ''
export CGO_LDFLAGS_ALLOW="-Wl,--compress-debug-sections=zlib"
export DISABLE_GO_TESTS=1
'';
};
});
}