{
  pkgs,
  inputs,
  ...
}:
let
  common = import ../common.nix;
  username = common.username;
  dir = common.dir;
in
{
  imports = [
    inputs.nixvim.homeManagerModules.nixvim
    ./default-applications.nix
    ./fish.nix
    ./nixvim
    ./rofi
    ./wlogout
    ./hyprland
  ];

  # Home Manager needs a bit of information about you and the
  # paths it should manage.
  home = {
    username = username;
    homeDirectory = dir.home;

    sessionVariables = {
      XDG_PICTURES_DIR = dir.pictures; # Define the default dir for pictures
    };

    # You can update Home Manager without changing this value. See
    # the Home Manager release notes for a list of state version
    # changes in each release.
    stateVersion = common.system.version;
  };

  programs = {
    btop.enable = true;

    git = {
      enable = true;
      userName = "Martin Berg Alstad";
      userEmail = "git@martials.no";
      extraConfig = {
        push.autoSetupRemote = true;
      };
    };

    # Let Home Manager install and manage itself.
    home-manager.enable = true;

    kitty = {
      enable = common.terminal == "kitty";
      settings.window_padding_width = 10;
    };
  };

  services = {
    gpg-agent = {
      enable = true;
      pinentryPackage = pkgs.pinentry-curses;
    };
  };
}
