{ config, pkgs, lib, inputs, ... }:

{
  home.username = "blue";
  home.homeDirectory = "/home/blue";

  imports = [
    ./hyprland.nix
    ./waybar.nix
    ./swaync.nix
    ./flatpak.nix
    ./sober.nix
#    ./librewolf.nix
    ./zsh.nix
    ./eza.nix
    ./nixvim.nix
    ./nextcloud.nix
    ./git.nix
    ./stylix.nix
  ];

  # States home manager version that config was originally compatible with, do not change without reading all patch notes since this version and altering as needed
  home.stateVersion = "24.05";

#  services.pass-secret-service.enable = true; # for use with protonmail-bridge
  services.gnome-keyring.enable = true; # used for protonmail-bridge and nextcloud-client

  # Cursor configuration that I hope to one day understand, currently has a scaling issue but thats probably my fault
#  home.pointerCursor = 
#    let 
#      getFrom = url: hash: name: {
#        gtk.enable = true;
#        x11.enable = true;
#        name = name;
#        size = 24;
#        package = 
#          pkgs.runCommand "moveUp" {} ''
#            mkdir -p $out/share/icons
#            ln -s ${pkgs.fetchzip {
#              url = url;
#              hash = hash;
#            }} $out/share/icons/${name}
#          '';
#      };
#    in
#      getFrom 
#        "https://github.com/ful1e5/fuchsia-cursor/releases/download/v2.0.0/Fuchsia-Pop.tar.gz"
#        "sha256-BvVE9qupMjw7JRqFUj1J0a4ys6kc9fOLBPx2bGaapTk="
#        "Fuchsia-Pop";

  # General use home packages that dont require a separate module
  home.packages = with pkgs; [
    # Add grimblast screenshot tool
    grimblast
    powerline-fonts
    nix-output-monitor
#   bitwarden-desktop
    xwaylandvideobridge
    virtualbox
    wofi
    lsp-plugins
  ];

  home.sessionVariables = {
    DEFAULT_BROWSER = "${lib.getExe pkgs.firefox}";
    # Allow XWayland apps to not be weird after turning off xwayland scaling in hyprland.conf
    GDK_SCALE = 1;
    XCURSOR_SIZE = 24;
    # Set default editor
    EDITOR = "nvim";
  };

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

  programs.tmux.enable = true;

  # Add support for bluetooth headset media controls
  services.mpris-proxy.enable = true;

  programs.alacritty = {
    enable = true;
    package = pkgs.alacritty;
    settings = {
      window.dimensions = {
        lines = 3;
        columns = 200;
      };
#      font.normal = {
#        family = "hack";
#      };
#      keyboard.bindings = [
#        {
#          key = "K";
#          mods = "Control";
#          chars = "\\u000c";
#        }
#      ];
    };
  };

#  programs.hyprpaper = {
#    enable = true;
#    settings = {
#      ipc = "on";
#      splash = false;
#      splash_offset = 2.0;

#      preload = [ "~/Pictures/wallpaper.png" ];

#      wallpaper = [
#        ",~/Pictures/wallpaper.png"
#      ];
#    };
#  };
  programs.hyprlock = {
    enable = true;
    settings = {
      general = {
        disable_loading_bar = true;
        grace = 0;
        hide_cursor = true;
        no_fade_in = false;
      };

      background = [
        {
          path = "screenshot";
          blur_passes = 3;
          blur_size = 8;
        }
      ];

      input-field = [
        {
          size = "200, 50";
          position = "0, -80";
          monitor = "eDP-2";
          dots_center = true;
          fade_on_empty = false;
          font_color = "rgb(202, 211, 245)";
          inner_color = "rgb(91, 96, 120)";
          outer_color = "rgb(24, 25, 38)";
          outline_thickness = 5;
#          placeholder_text = "<span foreground="##cad3f5">Password...</span>";
#          shadow_passes = 2;
        }
      ];
    };
  };

  services.blueman-applet.enable = true;
  programs.htop.enable = true;
}