{ config, pkgs, lib, ... }:

let
  emacsPackage = import ../packages/emacs.nix {
    inherit (pkgs) stdenv;
    pkgs = pkgs.unstable;
    emacs = pkgs.lib.overrideDerivation (pkgs.emacs.override {
        withGTK2 = false;
        withGTK3 = true;
      }) (attrs: {
        postInstall = attrs.postInstall + ''
          rm $out/share/applications/emacs.desktop
        '';
      });
  };
in
{ programs.browserpass.enable = true;
  programs.info.enable = true;
  nixpkgs.config.firefox = {
    enableBrowserpass = true;
    enableOfficialBranding = true;
  };

  environment.systemPackages = with pkgs; [
    unstable.firefox
    pcmanfm

    epdfview
    geeqie

    lxappearance

    vdirsyncer
    khal

    offlineimap
    isync
    mu
    msmtp

    calibre
    mpv

    mosh
    aspell
    aspellDicts.en

    trash-cli
  ];

  nixpkgs.config.allowUnfree = true;

  services.devmon.enable = true;

  services.emacs = {
    enable = true;
    defaultEditor = true;
    package = emacsPackage;
  };

  services.redshift = {
    enable = true;
    temperature = {
      day = 6500;
      night = 3600;
    };
  };

  services.urxvtd = {
    enable = true;
  };

  imports = [
    ./services/xserver.nix
  ];
}