{ config, pkgs, ... }:
with import <stockholm/lib>;
let
  user = config.krebs.build.user;
  xmonad-lass = pkgs.callPackage <stockholm/lass/5pkgs/custom/xmonad-lass> { inherit config; };
in {
  imports = [
    ./mpv.nix
    ./power-action.nix
    ./copyq.nix
    ./urxvt.nix
    ./xdg-open.nix
    {
      hardware.pulseaudio = {
        enable = true;
        systemWide = true;
      };
      security.rtkit.enable = true;
      sound.enableOSSEmulation = false;
    }
    {
      krebs.per-user.lass.packages = [
        pkgs.sshuttle
      ];
      security.sudo.extraConfig = ''
        lass ALL= (root) NOPASSWD:SETENV: ${pkgs.sshuttle}/bin/.sshuttle-wrapped
      '';
    }
    { #font magic
      options.lass.fonts = {
        regular = mkOption {
          type = types.str;
          default = "-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1";
        };
        bold = mkOption {
          type = types.str;
          default = "-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1";
        };
        italic = mkOption {
          type = types.str;
          default = "-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1";
        };
      };
      config.krebs.xresources.resources.X = ''
        *.font:       ${config.lass.fonts.regular}
        *.boldFont:   ${config.lass.fonts.bold}
        *.italicFont: ${config.lass.fonts.italic}
      '';
    }
  ];

  users.extraUsers.mainUser.extraGroups = [ "audio" "video" ];

  time.timeZone = "Europe/Berlin";

  programs.ssh.agentTimeout = "10m";
  programs.ssh.startAgent = true;
  services.openssh.forwardX11 = true;

  environment.systemPackages = with pkgs; [
    acpi
    ag
    cabal2nix
    cholerab
    dic
    dmenu
    font-size
    fzfmenu
    gitAndTools.qgit
    git-preview
    gnome3.dconf
    lm_sensors
    ncdu
    nix-index
    nmap
    pavucontrol
    powertop
    rxvt_unicode-with-plugins
    sxiv
    taskwarrior
    termite
    xclip
    xephyrify
    xorg.xbacklight
    xorg.xhost
    xsel
    zathura
  ];

  fonts.fonts = with pkgs; [
    hack-font
    hasklig
    symbola
    xlibs.fontschumachermisc
  ];

  services.xserver = {
    enable = true;
    layout = "us";
    display = mkForce 0;
    xkbVariant = "altgr-intl";
    xkbOptions = "caps:escape";
    libinput.enable = true;
    displayManager.lightdm.enable = true;
    windowManager.default = "xmonad";
    windowManager.session = [{
      name = "xmonad";
      start = ''
        ${pkgs.xorg.xhost}/bin/xhost +LOCAL:
        ${pkgs.systemd}/bin/systemctl --user start xmonad
        exec ${pkgs.coreutils}/bin/sleep infinity
      '';
    }];
  };

  systemd.user.services.xmonad = {
    environment = {
      DISPLAY = ":${toString config.services.xserver.display}";
      RXVT_SOCKET = "%t/urxvtd-socket";
      XMONAD_DATA_DIR = "/tmp";
    };
    serviceConfig = {
      SyslogIdentifier = "xmonad";
      ExecStart = "${xmonad-lass}/bin/xmonad";
      ExecStop = "${xmonad-lass}/bin/xmonad --shutdown";
    };
    restartIfChanged = false;
  };

  nixpkgs.config.packageOverrides = super: {
    dmenu = pkgs.writeDashBin "dmenu" ''
      ${pkgs.fzfmenu}/bin/fzfmenu "$@"
    '';
  };

  krebs.xresources.enable = true;
  lass.screenlock.enable = true;
}