aboutsummaryrefslogblamecommitdiff
path: root/default.nix
blob: 7b2ca98f333a1ff52e5b70ab874d654352c1e4bf (plain) (tree)
1
2
3
4
5
6
7

                                                          
   
              
 
                                                            
                                      








                                                                                                          
                                                                                       
                                         
                                                                                         


     


                                                              




                                                                                                         



                                                                                     

     
                                              





                                                                           
                                                                 

     
                                                                               


                                      
                                                                                   
                                       
                                                                      

     
 
                                          


                                       

                                                                  

     
                                     

                                            

                                                                 

                                                                      
             



          
                                                                         
                                           



                                                                               
                                           



                                                                                                     

                                                                     
 
                                                                                                           


                                                                                    











                                                                     







                                                          










                                                                      
                                             
 




































































                                                                                                                               



























































                                                                                                                    









                                                                    
                              
                        
                      







                                                                   
                              

                                                                    
                      











                                                                        
                              
                        

                                                                    









                                                                        




































                                                                           
 





































































                                                                                                                                         





                                             




                                                                           





































                                                                                                                 

                                                                           
  
             
                                 
                                   
                        
                


                    
                      



                     
                   
                  


                             
                          










                            


                        
                
                    
               
                                
                   
                   

                             
                 
                              
                   
                                       
                    



                                     
                   


                                          



                       
                     


                          
                   
                           
   
with import <nixpkgs> {};
with import ./libs.nix { nixpkgs = import <nixpkgs> {}; };
let
  mypkgs = {};

  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/"
      ln -s "../../../../share/doc/task/scripts/vim/syntax/taskrc.vim" "$out/share/vim/vimfiles/syntax/"
      ln -s "../../../../share/doc/task/scripts/vim/syntax/taskdata.vim" "$out/share/vim/vimfiles/syntax/"
      ln -s "../../../../share/doc/task/scripts/vim/syntax/taskedit.vim" "$out/share/vim/vimfiles/syntax/"
    '';
  });

  mypkgs.vit = (vit.override { taskwarrior = mypkgs.taskwarrior; }).overrideAttrs (old:
    fetchedGithub ./fetched/vit.json // {
      buildInputs = old.buildInputs ++ [perlPackages.TryTiny perlPackages.TextCharWidth];
    }
  );

  mypkgs.weboob = (pythonPackages.weboob.overridePythonAttrs {
      setupPyBuildFlags = [ "--no-qt" "--xdg" ];
    }).overrideAttrs (old: rec {
      version = "1.5";
      src = fetchurl {
        url = "https://git.weboob.org/weboob/weboob/-/archive/${version}/${old.pname}-${version}.tar.gz";
        sha256 = "0l6q5nm5g0zn6gmf809059kddrbds27wgygxsfkqja9blks5vq7z";
      };
      postInstall = ''${old.postInstall or ""}
        mkdir -p $out/share/bash-completion/completions/
        cp tools/weboob_bash_completion $out/share/bash-completion/completions/weboob
      '';
  });

  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 = old.configureFlags ++ [ "--with-slrnpull" ];
  });

  mypkgs.ldapvi = ldapvi.overrideAttrs (old: fetchedGit ./fetched/ldapvi.json);

  nixos = import ./nixos_tools.nix {};

  mypkgs.pass = (pass.withExtensions (exts: [ exts.pass-otp ])).overrideAttrs (old:
    fetchedGit ./fetched/pass.json // {
      patches = old.patches ++ [ ./patches/pass-fix-pass-init.patch ];
    }
  );

  mypkgs.profanity = (profanity.override {
    notifySupport = true;
    inherit libnotify gpgme gdk_pixbuf;
    python = python3;
  }).overrideAttrs (old: rec {
    configureFlags = old.configureFlags ++ [ "--enable-plugins" ];
  });

  mypkgs.weechat = weechat.override {
    configure = { availablePlugins, ... }: {
      plugins = with availablePlugins; [
          # Make sure websocket_client is not 0.55.0, it provokes
          # regular crashes
         (python.withPackages (ps: with ps; [websocket_client emoji]))
         perl
         ruby
        ];
    };
  };

  mypkgs.cnagios = callPackage ./pkgs/cnagios { inherit fetchedGithub; };
  mypkgs.mtop = callPackage ./pkgs/mtop {};
  mypkgs.muttprint = callPackage ./pkgs/muttprint {};
  mypkgs.mutt-ics = callPackage ./pkgs/mutt-ics { inherit fetchedGithub; };
  mypkgs.nagios-cli = callPackage ./pkgs/nagios-cli { inherit fetchedGithub; };
  #mypkgs.nagnu = callPackage ./pkgs/nagnu { inherit fetchedGithub; };
  mypkgs.note = callPackage ./pkgs/note {};
  mypkgs.pg_activity = callPackage ./pkgs/pg_activity { inherit fetchedGithub; };
  mypkgs.pgloader = callPackage ./pkgs/pgloader { inherit fetchedGithub; };
  mypkgs.telegram-cli = callPackage ./pkgs/telegram-cli { inherit fetchedGithub; };
  mypkgs.telegram-history-dump = callPackage ./pkgs/telegram-history-dump { inherit fetchedGithub; };
  mypkgs.terminal-velocity = callPackage ./pkgs/terminal-velocity {};
  mypkgs.tiv = callPackage ./pkgs/tiv {};

  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.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.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 = notmuch.version;
    outputs = [ "out" ];
    src = 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 = notmuch.version;
    outputs = [ "out" ];
    buildInputs = [ python2Packages.sphinx python2Packages.python ];
    src = 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 = notmuch.version;
    outputs = [ "out" ];
    buildInputs = [ python3Packages.sphinx python3Packages.python ];
    src = 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.telegramircd = with python3Packages; let
    telethon = buildPythonPackage rec {
      pname = "Telethon-sync";
      version = "1.1.1";

      src = fetchPypi {
        inherit pname version;
        sha256 =
          "01z8fzqn0qs5pxhvzq891r3mwffq1ga3f8xvm7qdn6kvmxjni9fy";
      };

      propagatedBuildInputs = with self; [
        rsa pyaes async_generator
      ];
      doCheck = false;

      meta = with lib; {
        homepage = https://github.com/LonamiWebs/Telethon;
        description = "Full-featured Telegram client library for Python 3";
        license = licenses.mit;
      };
    };
  in
    buildPythonApplication rec {
      format = "other";
      pname = "telegramircd";
      version = "master";
      propagatedBuildInputs = [ telethon aiohttp ConfigArgParse openssl ];
      src = (fetchedGithub ./fetched/telegramircd.json).src;
      LD_LIBRARY_PATH = "${openssl.out}/lib";
      installPhase = ''
        install -D $src/telegramircd.py $out/bin/telegramircd
        wrapProgram "$out/bin/telegramircd" \
          --prefix LD_LIBRARY_PATH : "${openssl.out}/lib"
        install -Dm644 "$src/config" -t "$out/etc/telegramircd/"
        '';
    };

  mypkgs.lesspipe = lesspipe.overrideAttrs(old: {
    configureFlags = (old.configureFlags or []) ++ [ "--yes" ];
  });

  mypkgs.genius = stdenv.mkDerivation rec {
    name = "genius-${version}";
    version = "1.0.24";
    src = fetchurl {
      url = "https://download.gnome.org/sources/genius/1.0/${name}.tar.xz";
      sha256 = "772f95f6ae4716d39bb180cd50e8b6b9b074107bee0cd083b825e1e6e55916b6";
    };
    buildInputs = [
      mpfr glib hicolor-icon-theme gtk2 intltool gnome-doc-utils python3 gnome2.gtksourceview
      autoconf automake libtool ncurses readline pkg-config
    ];
    preConfigure = ''
      autoreconf -fi
      '';
    preBuild = ''
      sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
      '';
  };

  mypkgs.unicode = let
    version = "12.0";
    version-full = "${version}.0";
    files = {
      emoji-data = fetchurl {
        url = "http://www.unicode.org/Public/emoji/${version}/emoji-data.txt";
        sha256 = "03sf7h1d6kb9m5s02lif88jsi5kjszpkfvcymaqxj8ds70ar9pgv";
      };
      emoji-sequences = fetchurl {
        url = "http://www.unicode.org/Public/emoji/${version}/emoji-sequences.txt";
        sha256 = "1hghki2rn3n7m4lwpwi2a5wrsf2nij4bxga9ldabx4g0g2k23svs";
      };
      emoji-test = fetchurl {
        url = "http://www.unicode.org/Public/emoji/${version}/emoji-test.txt";
        sha256 = "1dqd0fh999mh6naj816ni113m9dimfy3ih9nffjq2lrv9mmlgdck";
      };
      emoji-variation-sequences = fetchurl {
        url = "http://www.unicode.org/Public/emoji/${version}/emoji-variation-sequences.txt";
        sha256 = "1cccwx5bl79w4c19vi5dhjqxrph92s8hihp9y8s2cqvdzmgbln7a";
      };
      emoji-zwj-sequences = fetchurl {
        url = "http://www.unicode.org/Public/emoji/${version}/emoji-zwj-sequences.txt";
        sha256 = "1l791nbijmmhwa7kmvfn8gp26ban512l6mgqpz1mnbq3xm19181n";
      };
    };
    zippedFiles = {
      UCD = fetchurl {
        url = "http://www.unicode.org/Public/zipped/${version-full}/UCD.zip";
        sha256 = "1ighy39cjkmqnv1797wrxjz76mv1fdw7zp5j04q55bkwxsdkvrmh";
      };
      Unihan = fetchurl {
        url = "http://www.unicode.org/Public/zipped/${version-full}/Unihan.zip";
        sha256 = "1kfdhgg2gm52x3s07bijb5cxjy0jxwhd097k5lqhvzpznprm6ibf";
      };
    };
  in
    pkgs.runCommand "unicode" {
      buildInputs = [ libarchive ];
    } ''
    mkdir -p $out/share/unicode
    ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (n: u: "install -Dm644 ${u} $out/share/unicode/emoji/${n}.txt") files)}
    ${builtins.concatStringsSep "\n" (lib.attrsets.mapAttrsToList (n: u: ''
      install -Dm644 ${u} $out/share/unicode/${n}.zip
      bsdtar -C "$out/share/unicode" -x -f "$out/share/unicode/${n}.zip"
      '') zippedFiles)}
    '';

  mypkgs.dwm = dwm.overrideAttrs(old: rec {
    postPatch = ''
      cp ${./patches/dwm_config.h} ./config.h
      '';
  });

  mypkgs.nixops = nixops.overrideAttrs (old: {
    preConfigure = (old.preConfigure or "") + ''
      sed -i -e "/'keyFile'/s/'path'/'string'/" nixops/backends/__init__.py
      '';
  });
  mypkgs.flrn = let
    slang = stdenv.mkDerivation rec {
      name = "slang-debian-patched-${version}";
      version = "1.4.9";
      src = fetchurl {
        url = "ftp://space.mit.edu/pub/davis/slang/v1.4/slang-1.4.9.tar.gz";
        sha256 = "1y2mg0whqh4b3acd0k17i4biz55bimxg8aaxhmwd165cvspxns9r";
      };
      debianPatches = fetchurl {
        url = "http://archive.debian.org/debian-archive/debian-amd64/pool/main/s/slang/slang_1.4.9dbs-8.diff.gz";
        sha256 = "0xdq14k5ynqfwpmis1rcggs7m4n921i3bs27icbmbhfg5gb2hap2";
      };
      preConfigure = ''
        cp $debianPatches ./slang.diff.gz
        gunzip slang.diff.gz
        patch -p1 < slang.diff
        for i in debian/patches/*; do
          patch -p1 < $i
        done
        makeFlagsArray=(CFLAGS=" -g -O2 -fno-strength-reduce -DUTF8 -D_REENTRANT -D_XOPEN_SOURCE=500")
        '';
      postBuild = ''
        sed -i "1i#ifndef UTF8\n#define UTF8\n#endif" src/slang.h
        '';
    };
  in
    stdenv.mkDerivation (fetchedGithub ./fetched/flrn.json // rec {
      buildInputs = [ libetpan openssl autoconf groff slang yacc ];
      preConfigure = ''
        sed -i -e "s/test -e configure/false/" configure.in
        autoconf
        sed -i -e '/define CHECK_MAIL/d' src/flrn_config.h
        sed -i -e '/DEFAULT_DIR_FILE/s@".flrn"@".config/flrn"@' src/flrn_config.h
        sed -i -e '/DEFAULT_CONFIG_FILE/s@".flrnrc"@"flrnrc"@' src/flrn_config.h
        sed -i -e '/DEFAULT_FLNEWS_FILE/s@".flnewsrc"@"flnewsrc"@' src/flrn_config.h
        sed -i -e '/flrn_char chaine/s@18@20@' src/flrn_command.c
        '';
    });
# 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 timewarrior;
    inherit pal;
    inherit pdftk;
    inherit googler;
    inherit jrnl;
    inherit apg pwgen;
    inherit newsboat;
    inherit vcsh;
    inherit xmr-stak;
    inherit urlwatch;
    inherit ranger;
    inherit irssi;
    inherit abook khard khal;
    inherit graphicsmagick;
    inherit youtube-dl;
    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 urlview;
    inherit rr;
    inherit nix-zsh-completions;
    inherit browsh;
    inherit monero;
    inherit nextcloud-client;
    inherit feh imagemagick;
    inherit lftp;
    stgit = gitAndTools.stgit;
    inherit bundix;
    bower2nix = nodePackages.bower2nix;
    inherit firefox;
    inherit jq;
    inherit lzo unzip bzip2 p7zip xz;
    # unrar is unfree
    inherit tig;
    #inherit nixos;
    inherit emacs26-nox;
    inherit highlight sourceHighlight;
    pygmentize = python3Packages.pygments;
    inherit iftop htop;
    inherit fetchmail;
    inherit bc;
    inherit cpulimit;
    inherit dmenu st;
    inherit poppler_utils;
    inherit tmux;
    inherit netcat-gnu;
    inherit ledger;
    inherit ffmpeg libxslt;
  }