{ config, pkgs, ... }:

{
  imports = [
    # ./fix-firefox.nix
  ];

  environment.systemPackages = with pkgs.haskellPackages; with pkgs; [
    gmpc
    m4
    (pkgs.openjdk14 or 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

    dfeet

    geoipWithDatabase

    nix-index

    alacritty

    clinfo

    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 ])
    ++ (with gst_all_1; [ gstreamer gstreamer.dev
      gst-plugins-bad gst-plugins-good gst-plugins-base gst-plugins-ugly ]);

  nixpkgs.config.packageOverrides = pkgs: with pkgs; let
    fetchNixPkgs = { rev, sha256 }:
    fetchFromGitHub {
      inherit sha256 rev;
      owner = "NixOS";
      repo = "nixpkgs-channels";
    };
    stablePkgs = fetchNixPkgs {
      rev = "bb8f0cc2279934cc2274afb6d0941de30b6187ae";
      sha256 = "15b4ny9yxk04ml17sflids8sd707yibika1ikz3xi3lf5db0i8gr";
    };
  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;

  programs.adb.enable = true;
  users.extraUsers.gebner.extraGroups = [ "adbusers" ];

}