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

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

  imports = [
    ./hyprland.nix
    ./waybar.nix
    ./swaync.nix
    ./flatpak.nix
    ./sober.nix
#    ./librewolf.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";
  
  # General use home packages that dont require a separate module
  home.packages = [
    # Add grimblast screenshot tool
    pkgs.grimblast
  ];

  home.sessionVariables = {
    EDITOR = "nano";
    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 = 32;

  };

  # 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;
      };
#      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;
        }
      ];
    };
  };

  programs.anyrun = {
    enable = true;
    config = {
      plugins = [
        # An array of all the plugins you want, which either can be paths to the .so files, or their packages
        inputs.anyrun.packages.${pkgs.system}.applications
        inputs.anyrun.packages.${pkgs.system}.rink
#        ./some_plugin.so
#        "${inputs.anyrun.packages.${pkgs.system}.anyrun-with-all-plugins}/lib/kidex"
      ];
      x = { fraction = 0.5; };
      y = { fraction = 0.3; };
      width = { fraction = 0.3; };
      hideIcons = false;
      ignoreExclusiveZones = false;
      layer = "overlay";
      hidePluginInfo = false;
      closeOnClick = true;
      showResultsImmediately = false;
      maxEntries = null;
    };
    extraCss = ''
      #window {
        background: transparent;
      }
      #main {
        background-color: grey;
        text-color: white;
        outline-color: black; 
      }
    '';

#    extraConfigFiles."some-plugin.ron".text = ''
#      Config(
#        // for any other plugin
#        // this file will be put in ~/.config/anyrun/some-plugin.ron
#        // refer to docs of xdg.configFile for available options
#      )
#    '';
  };

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