{ config, pkgs, ... }:

{
  environment.systemPackages = with pkgs.haskellPackages; with pkgs; [
    gmpc
    m4
    (pkgs.openjdk12 or pkgs.openjdk11 or pkgs.openjdk10 or openjdk8)
    sbt scala
    chromium
    firefox
    qalculate-gtk
    libqalculate
    viewnior
    gnupg
    (pass.withExtensions (ext: [ ext.pass-otp ]))
    xclip pwgen
    remmina
    ledger
    # hledger
    # hledger-diff
    cmake ninja
    mpv
    neomutt notmuch
    patchelf
    loc
    tokei
    ripgrep
    imagemagick
    mercurial
    manpages

    geoipWithDatabase

    nix-index

    alacritty

    (androidenv.androidPkgs_9_0.platform-tools or androidenv.platformTools) # adb & fastboot

    lm_sensors
    hdparm
    smartmontools
    lsof

    pdfpc

    # emacs
    emacs
    ghostscript # for auctex
    aspell

    (pkgs.nodejs_latest or pkgs.nodejs-12_x or pkgs.nodejs-11_x or pkgs.nodejs-10_x or nodejs-9_x)

    mediainfo

    isync
    msmtp
    vdirsyncer khard khal

    rclone
    duplicity
    magic-wormhole

    linuxPackages.perf

    qrencode zbar

    veriT
    minisat
    picosat
    glucose
    prover9
    eprover
    metis-prover
    spass
    z3
    cvc4
    graphviz
    open-wbo
    # toysolver
  ] ++ (with aspellDicts; [ en de fr nl ]);

  nixpkgs.config.packageOverrides = pkgs: with pkgs; let
    fetchNixPkgs = { rev, sha256 }:
    fetchFromGitHub {
      inherit sha256 rev;
      owner = "NixOS";
      repo = "nixpkgs-channels";
    };
    stablePkgs = fetchNixPkgs {
      rev = "dbad7c7d59f12e81032bc3100e3d9fa44b6d4e70";
      sha256 = "1pjhslnhz4gngbclyr39x4xaicrc1sz2xy8bsrvlr3cl5qrbki2b";
    };
  in {
    # idea-community-eap = pkgs.idea.idea-community.overrideDerivation (oldAttrs: rec {
    #     name = "idea-community-${version}";
    #     version = "2017.2.eap";
    #     src = pkgs.fetchurl {
    #       url = "https://download.jetbrains.com/idea/ideaIC-172.3544.6-no-jdk.tar.gz";
    #       sha256 = "72874a0393a6388b04353a359eea1d1242f59d6e7b96a4cf43c793602ac7ccdb";
    #     };
    #   });
    idea-community-eap = pkgs.idea.idea-community;

    # clion-eap = pkgs.idea.clion.overrideDerivation (oldAttrs: rec {
    #   name = "clion-${version}";
    #   version = "2017.1.eap";
    #   src = pkgs.fetchurl {
    #     url = "http://download.jetbrains.com/cpp/CLion-2017.1-RC.tar.gz";
    #     sha256 = "1rv9rcjv4kv39l9r4g5kqbd4y175301a6kr3js3szkjmhqd50qq3";
    #   };
    # });
    clion-eap = pkgs.idea.clion;

    # neovim = pkgs.neovim.override {
    #   extraPythonPackages = [ pkgs.pythonPackages.websocket_client ];
    # };

    stablePkgs = stablePkgs;
    stable = import stablePkgs {};
  };

  nixpkgs.config.allowTexliveBuilds = true;
  nixpkgs.config.allowUnfree = true;
  nixpkgs.config.android_sdk.accept_license = true;

}