{ config, pkgs, inputs, ... }:
{
  imports = [
    ./../common
    ./hypr/hyprland.nix
    ./eww
  ];
  /* The home.stateVersion option does not have a default and must be set */
  home.stateVersion = "24.05";
  home.username = "leonv";
  home.homeDirectory = "/home/leonv";

  home.packages = with pkgs; [ 
    brillo
    nextcloud-client
    ausweisapp

    # stuff
    jq
    vlc
    openvpn
    signal-desktop
    webcord
    firefox-wayland
    ungoogled-chromium
    thunderbird
    gimp
    qpdfview
    wget
    fontforge
    gparted
    eza
    ripgrep
    fd
    zoom-us
    obsidian
    zotero

    # development
    gnumake
    ghostscript
    jdk11
    coq
    gcc
    ghc
    cabal-install
    haskell-language-server
    python3
    python3Packages.pygments
    nodejs_20
    unifont
    anki
    pandoc

    # hyprland
    kitty
    networkmanagerapplet
    mako
    libnotify
    pavucontrol
    qimgv
    playerctl
    hyprpicker
    wev
    inputs.hyprland-contrib.packages.${pkgs.system}.grimblast
    bluez
    htop
    archiver
    zip
    unzip
    emacs
    shellcheck

    # yubikey
    yubico-pam
    yubikey-manager

    # agda
    (agda.withPackages [ 
      agdaPackages.standard-library
      agdaPackages.agda-categories
    ])

    lean4

    # for emacs
    texlab
  ];

  programs.home-manager.enable = true;

  xdg.configHome = /home/leonv/.config;
  xdg.configFile."hypr/hypridle.conf".source = ./hypr/hypridle.conf;
  xdg.configFile."hypr/hyprlock.conf".source = ./hypr/hyprlock.conf;
  xdg.configFile."hypr/hyprpaper.conf".source = ./hypr/hyprpaper.conf;
  xdg.configFile."doom/init.el".source = ./doom/init.el;
  xdg.configFile."doom/config.el".source = ./doom/config.el;
  xdg.configFile."doom/packages.el".source = ./doom/packages.el;

  programs.zsh = {
    enable = true;
    shellAliases = {
      clean = "sudo nix-env --delete-generations old --profile /nix/var/nix/profiles/system && sudo /nix/var/nix/profiles/system/bin/switch-to-configuration switch && sudo nix-store --gc";
      ls = "eza";
      ll = "eza -l";
      l = "eza -lah";
      code = "codium";
      alg = "code ~/Git/algprog/tex";
      nixos = "code ~/Git/nixos";
    };
    initExtra = ''
      function rebuild () {
        sudo nixos-rebuild switch --flake /home/leonv/Git/nixos
        sudo cp -r /home/leonv/Git/nixos /etc/
      }
    '';
    oh-my-zsh.enable = true;
  };

  home.pointerCursor = {
    gtk.enable = true;
    package = pkgs.bibata-cursors;
    name = "Bibata-Modern-Classic";
    size = 24;
  };

  gtk = {
    enable = true;
    theme = {
      name = "Orchis-Dark-Compact";
      package = pkgs.orchis-theme.overrideAttrs (finalAttrs: { tweaks = [ "dark" ]; });
    };
    iconTheme = {
      name = "Dracula";
      package = pkgs.dracula-icon-theme;
    };
    font = {
      name = "NotoSans Nerd Font";
    };
  };
  home.sessionVariables.GTK_THEME = "Orchis-Dark-Compact";
  home.sessionPath = [ "$HOME/.config/emacs/bin" ];

  services.mpris-proxy.enable = true;
}