]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - default.nix
Add nixops program
[perso/Immae/Config/Nix.git] / default.nix
1 with import <nixpkgs> {};
2 let
3 mypkgs = {};
4 postHook = ''
5 header() {
6 echo -ne "\033[1;36m"
7 echo -n "$1"
8 echo -e "\033[0m"
9 }
10
11 echoCmd() {
12 printf "\033[1;34m%s:\033[0m" "$1"
13 shift
14 printf ' %q' "$@"
15 echo
16 }
17 '';
18
19 fetchedGithub = path:
20 let
21 json = lib.importJSON path;
22 in rec {
23 version = json.tag;
24 name = "${json.meta.name}-${version}";
25 src = fetchFromGitHub json.github;
26 };
27
28 fetchedGit = path:
29 let
30 json = lib.importJSON path;
31 in rec {
32 version = json.tag;
33 name = "${json.meta.name}-${version}";
34 src = fetchgit json.git;
35 };
36
37 mypkgs.ledger = (ledger.override { boost = boost166; }).overrideAttrs (_old:
38 fetchedGithub ./fetched/ledger.json // {
39 postInstall = "";
40 }
41 );
42
43 mypkgs.taskwarrior = taskwarrior.overrideAttrs (old: rec {
44 postInstall = ''${old.postInstall}
45 mkdir -p "$out/share/vim/vimfiles/ftdetect"
46 mkdir -p "$out/share/vim/vimfiles/syntax"
47 ln -s "../../../../share/doc/task/scripts/vim/ftdetect/task.vim" "$out/share/vim/vimfiles/ftdetect/"
48 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskrc.vim" "$out/share/vim/vimfiles/syntax/"
49 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskdata.vim" "$out/share/vim/vimfiles/syntax/"
50 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskedit.vim" "$out/share/vim/vimfiles/syntax/"
51 '';
52 });
53
54 mypkgs.vit = (vit.override { taskwarrior = mypkgs.taskwarrior; }).overrideAttrs (old:
55 fetchedGithub ./fetched/vit.json // {
56 buildInputs = old.buildInputs ++ [perlPackages.TryTiny perlPackages.TextCharWidth];
57 }
58 );
59
60 mypkgs.weboob = pythonPackages.weboob.overrideAttrs (old: rec {
61 postInstall = ''${old.postInstall or ""}
62 mkdir -p $out/share/bash-completion/completions/
63 cp tools/weboob_bash_completion $out/share/bash-completion/completions/weboob
64 '';
65 });
66
67 mypkgs.slrn = slrn.overrideAttrs (old: rec {
68 version = "1.0.3a";
69 name = "slrn-${version}";
70 src = fetchurl {
71 url = "http://www.jedsoft.org/releases/slrn/slrn-${version}.tar.bz2";
72 sha256 = "1b1d9iikr60w0vq86y9a0l4gjl0jxhdznlrdp3r405i097as9a1v";
73 };
74 configureFlags = old.configureFlags ++ [ "--with-slrnpull" ];
75 });
76
77 mypkgs.ldapvi = ldapvi.overrideAttrs (old: fetchedGit ./fetched/ldapvi.json);
78
79 nixos = import ./nixos_tools.nix {};
80
81 mypkgs.pass = (pass.withExtensions (exts: [ exts.pass-otp ])).overrideAttrs (old:
82 fetchedGit ./fetched/pass.json // {
83 patches = old.patches ++ [ ./patches/pass-fix-pass-init.patch ];
84 }
85 );
86
87 mypkgs.profanity = (profanity.override {
88 notifySupport = true;
89 inherit libnotify gpgme gdk_pixbuf;
90 python = python3;
91 }).overrideAttrs (old: rec {
92 configureFlags = old.configureFlags ++ [ "--enable-plugins" ];
93 });
94
95 mypkgs.weechat = weechat.override {
96 configure = { availablePlugins, ... }: {
97 plugins = with availablePlugins; [
98 (python.withPackages (ps: with ps; [websocket_client emoji]))
99 perl
100 ];
101 };
102 };
103
104 buildPerlPackage = callPackage <nixpkgs/pkgs/development/perl-modules/generic> { };
105 mypkgs.note = buildPerlPackage rec {
106 name = "note-1.3.26";
107 src = fetchurl {
108 url = "mirror://cpan/authors/id/T/TL/TLINDEN/${name}.tar.gz";
109 sha256 = "1h645rnb5vpms48fcyzvp7cwwcbf9k5xq49w2bpniyzzgk2brjrq";
110 };
111 outputs = ["out" "man"];
112 propragatedBuildInputs = [ perlPackages.YAML ];
113 meta = with stdenv.lib; {
114 description = "A perl script for maintaining notes";
115 homepage = http://www.daemon.de/NOTE;
116 license = licenses.gpl3;
117 maintainers = with maintainers; [ { name = "T.v.Dein"; email = "tlinden@cpan.org"; } ];
118 platforms = platforms.unix;
119 };
120 };
121
122 mypkgs.terminal_velocity = with python2Packages; buildPythonApplication rec {
123 pname = "terminal-velocity-git";
124 version = "0.2.0";
125
126 patches = [
127 # FIXME: update this patch when version changes
128 ./patches/terminal_velocity_fix_build.patch
129 ./patches/terminal_velocity_sort_found_notes.patch
130 ];
131
132 propagatedBuildInputs = [ chardet urwid sh pyyaml ];
133 buildInputs = [ m2r restructuredtext_lint pygments ];
134
135 src = fetchPypi {
136 inherit pname version;
137 sha256 = "13yrkcmvh5h5fwnai61sbmqkrjyisz08n62pq0ada2lyyqf7g6b9";
138 };
139 };
140
141 mypkgs.mtop = buildPerlPackage rec {
142 name = "mtop-${version}";
143 version = "0.6.6";
144 src = fetchurl {
145 url = "http://downloads.sourceforge.net/project/mtop/mtop/v${version}/mtop-${version}.tar.gz";
146 sha256 = "0x0x5300b1j9i0xxk8rsrki0pspyzj2vylhzv8qg3l6j26aw0zrf";
147 };
148 outputs = ["out"];
149 buildInputs = [ perlPackages.DBI perlPackages.DBDmysql perlPackages.Curses ];
150
151 postInstall = ''
152 cd "$out"
153 preConfigure || true
154 '';
155 meta = with stdenv.lib; {
156 description = "MySQL top (monitor and examine slow queries)";
157 homepage = http://mtop.sourceforge.net/;
158 license = licenses.gpl3;
159 maintainers = with maintainers; [ { name = "Marc Prewitt"; email = "mprewitt@chelsea.net"; } ];
160 platforms = platforms.unix;
161 };
162 };
163
164 mypkgs.tiv = buildPerlPackage rec {
165 name = "tiv-${version}";
166 version = "2015";
167 src = fetchurl {
168 url = "http://xyne.archlinux.ca/projects/tiv/src/tiv-${version}.tar.xz";
169 sha256 = "1vq073v7z7vmcd57lhs4rf4jasji69cpjgkz4dykp94a77p1qq90";
170 };
171 outputs = ["out"];
172 buildInputs = [ perlPackages.PerlMagick ];
173 perlPreHookScript = ./hooks/tiv_builder.sh;
174 perlPreHook = ''
175 source ${perlPreHookScript}
176 '';
177 installPhase = ''
178 install -Dm755 tiv "$out/bin/tiv"
179 '';
180 };
181
182 mypkgs.cnagios = stdenv.mkDerivation (fetchedGithub ./fetched/cnagios.json // rec {
183 configureFlags = [
184 "--with-etc-dir=/etc/cnagios"
185 "--with-var-dir=/var/lib/naemon"
186 "--with-nagios-data=4"
187 ];
188
189 prePatch = ''
190 sed -i -e "s/-lcurses/-lncurses/" Makefile.in
191 '';
192 installPhase = ''
193 install -dm755 $out/share/doc/cnagios
194 install -Dm644 cnagiosrc $out/share/doc/cnagios/
195 install -Dm644 cnagios.help $out/share/doc/cnagios/
196 install -Dm644 cnagios.pl $out/share/doc/cnagios/
197 install -dm755 $out/bin
198 install -Dm755 cnagios $out/bin/
199 '';
200 propagatedBuildInputs = [ perl ncurses ];
201 });
202
203 mypkgs.nagios-cli = python2Packages.buildPythonApplication (fetchedGithub ./fetched/nagios-cli.json);
204
205 mypkgs.pg_activity = with python2Packages; buildPythonApplication (fetchedGithub ./fetched/pg_activity.json // rec {
206 propagatedBuildInputs = [ psycopg2 psutil ];
207 });
208
209 mypkgs.pgloader = stdenv.mkDerivation (fetchedGithub ./fetched/pgloader.json // rec {
210 buildInputs = [ sbcl cacert sqlite freetds libzip curl git openssl makeWrapper ];
211 LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ sqlite libzip curl git openssl freetds ];
212 buildPhase = ''
213 export PATH=$PATH:$out/bin
214 export HOME=$TMPDIR
215 make pgloader
216 '';
217 dontStrip = true;
218 enableParallelBuilding = false;
219 installPhase = ''
220 install -Dm755 build/bin/pgloader "$out/bin/pgloader"
221 wrapProgram $out/bin/pgloader --prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}"
222 '';
223 });
224
225 mypkgs.pelican = python3Packages.pelican.overrideAttrs(old: fetchedGithub ./fetched/pelican.json // rec {
226 propagatedBuildInputs = old.propagatedBuildInputs ++ [ python3Packages.pyyaml ];
227 });
228
229 mypkgs.elinks = elinks.overrideAttrs (old:
230 fetchedGithub ./fetched/elinks.json // rec {
231 preConfigure = ''sh autogen.sh'';
232 buildInputs = old.buildInputs ++ [ gettext automake autoconf ];
233 configureFlags = [
234 "--disable-smb" "--without-x" "--enable-cgi"
235 "--enable-leds" "--enable-256-colors"
236 "--enable-html-highlight" "--with-zlib"
237 ];
238 patches = [];
239 }
240 );
241
242 mypkgs.neomutt = neomutt.overrideAttrs (old:
243 rec {
244 buildInputs = old.buildInputs ++ [ gdbm ];
245 configureFlags = old.configureFlags ++ [ "--gdbm" ];
246 }
247 );
248
249 # mypkgs.nagnu = stdenv.mkDerivation (fetchedGithub ./fetched/nagnu.json // rec {
250 # buildInputs = [ ncurses curl ];
251 # installPhase = ''
252 # mkdir -p $out/bin
253 # cp nagnu $out/bin
254 # mkdir -p $out/share/doc/nagnu
255 # cp nagnu.conf.sample $out/share/doc/nagnu
256 # mkdir -p $out/share/man/man8
257 # cp docs/nagnu.8 $out/share/man/man8
258 # '';
259 # });
260
261 mastodon = stdenv.mkDerivation (fetchedGithub ./fetched/mastodon.json // rec {
262 buildPhase = ''
263 export GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt
264 export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
265
266 bundle install --deployment --without development test
267 yarn install --pure-lockfile
268 '';
269 installPhase = ''
270 cp -a . $out
271 '';
272 propagatedBuildInputs = [
273 zlib icu libchardet git bundler yarn
274 protobuf protobufc libidn libpqxx nodejs
275 imagemagick ffmpeg libxml2 libxslt pkgconfig
276 autoconf bison libyaml readline ncurses libffi gdbm
277 jemalloc which postgresql python3
278 ];
279 });
280 # https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh
281 # https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks
282 in
283 mypkgs // {
284 inherit nix-prefetch-scripts;
285 inherit nix-generate-from-cpan;
286 inherit timewarrior;
287 inherit sc-im;
288 inherit pal;
289 inherit duplicity duply;
290 inherit pdftk;
291 inherit googler;
292 inherit jrnl;
293 inherit apg;
294 inherit newsboat;
295 inherit vcsh;
296 inherit xmr-stak;
297 inherit urlwatch;
298 inherit ranger;
299 inherit irssi;
300 inherit abook khard khal;
301 inherit graphicsmagick;
302 inherit youtube-dl;
303 inherit ncmpc;
304 inherit cadaver;
305 inherit mairix notmuch;
306 inherit ctags;
307 inherit s3cmd;
308 inherit solc; # solidity
309 inherit rtorrent;
310 inherit strace;
311 inherit vdirsyncer;
312 inherit w3m lynx links;
313 inherit gitRepo;
314 inherit valgrind;
315 inherit iotop iperf;
316 inherit keybase;
317 inherit bogofilter;
318 inherit mtr;
319 inherit nixops;
320 #inherit mastodon;
321 # todo: lx* ?, unrar, unzip, zeromq?
322 #inherit nextcloud-client;
323 #inherit nixos;
324 }