{ config, pkgs, ... }:

{
  nixpkgs.overlays = [
    (import ../overlays/ledger-udev-rules.nix)
  ];

  nixpkgs.config.allowUnfree = true;

  environment.systemPackages = with pkgs; [
    filezilla
    qbittorrent
    transmission-remote-gtk

    wineWowPackages.staging
    (winetricks.override {
      wine = wineWowPackages.staging;
    })
    steam
    sc-controller
    steam-run
    minecraft
    multimc

    betaflight-configurator

    electrum
    electron-cash
    ledger-live-desktop

    firefox
    torbrowser
    chromium

    tdesktop
    riot-desktop
    mumble
    discord

    kleopatra
    gnupg
    gopass
    xclip

    kdeplasma-addons
    ark
    kate
    kmail
    kdeconnect
    okular
    yakuake
    konversation
    gwenview
    kcalc
    spectacle
    kile
    (texlive.combine {
      inherit (texlive) scheme-small titling collection-langfrench cm-super;
    })

    gnome-breeze
    arc-theme
    materia-theme

    libreoffice

    gimp
    imagemagick
    obs-studio
    vlc
    kodiPlain
    mpv

    glxinfo
    i7z
    appimage-run
  ];

  i18n = {
    consoleKeyMap = "fr";
    defaultLocale = "fr_FR.UTF-8";
  };

  hardware = {
    opengl.driSupport32Bit = true;
    pulseaudio.support32Bit = true;
    steam-hardware.enable = true;
    u2f.enable = true;
    pulseaudio.enable = true;
  };

  sound.enable = true;

  networking.networkmanager.enable = true;

  systemd.extraConfig = "DefaultLimitNOFILE=1048576";
  security.pam.loginLimits = [{
    domain = "*";
    type = "hard";
    item = "nofile";
    value = "1048576";
  }];

  programs = {
    gnupg.agent = { enable = true; enableSSHSupport = true; };
    browserpass.enable = true;
  };

  services = {
    xserver = {
      enable = true;
      layout = "fr";
      displayManager.sddm.enable = true;
      desktopManager.plasma5.enable = true;
    };
    udev.packages = with pkgs; [ ledger-udev-rules ];
    pcscd = {
      enable = true;
      plugins = [
        (pkgs.ccid.overrideAttrs (oldAttrs: rec {
            preBuild = ''
              echo "0x2C97:0x0001:Ledger Token" >> ./readers/supported_readers.txt
            '';
          })
        )
      ];
    };
  };
}