X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=blobdiff_plain;f=default.nix;h=674a72f89f64ed8f5c1b8c52ce0bb9d7d010af76;hp=7bffebb292c9038b90770c878f962f9668b5bb44;hb=0e2c16b8b8ac8987fe9cbf86195796ce688e628b;hpb=891200d6d95bed5a81ba5ee865eb9cf85b39a895 diff --git a/default.nix b/default.nix index 7bffebb..674a72f 100644 --- a/default.nix +++ b/default.nix @@ -1,47 +1,16 @@ +with import ./libs.nix; with import {}; let - nixpkgs = import {}; - postHook = '' - header() { - echo -ne "\033[1;36m" - echo -n "$1" - echo -e "\033[0m" - } - - echoCmd() { - printf "\033[1;34m%s:\033[0m" "$1" - shift - printf ' %q' "$@" - echo - } - ''; - - fetchedGithub = path: - let - json = lib.importJSON path; - in rec { - version = json.tag; - name = "${json.meta.name}-${version}"; - src = fetchFromGitHub json.github; - }; - - fetchedGit = path: - let - json = lib.importJSON path; - in rec { - version = json.tag; - name = "${json.meta.name}-${version}"; - src = fetchgit json.git; - }; + mypkgs = {}; - ledger = (nixpkgs.ledger.override { boost = boost166; }).overrideAttrs (oldAttrs: + mypkgs.ledger = (ledger.override { boost = boost166; }).overrideAttrs (_old: fetchedGithub ./fetched/ledger.json // { postInstall = ""; } ); - taskwarrior = nixpkgs.taskwarrior.overrideAttrs (oldAttrs: rec { - postInstall = ''${oldAttrs.postInstall} + mypkgs.taskwarrior = taskwarrior.overrideAttrs (old: rec { + postInstall = ''${old.postInstall} mkdir -p "$out/share/vim/vimfiles/ftdetect" mkdir -p "$out/share/vim/vimfiles/syntax" ln -s "../../../../share/doc/task/scripts/vim/ftdetect/task.vim" "$out/share/vim/vimfiles/ftdetect/" @@ -51,48 +20,48 @@ let ''; }); - vit = (nixpkgs.vit.override { inherit taskwarrior; }).overrideAttrs (oldAttrs: + mypkgs.vit = (vit.override { taskwarrior = mypkgs.taskwarrior; }).overrideAttrs (old: fetchedGithub ./fetched/vit.json // { - buildInputs = oldAttrs.buildInputs ++ [perlPackages.TryTiny perlPackages.TextCharWidth]; + buildInputs = old.buildInputs ++ [perlPackages.TryTiny perlPackages.TextCharWidth]; } ); - weboob = pythonPackages.weboob.overrideAttrs (oldAttrs: rec { - postInstall = ''${oldAttrs.postInstall or ""} + mypkgs.weboob = pythonPackages.weboob.overrideAttrs (old: rec { + postInstall = ''${old.postInstall or ""} mkdir -p $out/share/bash-completion/completions/ cp tools/weboob_bash_completion $out/share/bash-completion/completions/weboob ''; }); - slrn = nixpkgs.slrn.overrideAttrs (oldAttrs: rec { + mypkgs.slrn = slrn.overrideAttrs (old: rec { version = "1.0.3a"; name = "slrn-${version}"; src = fetchurl { url = "http://www.jedsoft.org/releases/slrn/slrn-${version}.tar.bz2"; sha256 = "1b1d9iikr60w0vq86y9a0l4gjl0jxhdznlrdp3r405i097as9a1v"; }; - configureFlags = oldAttrs.configureFlags ++ [ "--with-slrnpull" ]; + configureFlags = old.configureFlags ++ [ "--with-slrnpull" ]; }); - ldapvi = nixpkgs.ldapvi.overrideAttrs (oldAttrs: fetchedGit ./fetched/ldapvi.json); + mypkgs.ldapvi = ldapvi.overrideAttrs (old: fetchedGit ./fetched/ldapvi.json); nixos = import ./nixos_tools.nix {}; - pass = (nixpkgs.pass.withExtensions (exts: [ exts.pass-otp ])).overrideAttrs (oldAttrs: + mypkgs.pass = (pass.withExtensions (exts: [ exts.pass-otp ])).overrideAttrs (old: fetchedGit ./fetched/pass.json // { - patches = oldAttrs.patches ++ [ ./patches/pass-fix-pass-init.patch ]; + patches = old.patches ++ [ ./patches/pass-fix-pass-init.patch ]; } ); - profanity = (nixpkgs.profanity.override { + mypkgs.profanity = (profanity.override { notifySupport = true; inherit libnotify gpgme gdk_pixbuf; python = python3; - }).overrideAttrs (oldAttrs: rec { - configureFlags = oldAttrs.configureFlags ++ [ "--enable-plugins" ]; + }).overrideAttrs (old: rec { + configureFlags = old.configureFlags ++ [ "--enable-plugins" ]; }); - weechat = nixpkgs.weechat.override { + mypkgs.weechat = nixpkgs_unstable.weechat.override { configure = { availablePlugins, ... }: { plugins = with availablePlugins; [ (python.withPackages (ps: with ps; [websocket_client emoji])) @@ -101,15 +70,15 @@ let }; }; - buildPerlPackage = callPackage { }; - note = buildPerlPackage rec { + buildPerlPackage = perlPackages.buildPerlPackage; + mypkgs.note = buildPerlPackage rec { name = "note-1.3.26"; src = fetchurl { url = "mirror://cpan/authors/id/T/TL/TLINDEN/${name}.tar.gz"; sha256 = "1h645rnb5vpms48fcyzvp7cwwcbf9k5xq49w2bpniyzzgk2brjrq"; }; outputs = ["out" "man"]; - buildInputs = [ perlPackages.YAML ]; + propagatedBuildInputs = [ perlPackages.YAML ]; meta = with stdenv.lib; { description = "A perl script for maintaining notes"; homepage = http://www.daemon.de/NOTE; @@ -119,7 +88,7 @@ let }; }; - terminal_velocity = with python2Packages; buildPythonApplication rec { + mypkgs.terminal-velocity = with python2Packages; buildPythonApplication rec { pname = "terminal-velocity-git"; version = "0.2.0"; @@ -129,16 +98,19 @@ let ./patches/terminal_velocity_sort_found_notes.patch ]; - propagatedBuildInputs = [ chardet urwid sh pyyaml ]; + propagatedBuildInputs = [ chardet urwid nixpkgs_unstable.python2Packages.sh pyyaml ]; buildInputs = [ m2r restructuredtext_lint pygments ]; + postInstall = '' + rm $out/bin/terminal_velocity + ''; src = fetchPypi { inherit pname version; sha256 = "13yrkcmvh5h5fwnai61sbmqkrjyisz08n62pq0ada2lyyqf7g6b9"; }; }; - mtop = buildPerlPackage rec { + mypkgs.mtop = buildPerlPackage rec { name = "mtop-${version}"; version = "0.6.6"; src = fetchurl { @@ -161,7 +133,7 @@ let }; }; - tiv = buildPerlPackage rec { + mypkgs.tiv = buildPerlPackage rec { name = "tiv-${version}"; version = "2015"; src = fetchurl { @@ -179,7 +151,7 @@ let ''; }; - cnagios = stdenv.mkDerivation (fetchedGithub ./fetched/cnagios.json // rec { + mypkgs.cnagios = stdenv.mkDerivation (fetchedGithub ./fetched/cnagios.json // rec { configureFlags = [ "--with-etc-dir=/etc/cnagios" "--with-var-dir=/var/lib/naemon" @@ -200,13 +172,13 @@ let propagatedBuildInputs = [ perl ncurses ]; }); - nagios-cli = python2Packages.buildPythonApplication (fetchedGithub ./fetched/nagios-cli.json); + mypkgs.nagios-cli = python2Packages.buildPythonApplication (fetchedGithub ./fetched/nagios-cli.json); - pg_activity = with python2Packages; buildPythonApplication (fetchedGithub ./fetched/pg_activity.json // rec { + mypkgs.pg_activity = with python2Packages; buildPythonApplication (fetchedGithub ./fetched/pg_activity.json // rec { propagatedBuildInputs = [ psycopg2 psutil ]; }); - pgloader = stdenv.mkDerivation (fetchedGithub ./fetched/pgloader.json // rec { + mypkgs.pgloader = stdenv.mkDerivation (fetchedGithub ./fetched/pgloader.json // rec { buildInputs = [ sbcl cacert sqlite freetds libzip curl git openssl makeWrapper ]; LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ sqlite libzip curl git openssl freetds ]; buildPhase = '' @@ -222,20 +194,316 @@ let ''; }); + mypkgs.pelican = python3Packages.pelican.overrideAttrs(old: fetchedGithub ./fetched/pelican.json // rec { + propagatedBuildInputs = old.propagatedBuildInputs ++ [ python3Packages.pyyaml ]; + }); + + mypkgs.elinks = elinks.overrideAttrs (old: + fetchedGithub ./fetched/elinks.json // rec { + preConfigure = ''sh autogen.sh''; + buildInputs = old.buildInputs ++ [ gettext automake autoconf ]; + configureFlags = [ + "--disable-smb" "--without-x" "--enable-cgi" + "--enable-leds" "--enable-256-colors" + "--enable-html-highlight" "--with-zlib" + ]; + patches = []; + } + ); + + mypkgs.neomutt = neomutt.overrideAttrs (old: + rec { + buildInputs = old.buildInputs ++ [ gdbm ]; + configureFlags = old.configureFlags ++ [ "--gdbm" ]; + } + ); + + # mypkgs.nagnu = stdenv.mkDerivation (fetchedGithub ./fetched/nagnu.json // rec { + # buildInputs = [ ncurses curl ]; + # installPhase = '' + # mkdir -p $out/bin + # cp nagnu $out/bin + # mkdir -p $out/share/doc/nagnu + # cp nagnu.conf.sample $out/share/doc/nagnu + # mkdir -p $out/share/man/man8 + # cp docs/nagnu.8 $out/share/man/man8 + # ''; + # }); + + mypkgs.goaccess = goaccess.overrideAttrs(old: rec { + name = "goaccess-${version}"; + version = "1.3"; + src = fetchurl { + url = "https://tar.goaccess.io/${name}.tar.gz"; + sha256 = "16vv3pj7pbraq173wlxa89jjsd279004j4kgzlrsk1dz4if5qxwc"; + }; + configureFlags = old.configureFlags ++ [ "--enable-tcb=btree" ]; + buildInputs = old.buildInputs ++ [ tokyocabinet bzip2 ]; + }); + + mypkgs.mutt-ics = with python3Packages; buildPythonApplication (fetchedGithub ./fetched/mutt-ics.json // rec { + propagatedBuildInputs = [ icalendar ]; + }); + + mypkgs.telegram-cli = stdenv.mkDerivation (fetchedGithub ./fetched/telegram-cli.json // rec { + patches = [ + ./patches/telegram-cli.patch + ]; + buildInputs = [ pkgconfig libevent lua jansson openssl readline zlib libconfig ]; + preBuild = '' + sed -i -e 's@"/etc/" PROG_NAME "/server.pub"@"'$out'/etc/server.pub"@' main.c + ''; + installPhase = '' + mkdir -p $out + install -Dm755 bin/telegram-cli $out/bin/telegram-cli + install -Dm644 tg-server.pub $out/etc/server.pub + install -Dm644 debian/telegram-cli.8 $out/man/man8/telegram-cli.8 + ''; + }); + + mypkgs.telegram-history-dump = stdenv.mkDerivation (fetchedGithub ./fetched/telegram-history-dump.json // rec { + installPhase = '' + mkdir -p $out/lib $out/bin + cp -a $src $out/lib/telegram-history-dump + ln -s $out/lib/telegram-history-dump/telegram-history-dump.rb $out/bin/telegram-history-dump + ''; + buildInputs = [ ruby ]; + }); + + mypkgs.muttprint = stdenv.mkDerivation rec { + name = "muttprint-${version}"; + version = "0.73"; + src = fetchurl { + url = "http://downloads.sf.net/muttprint/${name}.tar.gz"; + sha256 = "1dny4niyibfgazwlzfcnb37jy6k140rs6baaj629z12rmahfdavw"; + }; + patches = [ + ./patches/muttprint_0.73-4.diff.gz + ./patches/muttprint_regex.patch + ./patches/muttprint_two_edge.patch + ]; + preConfigure = '' + aclocal + automake --add-missing --copy + autoconf + ''; + preBuild = '' + cd pics + convert -flop BabyTuX.eps BabyTuX.eps + for i in BabyTuX_color.eps BabyTuX.eps Debian_color.eps \ + Debian.eps Gentoo.eps Gentoo_color.eps ; do + convert $i $(basename $i .eps).png + done + convert penguin.eps penguin.jpg + cd .. + ''; + postInstall = '' + perlFlags= + for i in $(IFS=:; echo $PERL5LIB); do + perlFlags="$perlFlags -I$i" + done + + sed -i "$out/bin/muttprint" -e "s|^#\!\(.*[ /]perl.*\)$|#\!\1$perlFlags|" + sed -i "$out/bin/muttprint" -e "s|ENV{HOME}/.muttprintrc|ENV{XDG_CONFIG_HOME}/muttprint/muttprintrc|" + + wrapProgram $out/bin/muttprint \ + --prefix PATH : ${lib.makeBinPath [ psutils dialog + (texlive.combine { inherit (texlive) scheme-basic utopia fancyvrb lastpage marvosym ucs cm-super; }) ]} + ''; + buildInputs = [ makeWrapper automake autoconf imagemagick ghostscript perl ] ++ + (with perlPackages; [ TimeDate FileWhich TextIconv ]); + }; + + mypkgs.yarn2nix = yarn2nixPackage.yarn2nix; + + mypkgs.cardano = let + daedalusOrig = (import (fetchedGithub ./fetched/daedalus.json).src {}).daedalus; + cfg = stdenv.mkDerivation rec { + name = "launcher-config-custom"; + src = daedalusOrig.cfg; + installPhase = '' + cp -a $src $out + chmod -R u+w $out + cd $out/etc + sed -e "/^walletPath/d" -e "/^walletArgs/d" launcher-config.yaml > launcher-config-server-only.yaml + ''; + }; + daedalus = stdenv.mkDerivation rec { + name = "daedalus-custom"; + src = daedalusOrig; + installPhase = '' + cp -a $src $out + chmod -R u+w $out + cd $out/bin + sed -i -e "s@${builtins.storeDir}/[0-9a-z]*-daedalus-config@${cfg}/etc@" daedalus + sed -e "s@${cfg}/etc/launcher-config.yaml@${cfg}/etc/launcher-config-server-only.yaml@" daedalus > daedalus-server-only + chmod a+x daedalus-server-only + ''; + }; + in + daedalus; + + mypkgs.sia = stdenv.mkDerivation rec { + version = "v1.3.7"; + name = "Sia-${version}"; + src = fetchzip { + url = "https://sia.tech/static/releases/${name}-linux-amd64.zip"; + sha256 = "1ljzwrlkx4hc16r8siiyakn039afipp95dyr83c8yfq3r3bfasqd"; + }; + phases = "installPhase"; + installPhase = '' + mkdir -p $out/share/doc + mkdir -p $out/bin + mkdir -p $out/share/sia + cp -a $src/doc $out/share/doc/sia + cp -a $src/LICENSE $src/README.md $out/share/sia + cp -a $src/{siac,siad} $out/bin + cp -a $src/{siac,siad}.sig $out/share/sia/ + ''; + }; + + mypkgs.iota-cli-app = let + nodeEnv = pkgs.callPackage "${nodePackages.node2nix}/lib/node_modules/node2nix/nix/node-env.nix" { + nodejs = nodejs-8_x; + }; + # built using node2nix -8 -l package-lock.json + # and changing "./." to "src" + packageEnv = import ./fetched/iota-cli-app-node-packages.nix { + src = stdenv.mkDerivation (fetchedGithub ./fetched/iota-cli-app.json // { + phases = "installPhase"; + installPhase = '' + cp -a $src $out + chmod u+w -R $out + cd $out + sed -i -e "s@host: 'http://localhost',@host: 'https://iri.trytes.eu',@" index.js + sed -i -e "s@port: 14265@port: 443@" index.js + ''; + }); + inherit (pkgs) fetchurl fetchgit; + inherit nodeEnv; + }; + in + packageEnv.package; + + mypkgs.duply = stdenv.mkDerivation rec { + name = "duply-${version}"; + version = "2.1"; + + src = fetchurl { + url = "mirror://sourceforge/project/ftplicity/duply%20%28simple%20duplicity%29/2.1.x/duply_${version}.tgz"; + sha256 = "0i5j7h7h6ssrwhll0sfhymisshg54kx7j45zcqffzjxa0ylvzlm8"; + }; + + buildInputs = [ txt2man makeWrapper ]; + + postPatch = "patchShebangs ."; + + installPhase = '' + mkdir -p "$out/bin" + mkdir -p "$out/share/man/man1" + install -vD duply "$out/bin" + sed -i $out/bin/duply -e "1a \ + export PATH='${stdenv.lib.makeBinPath [ coreutils python2 duplicity gawk gnupg1 bash gnugrep txt2man which ]}' + " -e "1a \ + export DUPL_PYTHON_BIN=$(basename ${duplicity}/lib/python*) + " + "$out/bin/duply" txt2man > "$out/share/man/man1/duply.1" + ''; + + meta = with stdenv.lib; { + description = "Shell front end for the duplicity backup tool"; + longDescription = '' + Duply is a shell front end for the duplicity backup tool + http://duplicity.nongnu.org/. It greatly simplifies it's usage by + implementing backup job profiles, batch commands and more. Who says + secure backups on non-trusted spaces are no child's play? + ''; + homepage = http://duply.net/; + license = licenses.gpl2; + maintainers = [ maintainers.bjornfor ]; + platforms = stdenv.lib.platforms.unix; + }; + }; + + mypkgs.boinctui = stdenv.mkDerivation rec { + name = "boinctui-${version}"; + version = "2.5.0"; + src = fetchurl { + url = "http://sourceforge.net/projects/boinctui/files/boinctui_${version}.tar.gz"; + sha256 = "16zxp8r4z6pllacdacg681y56cg2phnn3pm5gwszbsi93cix2g8p"; + }; + + configureFlags = [ "--without-gnutls" ]; + preConfigure = '' + autoconf + ''; + + preBuild = '' + sed -i -e 's/"HOME"/"XDG_CONFIG_HOME"/' src/cfg.cpp + sed -i -e 's@\.boinctui\.cfg@boinctui/boinctui.cfg@' src/mainprog.cpp + ''; + buildInputs = [ expat openssl autoconf ncurses ]; + }; + + mypkgs.sc-im = sc-im.overrideAttrs (old: { + buildPhase = '' + cd src + sed -i Makefile -e 's@\...name.info@.local/state/$(name)info@' + cd .. + '' + old.buildPhase; + }); + + mypkgs.notmuch-vim = stdenv.mkDerivation rec { + name = "notmuch-vim-${version}"; + version = nixpkgs_unstable.notmuch.version; + outputs = [ "out" ]; + src = nixpkgs_unstable.notmuch.src; + phases = [ "unpackPhase" "installPhase" ]; + installPhase = '' + make -C vim DESTDIR=$out prefix="/share/vim/vimfiles" install + ''; + }; + + mypkgs.notmuch-python2 = stdenv.mkDerivation rec { + name = "notmuch-python2-${version}"; + version = nixpkgs_unstable.notmuch.version; + outputs = [ "out" ]; + buildInputs = [ python2Packages.sphinx python2Packages.python ]; + src = nixpkgs_unstable.notmuch.src; + phases = [ "unpackPhase" "buildPhase" "installPhase" "fixupPhase" ]; + buildPhase = '' + cd bindings/python + python setup.py build + ''; + installPhase = '' + python setup.py install --prefix=$out --optimize=1 + ''; + }; + + mypkgs.notmuch-python3 = stdenv.mkDerivation rec { + name = "notmuch-python3-${version}"; + version = nixpkgs_unstable.notmuch.version; + outputs = [ "out" ]; + buildInputs = [ nixpkgs_unstable.python3Packages.sphinx nixpkgs_unstable.python3Packages.python ]; + src = nixpkgs_unstable.notmuch.src; + phases = [ "unpackPhase" "buildPhase" "installPhase" "fixupPhase" ]; + buildPhase = '' + cd bindings/python + python setup.py build + ''; + installPhase = '' + python setup.py install --prefix=$out --optimize=1 + ''; + }; + # https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh # https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks in - { + mypkgs // { inherit nix-prefetch-scripts; inherit nix-generate-from-cpan; - inherit ledger; - inherit taskwarrior vit timewarrior; - inherit weboob; - inherit slrn; - inherit sc-im; - inherit ldapvi; + inherit timewarrior; inherit pal; - inherit duplicity duply; inherit pdftk; inherit googler; inherit jrnl; @@ -244,17 +512,52 @@ in inherit vcsh; inherit xmr-stak; inherit urlwatch; - inherit pass; inherit ranger; - inherit profanity; - inherit weechat irssi; - inherit note terminal_velocity; - inherit mtop; - inherit tiv; - inherit cnagios nagios-cli; + inherit irssi; inherit abook khard khal; inherit graphicsmagick; inherit youtube-dl; - inherit pg_activity pgloader; + inherit ncmpc ncmpcpp; + inherit cadaver; + inherit mairix notmuch; + inherit ctags; + inherit s3cmd; + inherit solc; # solidity + inherit rtorrent; + inherit strace; + inherit vdirsyncer; + inherit w3m lynx links; + inherit gitRepo; + inherit valgrind; + inherit iotop iperf; + inherit keybase; + inherit bogofilter; + inherit mtr; + inherit nixops; + inherit urlview; + inherit rr; + inherit nix-zsh-completions; + inherit browsh; + inherit monero; + stgit = gitAndTools.stgit; + # todo: lx* ?, unrar, unzip, zeromq? + #inherit nextcloud-client; #inherit nixos; - } + } // (with nixpkgs_unstable; { + inherit googler; + inherit khal; + inherit newsboat; + inherit xmr-stak; + inherit urlwatch; + inherit graphicsmagick; + inherit ncmpc; + inherit solc; + inherit w3m lynx links; + inherit valgrind; + inherit ranger; + inherit strace; + inherit notmuch notmuch-mutt; + stgit = gitAndTools.stgit; + inherit bundix; + bower2nix = nodePackages.bower2nix; + })