{ pkgs, inputs, ... }:

{
  imports = [
    # inputs.impermanence.nixosModules.home-manager.impermanence

    ../../modules/stylix/home
    ../../modules/editors/nixvim
    ../../modules/shells/zsh.nix

    ../../modules/programs/dunst.nix
    ../../modules/programs/waybar
    ../../modules/programs/hyprpaper.nix
    ../../modules/programs/tofi.nix
    ../../modules/programs/alacritty.nix
    # ../../modules/programs/firefox.nix
    ../../modules/programs/tmux.nix

    (import ../../modules/window-managers/hyprland { monitors = ["eDP-1, 1920x1080@60, auto, 1"]; })
    ../../modules/window-managers/hyprland/hyprlock.nix
    ../../modules/window-managers/hyprland/hypridle.nix

    # (import ../../modules/disko/impermanence-home.nix {
    #   extraDirectories = [
    #     ".jump"
    #
    #     ".mozilla"
    #     ".zen"
    #
    #     ".config/vesktop"
    #     ".config/zsh"
    #
    #     ".cache/mozilla"
    #     ".cache/zen"
    #     ".cache/nvidia"
    #     ".cache/nix"
    #     ".cache/obexd"
    #     ".factorio"
    #     ".local/share/Steam"
    #   ];
    #   extraFiles = [ ];
    #
    #   username = "snorre";
    #   nixIndexEnabled = true;
    # })
  ];

  home.username = "snorre";
  home.homeDirectory = "/home/snorre";

  stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-soft.yaml";
  stylix.polarity = "dark";
  stylix.image = ./nixos-wallpaper.png;
  stylix.autoEnable = true;
  stylix.targets.alacritty.enable = true;
  # hyprpaper.wallpaper = ./nixos-wallpaper.png;

  nixpkgs.config.allowUnfree = true;

  home.packages =
    let
      tex = (pkgs.texlive.combine {
        inherit (pkgs.texlive) scheme-medium
          titling
          biblatex hyperref amsmath tcolorbox environ
          ;
      });
    in
    (with pkgs; [
      file
      nixpkgs-fmt
      ripgrep
      jump
      wl-clipboard
      hyprpaper
      hyprpicker
      grimblast
      tofi
      brightnessctl
      # Required for waybar to work
      playerctl
      wl-clipboard
  
      localsend

      ipe
      texlivePackages.latex
      texlivePackages.luatex
      zathura
      tex
      biber

      inputs.zen-browser.packages."${system}".default

      spotify
      vesktop
      sublime-merge
    ]);

  programs.btop.enable = true;
  programs.mangohud.enable = true;
  
  # programs.nix-index = {
  #   enable = true;
  #   enableZshIntegration = true;
  # };

  zsh.jump.enable = true;
  zsh.jump.show-destination = true;
  # Since zsh is the login shell it overrides $HOME/.zsh_history before impermanence can restore the old version.
  # Therefore we simply store the history directly in /persist
  zsh.histFile = "/persist/system/home/snorre/.zsh_history";

  # Let home-manager manage itself
  programs.home-manager.enable = true;

  home.sessionVariables = {
    EDITOR = "nvim";
    # NIX_AUTO_RUN = "1"; # Automatically run non-installed commands if possible
    # NIX_BUILD_SHELL = "zsh";
  };

  home.stateVersion = "23.11";
}