]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - default.nix
Add duply and boinctui
[perso/Immae/Config/Nix.git] / default.nix
1 with import ./libs.nix;
2 with import <nixpkgs> {};
3 let
4 mypkgs = {};
5
6 mypkgs.ledger = (ledger.override { boost = boost166; }).overrideAttrs (_old:
7 fetchedGithub ./fetched/ledger.json // {
8 postInstall = "";
9 }
10 );
11
12 mypkgs.taskwarrior = taskwarrior.overrideAttrs (old: rec {
13 postInstall = ''${old.postInstall}
14 mkdir -p "$out/share/vim/vimfiles/ftdetect"
15 mkdir -p "$out/share/vim/vimfiles/syntax"
16 ln -s "../../../../share/doc/task/scripts/vim/ftdetect/task.vim" "$out/share/vim/vimfiles/ftdetect/"
17 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskrc.vim" "$out/share/vim/vimfiles/syntax/"
18 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskdata.vim" "$out/share/vim/vimfiles/syntax/"
19 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskedit.vim" "$out/share/vim/vimfiles/syntax/"
20 '';
21 });
22
23 mypkgs.vit = (vit.override { taskwarrior = mypkgs.taskwarrior; }).overrideAttrs (old:
24 fetchedGithub ./fetched/vit.json // {
25 buildInputs = old.buildInputs ++ [perlPackages.TryTiny perlPackages.TextCharWidth];
26 }
27 );
28
29 mypkgs.weboob = pythonPackages.weboob.overrideAttrs (old: rec {
30 postInstall = ''${old.postInstall or ""}
31 mkdir -p $out/share/bash-completion/completions/
32 cp tools/weboob_bash_completion $out/share/bash-completion/completions/weboob
33 '';
34 });
35
36 mypkgs.slrn = slrn.overrideAttrs (old: rec {
37 version = "1.0.3a";
38 name = "slrn-${version}";
39 src = fetchurl {
40 url = "http://www.jedsoft.org/releases/slrn/slrn-${version}.tar.bz2";
41 sha256 = "1b1d9iikr60w0vq86y9a0l4gjl0jxhdznlrdp3r405i097as9a1v";
42 };
43 configureFlags = old.configureFlags ++ [ "--with-slrnpull" ];
44 });
45
46 mypkgs.ldapvi = ldapvi.overrideAttrs (old: fetchedGit ./fetched/ldapvi.json);
47
48 nixos = import ./nixos_tools.nix {};
49
50 mypkgs.pass = (pass.withExtensions (exts: [ exts.pass-otp ])).overrideAttrs (old:
51 fetchedGit ./fetched/pass.json // {
52 patches = old.patches ++ [ ./patches/pass-fix-pass-init.patch ];
53 }
54 );
55
56 mypkgs.profanity = (profanity.override {
57 notifySupport = true;
58 inherit libnotify gpgme gdk_pixbuf;
59 python = python3;
60 }).overrideAttrs (old: rec {
61 configureFlags = old.configureFlags ++ [ "--enable-plugins" ];
62 });
63
64 mypkgs.weechat = nixpkgs_unstable.weechat.override {
65 configure = { availablePlugins, ... }: {
66 plugins = with availablePlugins; [
67 (python.withPackages (ps: with ps; [websocket_client emoji]))
68 perl
69 ];
70 };
71 };
72
73 buildPerlPackage = perlPackages.buildPerlPackage;
74 mypkgs.note = buildPerlPackage rec {
75 name = "note-1.3.26";
76 src = fetchurl {
77 url = "mirror://cpan/authors/id/T/TL/TLINDEN/${name}.tar.gz";
78 sha256 = "1h645rnb5vpms48fcyzvp7cwwcbf9k5xq49w2bpniyzzgk2brjrq";
79 };
80 outputs = ["out" "man"];
81 propagatedBuildInputs = [ perlPackages.YAML ];
82 meta = with stdenv.lib; {
83 description = "A perl script for maintaining notes";
84 homepage = http://www.daemon.de/NOTE;
85 license = licenses.gpl3;
86 maintainers = with maintainers; [ { name = "T.v.Dein"; email = "tlinden@cpan.org"; } ];
87 platforms = platforms.unix;
88 };
89 };
90
91 mypkgs.terminal-velocity = with python2Packages; buildPythonApplication rec {
92 pname = "terminal-velocity-git";
93 version = "0.2.0";
94
95 patches = [
96 # FIXME: update this patch when version changes
97 ./patches/terminal_velocity_fix_build.patch
98 ./patches/terminal_velocity_sort_found_notes.patch
99 ];
100
101 propagatedBuildInputs = [ chardet urwid nixpkgs_unstable.python2Packages.sh pyyaml ];
102 buildInputs = [ m2r restructuredtext_lint pygments ];
103
104 postInstall = ''
105 rm $out/bin/terminal_velocity
106 '';
107 src = fetchPypi {
108 inherit pname version;
109 sha256 = "13yrkcmvh5h5fwnai61sbmqkrjyisz08n62pq0ada2lyyqf7g6b9";
110 };
111 };
112
113 mypkgs.mtop = buildPerlPackage rec {
114 name = "mtop-${version}";
115 version = "0.6.6";
116 src = fetchurl {
117 url = "http://downloads.sourceforge.net/project/mtop/mtop/v${version}/mtop-${version}.tar.gz";
118 sha256 = "0x0x5300b1j9i0xxk8rsrki0pspyzj2vylhzv8qg3l6j26aw0zrf";
119 };
120 outputs = ["out"];
121 buildInputs = [ perlPackages.DBI perlPackages.DBDmysql perlPackages.Curses ];
122
123 postInstall = ''
124 cd "$out"
125 preConfigure || true
126 '';
127 meta = with stdenv.lib; {
128 description = "MySQL top (monitor and examine slow queries)";
129 homepage = http://mtop.sourceforge.net/;
130 license = licenses.gpl3;
131 maintainers = with maintainers; [ { name = "Marc Prewitt"; email = "mprewitt@chelsea.net"; } ];
132 platforms = platforms.unix;
133 };
134 };
135
136 mypkgs.tiv = buildPerlPackage rec {
137 name = "tiv-${version}";
138 version = "2015";
139 src = fetchurl {
140 url = "http://xyne.archlinux.ca/projects/tiv/src/tiv-${version}.tar.xz";
141 sha256 = "1vq073v7z7vmcd57lhs4rf4jasji69cpjgkz4dykp94a77p1qq90";
142 };
143 outputs = ["out"];
144 buildInputs = [ perlPackages.PerlMagick ];
145 perlPreHookScript = ./hooks/tiv_builder.sh;
146 perlPreHook = ''
147 source ${perlPreHookScript}
148 '';
149 installPhase = ''
150 install -Dm755 tiv "$out/bin/tiv"
151 '';
152 };
153
154 mypkgs.cnagios = stdenv.mkDerivation (fetchedGithub ./fetched/cnagios.json // rec {
155 configureFlags = [
156 "--with-etc-dir=/etc/cnagios"
157 "--with-var-dir=/var/lib/naemon"
158 "--with-nagios-data=4"
159 ];
160
161 prePatch = ''
162 sed -i -e "s/-lcurses/-lncurses/" Makefile.in
163 '';
164 installPhase = ''
165 install -dm755 $out/share/doc/cnagios
166 install -Dm644 cnagiosrc $out/share/doc/cnagios/
167 install -Dm644 cnagios.help $out/share/doc/cnagios/
168 install -Dm644 cnagios.pl $out/share/doc/cnagios/
169 install -dm755 $out/bin
170 install -Dm755 cnagios $out/bin/
171 '';
172 propagatedBuildInputs = [ perl ncurses ];
173 });
174
175 mypkgs.nagios-cli = python2Packages.buildPythonApplication (fetchedGithub ./fetched/nagios-cli.json);
176
177 mypkgs.pg_activity = with python2Packages; buildPythonApplication (fetchedGithub ./fetched/pg_activity.json // rec {
178 propagatedBuildInputs = [ psycopg2 psutil ];
179 });
180
181 mypkgs.pgloader = stdenv.mkDerivation (fetchedGithub ./fetched/pgloader.json // rec {
182 buildInputs = [ sbcl cacert sqlite freetds libzip curl git openssl makeWrapper ];
183 LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ sqlite libzip curl git openssl freetds ];
184 buildPhase = ''
185 export PATH=$PATH:$out/bin
186 export HOME=$TMPDIR
187 make pgloader
188 '';
189 dontStrip = true;
190 enableParallelBuilding = false;
191 installPhase = ''
192 install -Dm755 build/bin/pgloader "$out/bin/pgloader"
193 wrapProgram $out/bin/pgloader --prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}"
194 '';
195 });
196
197 mypkgs.pelican = python3Packages.pelican.overrideAttrs(old: fetchedGithub ./fetched/pelican.json // rec {
198 propagatedBuildInputs = old.propagatedBuildInputs ++ [ python3Packages.pyyaml ];
199 });
200
201 mypkgs.elinks = elinks.overrideAttrs (old:
202 fetchedGithub ./fetched/elinks.json // rec {
203 preConfigure = ''sh autogen.sh'';
204 buildInputs = old.buildInputs ++ [ gettext automake autoconf ];
205 configureFlags = [
206 "--disable-smb" "--without-x" "--enable-cgi"
207 "--enable-leds" "--enable-256-colors"
208 "--enable-html-highlight" "--with-zlib"
209 ];
210 patches = [];
211 }
212 );
213
214 mypkgs.neomutt = neomutt.overrideAttrs (old:
215 rec {
216 buildInputs = old.buildInputs ++ [ gdbm ];
217 configureFlags = old.configureFlags ++ [ "--gdbm" ];
218 }
219 );
220
221 # mypkgs.nagnu = stdenv.mkDerivation (fetchedGithub ./fetched/nagnu.json // rec {
222 # buildInputs = [ ncurses curl ];
223 # installPhase = ''
224 # mkdir -p $out/bin
225 # cp nagnu $out/bin
226 # mkdir -p $out/share/doc/nagnu
227 # cp nagnu.conf.sample $out/share/doc/nagnu
228 # mkdir -p $out/share/man/man8
229 # cp docs/nagnu.8 $out/share/man/man8
230 # '';
231 # });
232
233 mypkgs.goaccess = goaccess.overrideAttrs(old: rec {
234 name = "goaccess-${version}";
235 version = "1.3";
236 src = fetchurl {
237 url = "https://tar.goaccess.io/${name}.tar.gz";
238 sha256 = "16vv3pj7pbraq173wlxa89jjsd279004j4kgzlrsk1dz4if5qxwc";
239 };
240 configureFlags = old.configureFlags ++ [ "--enable-tcb=btree" ];
241 buildInputs = old.buildInputs ++ [ tokyocabinet bzip2 ];
242 });
243
244 mypkgs.mutt-ics = with python3Packages; buildPythonApplication (fetchedGithub ./fetched/mutt-ics.json // rec {
245 propagatedBuildInputs = [ icalendar ];
246 });
247
248 mypkgs.telegram-cli = stdenv.mkDerivation (fetchedGithub ./fetched/telegram-cli.json // rec {
249 patches = [
250 ./patches/telegram-cli.patch
251 ];
252 buildInputs = [ pkgconfig libevent lua jansson openssl readline zlib libconfig ];
253 preBuild = ''
254 sed -i -e 's@"/etc/" PROG_NAME "/server.pub"@"'$out'/etc/server.pub"@' main.c
255 '';
256 installPhase = ''
257 mkdir -p $out
258 install -Dm755 bin/telegram-cli $out/bin/telegram-cli
259 install -Dm644 tg-server.pub $out/etc/server.pub
260 install -Dm644 debian/telegram-cli.8 $out/man/man8/telegram-cli.8
261 '';
262 });
263
264 mypkgs.telegram-history-dump = stdenv.mkDerivation (fetchedGithub ./fetched/telegram-history-dump.json // rec {
265 installPhase = ''
266 mkdir -p $out/lib $out/bin
267 cp -a $src $out/lib/telegram-history-dump
268 ln -s $out/lib/telegram-history-dump/telegram-history-dump.rb $out/bin/telegram-history-dump
269 '';
270 buildInputs = [ ruby ];
271 });
272
273 mypkgs.muttprint = stdenv.mkDerivation rec {
274 name = "muttprint-${version}";
275 version = "0.73";
276 src = fetchurl {
277 url = "http://downloads.sf.net/muttprint/${name}.tar.gz";
278 sha256 = "1dny4niyibfgazwlzfcnb37jy6k140rs6baaj629z12rmahfdavw";
279 };
280 patches = [
281 ./patches/muttprint_0.73-4.diff.gz
282 ./patches/muttprint_regex.patch
283 ./patches/muttprint_two_edge.patch
284 ];
285 preConfigure = ''
286 aclocal
287 automake --add-missing --copy
288 autoconf
289 '';
290 preBuild = ''
291 cd pics
292 convert -flop BabyTuX.eps BabyTuX.eps
293 for i in BabyTuX_color.eps BabyTuX.eps Debian_color.eps \
294 Debian.eps Gentoo.eps Gentoo_color.eps ; do
295 convert $i $(basename $i .eps).png
296 done
297 convert penguin.eps penguin.jpg
298 cd ..
299 '';
300 postInstall = ''
301 perlFlags=
302 for i in $(IFS=:; echo $PERL5LIB); do
303 perlFlags="$perlFlags -I$i"
304 done
305
306 sed -i "$out/bin/muttprint" -e "s|^#\!\(.*[ /]perl.*\)$|#\!\1$perlFlags|"
307 sed -i "$out/bin/muttprint" -e "s|ENV{HOME}/.muttprintrc|ENV{XDG_CONFIG_HOME}/muttprint/muttprintrc|"
308
309 wrapProgram $out/bin/muttprint \
310 --prefix PATH : ${lib.makeBinPath [ psutils dialog
311 (texlive.combine { inherit (texlive) scheme-basic utopia fancyvrb lastpage marvosym ucs cm-super; }) ]}
312 '';
313 buildInputs = [ makeWrapper automake autoconf imagemagick ghostscript perl ] ++
314 (with perlPackages; [ TimeDate FileWhich TextIconv ]);
315 };
316
317 mypkgs.yarn2nix = yarn2nixPackage.yarn2nix;
318
319 mypkgs.cardano = let
320 daedalusOrig = (import (fetchedGithub ./fetched/daedalus.json).src {}).daedalus;
321 cfg = stdenv.mkDerivation rec {
322 name = "launcher-config-custom";
323 src = daedalusOrig.cfg;
324 installPhase = ''
325 cp -a $src $out
326 chmod -R u+w $out
327 cd $out/etc
328 sed -e "/^walletPath/d" -e "/^walletArgs/d" launcher-config.yaml > launcher-config-server-only.yaml
329 '';
330 };
331 daedalus = stdenv.mkDerivation rec {
332 name = "daedalus-custom";
333 src = daedalusOrig;
334 installPhase = ''
335 cp -a $src $out
336 chmod -R u+w $out
337 cd $out/bin
338 sed -i -e "s@${builtins.storeDir}/[0-9a-z]*-daedalus-config@${cfg}/etc@" daedalus
339 sed -e "s@${cfg}/etc/launcher-config.yaml@${cfg}/etc/launcher-config-server-only.yaml@" daedalus > daedalus-server-only
340 chmod a+x daedalus-server-only
341 '';
342 };
343 in
344 daedalus;
345
346 mypkgs.sia = stdenv.mkDerivation rec {
347 version = "v1.3.7";
348 name = "Sia-${version}";
349 src = fetchzip {
350 url = "https://sia.tech/static/releases/${name}-linux-amd64.zip";
351 sha256 = "1ljzwrlkx4hc16r8siiyakn039afipp95dyr83c8yfq3r3bfasqd";
352 };
353 phases = "installPhase";
354 installPhase = ''
355 mkdir -p $out/share/doc
356 mkdir -p $out/bin
357 mkdir -p $out/share/sia
358 cp -a $src/doc $out/share/doc/sia
359 cp -a $src/LICENSE $src/README.md $out/share/sia
360 cp -a $src/{siac,siad} $out/bin
361 cp -a $src/{siac,siad}.sig $out/share/sia/
362 '';
363 };
364
365 mypkgs.iota-cli-app = let
366 nodeEnv = pkgs.callPackage "${nodePackages.node2nix}/lib/node_modules/node2nix/nix/node-env.nix" {
367 nodejs = nodejs-8_x;
368 };
369 # built using node2nix -8 -l package-lock.json
370 # and changing "./." to "src"
371 packageEnv = import ./fetched/iota-cli-app-node-packages.nix {
372 src = stdenv.mkDerivation (fetchedGithub ./fetched/iota-cli-app.json // {
373 phases = "installPhase";
374 installPhase = ''
375 cp -a $src $out
376 chmod u+w -R $out
377 cd $out
378 sed -i -e "s@host: 'http://localhost',@host: 'https://iri.trytes.eu',@" index.js
379 sed -i -e "s@port: 14265@port: 443@" index.js
380 '';
381 });
382 inherit (pkgs) fetchurl fetchgit;
383 inherit nodeEnv;
384 };
385 in
386 packageEnv.package;
387
388 mypkgs.duply = stdenv.mkDerivation rec {
389 name = "duply-${version}";
390 version = "2.1";
391
392 src = fetchurl {
393 url = "mirror://sourceforge/project/ftplicity/duply%20%28simple%20duplicity%29/2.1.x/duply_${version}.tgz";
394 sha256 = "0i5j7h7h6ssrwhll0sfhymisshg54kx7j45zcqffzjxa0ylvzlm8";
395 };
396
397 buildInputs = [ txt2man makeWrapper ];
398
399 postPatch = "patchShebangs .";
400
401 installPhase = ''
402 mkdir -p "$out/bin"
403 mkdir -p "$out/share/man/man1"
404 install -vD duply "$out/bin"
405 sed -i $out/bin/duply -e "1a \
406 export PATH='${stdenv.lib.makeBinPath [ coreutils python2 duplicity gawk gnupg1 bash gnugrep txt2man which ]}'
407 " -e "1a \
408 export DUPL_PYTHON_BIN=$(basename ${duplicity}/lib/python*)
409 "
410 "$out/bin/duply" txt2man > "$out/share/man/man1/duply.1"
411 '';
412
413 meta = with stdenv.lib; {
414 description = "Shell front end for the duplicity backup tool";
415 longDescription = ''
416 Duply is a shell front end for the duplicity backup tool
417 http://duplicity.nongnu.org/. It greatly simplifies it's usage by
418 implementing backup job profiles, batch commands and more. Who says
419 secure backups on non-trusted spaces are no child's play?
420 '';
421 homepage = http://duply.net/;
422 license = licenses.gpl2;
423 maintainers = [ maintainers.bjornfor ];
424 platforms = stdenv.lib.platforms.unix;
425 };
426 };
427
428 mypkgs.boinctui = stdenv.mkDerivation rec {
429 name = "boinctui-${version}";
430 version = "2.5.0";
431 src = fetchurl {
432 url = "http://sourceforge.net/projects/boinctui/files/boinctui_${version}.tar.gz";
433 sha256 = "16zxp8r4z6pllacdacg681y56cg2phnn3pm5gwszbsi93cix2g8p";
434 };
435
436 configureFlags = [ "--without-gnutls" ];
437 preConfigure = ''
438 autoconf
439 '';
440
441 preBuild = ''
442 sed -i -e 's/"HOME"/"XDG_CONFIG_HOME"/' src/cfg.cpp
443 sed -i -e 's@\.boinctui\.cfg@boinctui/boinctui.cfg@' src/mainprog.cpp
444 '';
445 buildInputs = [ expat openssl autoconf ncurses ];
446 };
447
448 mypkgs.sc-im = sc-im.overrideAttrs (old: {
449 buildPhase = ''
450 cd src
451 sed -i Makefile -e 's@\...name.info@.local/state/$(name)info@'
452 cd ..
453 '' + old.buildPhase;
454 });
455
456 mypkgs.notmuch-vim = stdenv.mkDerivation rec {
457 name = "notmuch-vim-${version}";
458 version = nixpkgs_unstable.notmuch.version;
459 outputs = [ "out" ];
460 src = nixpkgs_unstable.notmuch.src;
461 phases = [ "unpackPhase" "installPhase" ];
462 installPhase = ''
463 make -C vim DESTDIR=$out prefix="/share/vim/vimfiles" install
464 '';
465 };
466
467 mypkgs.notmuch-python2 = stdenv.mkDerivation rec {
468 name = "notmuch-python2-${version}";
469 version = nixpkgs_unstable.notmuch.version;
470 outputs = [ "out" ];
471 buildInputs = [ python2Packages.sphinx python2Packages.python ];
472 src = nixpkgs_unstable.notmuch.src;
473 phases = [ "unpackPhase" "buildPhase" "installPhase" "fixupPhase" ];
474 buildPhase = ''
475 cd bindings/python
476 python setup.py build
477 '';
478 installPhase = ''
479 python setup.py install --prefix=$out --optimize=1
480 '';
481 };
482
483 mypkgs.notmuch-python3 = stdenv.mkDerivation rec {
484 name = "notmuch-python3-${version}";
485 version = nixpkgs_unstable.notmuch.version;
486 outputs = [ "out" ];
487 buildInputs = [ nixpkgs_unstable.python3Packages.sphinx nixpkgs_unstable.python3Packages.python ];
488 src = nixpkgs_unstable.notmuch.src;
489 phases = [ "unpackPhase" "buildPhase" "installPhase" "fixupPhase" ];
490 buildPhase = ''
491 cd bindings/python
492 python setup.py build
493 '';
494 installPhase = ''
495 python setup.py install --prefix=$out --optimize=1
496 '';
497 };
498
499 # https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh
500 # https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks
501 in
502 mypkgs // {
503 inherit nix-prefetch-scripts;
504 inherit nix-generate-from-cpan;
505 inherit timewarrior;
506 inherit pal;
507 inherit pdftk;
508 inherit googler;
509 inherit jrnl;
510 inherit apg;
511 inherit newsboat;
512 inherit vcsh;
513 inherit xmr-stak;
514 inherit urlwatch;
515 inherit ranger;
516 inherit irssi;
517 inherit abook khard khal;
518 inherit graphicsmagick;
519 inherit youtube-dl;
520 inherit ncmpc ncmpcpp;
521 inherit cadaver;
522 inherit mairix notmuch;
523 inherit ctags;
524 inherit s3cmd;
525 inherit solc; # solidity
526 inherit rtorrent;
527 inherit strace;
528 inherit vdirsyncer;
529 inherit w3m lynx links;
530 inherit gitRepo;
531 inherit valgrind;
532 inherit iotop iperf;
533 inherit keybase;
534 inherit bogofilter;
535 inherit mtr;
536 inherit nixops;
537 inherit urlview;
538 inherit rr;
539 inherit nix-zsh-completions;
540 inherit browsh;
541 inherit monero;
542 stgit = gitAndTools.stgit;
543 # todo: lx* ?, unrar, unzip, zeromq?
544 #inherit nextcloud-client;
545 #inherit nixos;
546 } // (with nixpkgs_unstable; {
547 inherit googler;
548 inherit khal;
549 inherit newsboat;
550 inherit xmr-stak;
551 inherit urlwatch;
552 inherit graphicsmagick;
553 inherit ncmpc;
554 inherit solc;
555 inherit w3m lynx links;
556 inherit valgrind;
557 inherit ranger;
558 inherit strace;
559 inherit notmuch notmuch-mutt;
560 stgit = gitAndTools.stgit;
561 inherit bundix;
562 bower2nix = nodePackages.bower2nix;
563 })