forked from wireapp/wire-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdirenv.nix
192 lines (163 loc) · 5.64 KB
/
direnv.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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
{ pkgs ? import ./nix }:
let
staticBinaryInTarball = { pname, version, linuxAmd64Url, linuxAmd64Sha256, darwinAmd64Url, darwinAmd64Sha256, binPath ? pname }:
pkgs.stdenv.mkDerivation {
inherit pname version;
src =
if pkgs.stdenv.isDarwin
then
pkgs.fetchurl
{
url = darwinAmd64Url;
sha256 = darwinAmd64Sha256;
}
else
pkgs.fetchurl {
url = linuxAmd64Url;
sha256 = linuxAmd64Sha256;
};
installPhase = ''
mkdir -p $out/bin
cp ${binPath} $out/bin
'';
};
staticBinary = { pname, version, linuxAmd64Url, linuxAmd64Sha256, darwinAmd64Url, darwinAmd64Sha256, binPath ? pname }:
pkgs.stdenv.mkDerivation {
inherit pname version;
src =
if pkgs.stdenv.isDarwin
then
pkgs.fetchurl
{
url = darwinAmd64Url;
sha256 = darwinAmd64Sha256;
}
else
pkgs.fetchurl {
url = linuxAmd64Url;
sha256 = linuxAmd64Sha256;
};
phases = [ "installPhase" "patchPhase" ];
installPhase = ''
mkdir -p $out/bin
cp $src $out/bin/${binPath}
chmod +x $out/bin/${binPath}
'';
};
pinned = {
stack = staticBinaryInTarball {
pname = "stack";
version = "2.3.1";
darwinAmd64Url = "https://github.com/commercialhaskell/stack/releases/download/v2.3.1/stack-2.3.1-osx-x86_64.tar.gz";
darwinAmd64Sha256 = "089nrb8mxf76a0r0hdccaxfvx1ly24b5zc0cy05gs4adybjygvkk";
linuxAmd64Url = "https://github.com/commercialhaskell/stack/releases/download/v2.3.1/stack-2.3.1-linux-x86_64-static.tar.gz";
linuxAmd64Sha256 = "0iqfqcd88rvlwgm2h8avs0rsi9f3pdxilvcacgrxskb1n8q8ibjb";
};
helm = staticBinaryInTarball {
pname = "helm";
version = "3.6.3";
darwinAmd64Url = "https://get.helm.sh/helm-v3.6.3-darwin-amd64.tar.gz";
darwinAmd64Sha256 = "0djjvgla8cw27h8s4y6jby19f74j58byb2vfv590cd03vlbzz8c4";
linuxAmd64Url = "https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz";
linuxAmd64Sha256 = "0qp28fq137b07haz4vsdbc5biagh60dcs29jj70ksqi5k6201h87";
};
helmfile = staticBinary {
pname = "helmfile";
version = "0.141.0";
darwinAmd64Url = "https://github.com/roboll/helmfile/releases/download/v0.141.0/helmfile_darwin_amd64";
darwinAmd64Sha256 = "0szfd3vy6fzd5657079hz5vii86f9xkg3bdzp3g4knkcw5x1kpxy";
linuxAmd64Url = "https://github.com/roboll/helmfile/releases/download/v0.141.0/helmfile_linux_amd64";
linuxAmd64Sha256 = "0f5d9w3qjvwip4qn79hsigwp8nbjpj58p289hww503j43wjyxx8r";
};
kubectl = staticBinaryInTarball {
pname = "kubectl";
version = "1.19.8";
darwinAmd64Url = "https://dl.k8s.io/v1.19.8/kubernetes-client-darwin-amd64.tar.gz";
darwinAmd64Sha256 = "23b847bb8b545c748e9078e7660c654eef74d15ccab8696d294f3d6c619c788e";
linuxAmd64Url = "https://dl.k8s.io/v1.19.8/kubernetes-client-linux-amd64.tar.gz";
linuxAmd64Sha256 = "8388ff8b5c676bdbb8fe07ef7077de937b0bf60154f302df5f248f38f95122aa";
binPath = "client/bin/kubectl";
};
kind = staticBinary {
pname = "kind";
version = "0.11.0";
darwinAmd64Url = "https://github.com/kubernetes-sigs/kind/releases/download/v0.11.1/kind-darwin-amd64";
darwinAmd64Sha256 = "432bef555a70e9360b44661c759658265b9eaaf7f75f1beec4c4d1e6bbf97ce3";
linuxAmd64Url = "https://github.com/kubernetes-sigs/kind/releases/download/v0.11.1/kind-linux-amd64";
linuxAmd64Sha256 = "949f81b3c30ca03a3d4effdecda04f100fa3edc07a28b19400f72ede7c5f0491";
};
};
compile-deps = pkgs.buildEnv {
name = "wire-server-compile-deps";
paths = [
pkgs.bash
pkgs.coreutils
pkgs.gnused
pkgs.gnugrep
pkgs.pkgconfig
pkgs.gawk
pkgs.git
pkgs.haskell.compiler.ghc884
pkgs.protobuf
pkgs.cryptobox
pkgs.geoip
pkgs.icu.dev
pkgs.icu.out
pkgs.libsodium.dev
pkgs.libsodium.out
pkgs.libxml2.dev
pkgs.libxml2.out
pkgs.ncurses.dev
pkgs.ncurses.out
pkgs.openssl.dev
pkgs.openssl.out
pkgs.pcre.dev
pkgs.pcre.out
pkgs.snappy.dev
pkgs.snappy.out
pkgs.zlib.dev
pkgs.zlib.out
pkgs.lzma.dev
pkgs.lzma.out
];
};
# This performs roughly the same setup as direnv's load_prefix function, but
# only when invoking cabal. This means that we can set LD_LIBRARY_PATH just
# for cabal, as setting it in direnv can interfere with programs in the host
# system, especially for non-NixOS users.
cabal-wrapper = pkgs.writeShellScriptBin "cabal" ''
export CPATH="${compile-deps}/include"
export LD_LIBRARY_PATH="${compile-deps}/lib"
export LIBRARY_PATH="${compile-deps}/lib"
export PKG_CONFIG_PATH="${compile-deps}/lib/pkgconfig"
export PATH="${compile-deps}/bin"
exec "${pkgs.cabal-install}/bin/cabal" "$@"
'';
in pkgs.buildEnv {
name = "wire-server-direnv";
paths = [
pkgs.cfssl
pkgs.docker-compose
pkgs.gnumake
pkgs.haskell-language-server
pkgs.jq
pkgs.ormolu
pkgs.telepresence
pkgs.wget
pkgs.yq
pkgs.rsync
pkgs.netcat
# To actually run buildah on nixos, I had to follow this: https://gist.github.com/alexhrescale/474d55635154e6b2cd6362c3bb403faf
pkgs.buildah
pinned.stack
pinned.helm
pinned.helmfile
pinned.kubectl
pinned.kind
# For cabal-migration
pkgs.haskellPackages.cabal-plan
# We don't use pkgs.cabal-install here, as we invoke it with a wrapper
# which sets LD_LIBRARY_PATH and others correctly.
cabal-wrapper
];
}