]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - default.nix
Upgrade syden peertube to flake
[perso/Immae/Config/Nix.git] / default.nix
index 51ebcc23e646c0cb4b3f63703261d9d314ffc24c..1f43cdd93883294eb3e4b67df4a1d66b7b98fd72 100644 (file)
-with import <nixpkgs> {};
-with import ./libs.nix { nixpkgs = import <nixpkgs> {}; };
+{ sources ? import ./nix/sources.nix, pkgs ? import sources.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
-        ];
-    };
-  };
-
-  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"];
-    propagatedBuildInputs = [ perlPackages.YAML ];
-    meta = with stdenv.lib; {
-      description = "A perl script for maintaining notes";
-      homepage    = http://www.daemon.de/NOTE;
-      license     = licenses.gpl3;
-      maintainers = with maintainers; [ { name  = "T.v.Dein"; email = "tlinden@cpan.org"; } ];
-      platforms   = platforms.unix;
-    };
-  };
-
-  mypkgs.terminal-velocity = with python36Packages; buildPythonApplication rec {
-    pname = "terminal-velocity-git";
-    version = "0.2.0";
-
-    patches = [
-      ./patches/terminal_velocity_sort_found_notes.patch
-      ./patches/terminal_velocity_python3_support.patch
-      # FIXME: update this patch when version changes
-      ./patches/terminal_velocity_fix_build.patch
-    ];
-
-    propagatedBuildInputs = [ chardet urwid (sh.overridePythonAttrs { doCheck = false; }) pyyaml ];
-    buildInputs = [ m2r (restructuredtext_lint.overridePythonAttrs { doCheck = false; }) pygments ];
-
-    postInstall = ''
-      rm $out/bin/terminal_velocity
-      '';
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "13yrkcmvh5h5fwnai61sbmqkrjyisz08n62pq0ada2lyyqf7g6b9";
-    };
-  };
-
-  mypkgs.mtop = buildPerlPackage rec {
-    name = "mtop-${version}";
-    version = "0.6.6";
-    src = fetchurl {
-      url = "http://downloads.sourceforge.net/project/mtop/mtop/v${version}/mtop-${version}.tar.gz";
-      sha256 = "0x0x5300b1j9i0xxk8rsrki0pspyzj2vylhzv8qg3l6j26aw0zrf";
-    };
-    outputs = ["out"];
-    buildInputs = [ perlPackages.DBI perlPackages.DBDmysql perlPackages.Curses ];
-
-    postInstall = ''
-      cd "$out"
-      preConfigure || true
-    '';
-    meta = with stdenv.lib; {
-      description = "MySQL top (monitor and examine slow queries)";
-      homepage    = http://mtop.sourceforge.net/;
-      license     = licenses.gpl3;
-      maintainers = with maintainers; [ { name  = "Marc Prewitt"; email = "mprewitt@chelsea.net"; } ];
-      platforms   = platforms.unix;
-    };
-  };
-
-  mypkgs.tiv = buildPerlPackage rec {
-    name = "tiv-${version}";
-    version = "2015";
-    src = fetchurl {
-      url = "http://xyne.archlinux.ca/projects/tiv/src/tiv-${version}.tar.xz";
-      sha256 = "1vq073v7z7vmcd57lhs4rf4jasji69cpjgkz4dykp94a77p1qq90";
-    };
-    outputs = ["out"];
-    buildInputs = [ perlPackages.PerlMagick ];
-    perlPreHookScript = ./hooks/tiv_builder.sh;
-    perlPreHook = ''
-      source ${perlPreHookScript}
-    '';
-    installPhase = ''
-      install -Dm755 tiv "$out/bin/tiv"
-    '';
-  };
-
-  mypkgs.cnagios = stdenv.mkDerivation (fetchedGithub ./fetched/cnagios.json // rec {
-    configureFlags = [
-      "--with-etc-dir=/etc/cnagios"
-      "--with-var-dir=/var/lib/naemon"
-      "--with-status-file=/var/lib/naemon/status.dat"
-      "--with-nagios-data=4"
-    ];
-
-    prePatch = ''
-      sed -i -e "s/-lcurses/-lncurses/" Makefile.in
-    '';
-    installPhase = ''
-      install -dm755 $out/share/doc/cnagios
-      install -Dm644 cnagiosrc $out/share/doc/cnagios/
-      install -Dm644 cnagios.help $out/share/doc/cnagios/
-      install -Dm644 cnagios.pl $out/share/doc/cnagios/
-      install -dm755 $out/bin
-      install -Dm755 cnagios $out/bin/
-    '';
-    propagatedBuildInputs = [ perl ncurses ];
-  });
-
-  mypkgs.nagios-cli = python2Packages.buildPythonApplication (fetchedGithub ./fetched/nagios-cli.json);
-
-  mypkgs.pg_activity = with python2Packages; buildPythonApplication (fetchedGithub ./fetched/pg_activity.json // rec {
-    propagatedBuildInputs = [ psycopg2 psutil ];
-  });
-
-  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 = ''
-      export PATH=$PATH:$out/bin
-      export HOME=$TMPDIR
-      make pgloader
-    '';
-    dontStrip = true;
-    enableParallelBuilding = false;
-    installPhase = ''
-      install -Dm755 build/bin/pgloader "$out/bin/pgloader"
-      wrapProgram $out/bin/pgloader --prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}"
-    '';
-  });
-
-  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 = 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
+  mypkgs = pkgs.callPackage ./pkgs {};
 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;
-  }
+{
+  lib = pkgs.callPackage ./lib {};
+  modules = import ./modules;
+  overlays = import ./overlays;
+  pkgs = mypkgs;
+  environments = pkgs.callPackage ./environments {};
+} // mypkgs