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

{
  imports = [
    ../../home/modules
  ];

  snowhawk = {
    # Desktop
    firefox.enable = true;
    dunst.enable = true;
    theme.enable = true;
    redshift.enable = true;
    flameshot.enable = true;
    playerctl.enable = true;
    kitty.enable = true;
    defaultPrograms.enable = true;
    pipewire-controller.enable = true;

    # Games
    lutris.enable = true;
    xivlauncher.enable = true;

    # Term Tools
    neovim.enable = true;
    tldr.enable = true;

    # Dev
    rust.enable = true;
    projects.enable = true;
    sources.enable = true;

    # Security
    sops.enable = true;
    rbw.enable = true;
  };

  sops.secrets."app_urls/nh_slack" = { };
  snowhawk.brave-apps = {
    enable = true;
    apps = {
      github.url = "https://github.com";
      zgit.url = "https://git.zynh.me";
      gmail.url = "https://mail.google.com/mail/u/0";
      calendar.url = "https://calendar.google.com/calendar/u/0/r";
      slack_nh.urlFile = config.sops.secrets."app_urls/nh_slack".path;
    };
  };

  snowhawk.ssh = {
    enable = true;
    homeNetwork = true;
  };

  repo-clone.repos = {
    "${config.home.homeDirectory}/Pictures/backgrounds".url = lib.zgitRepo "backgrounds";
  };

  snowhawk.tmux.sessionizer.paths = [
    "~/obsidian"
  ];

  home.packages = with pkgs; [
    # (writeShellScriptBin "battlenet" ''
    #   export WINEARCH=win64
    #   export WINEPREFIX=$HOME/.wine-battlenet
    #   wine64 ~/.wine-battlenet/drive_c/Program\ Files\ \(x86\)/Battle.net/Battle.net\ Launcher.exe
    # '')
    (wineWowPackages.full.override {
      wineRelease = "staging";
      mingwSupport = true;
    })
    winetricks
    r2modman

    wowup-cf

    (writeShellScriptBin "fix-desktop" ''
      systemctl --user restart xrootdatetime.service
      systemctl --user restart fehbg.service
    '')

    ripgrep
    unzip
    fzf
    tree

    gparted
    arandr

    bear

    spotify
    vesktop
    (writeShellScriptBin "discord" ''
      ${lib.getExe vesktop} $@
    '')

    steam-run
    brave

    nix-output-monitor
    (writeShellScriptBin "rebuild" ''
      nixos-rebuild switch --log-format internal-json -v $@ |& nom --json
    '')

    (writeShellScriptBin "suspend" ''
      systemctl suspend
    '')

    (writeShellScriptBin "reboot-windows" ''
      sudo ${pkgs.grub2}/bin/grub-reboot "Windows Boot Manager (on /dev/nvme0n1p1)"
      sudo reboot
    '')

    (writeShellScriptBin "roblox" ''
      flatpak run org.vinegarhq.Sober
    '')

    prismlauncher

    feh
    imagemagick
    uhk-agent
    pulsemixer

    obsidian

    inputs.deploy-rs.packages.${pkgs.system}.default

    # Build Tools
    gnumake
    zig
    gcc
    go
    python3
    nodejs_22
    dotnet-sdk_8

    blender

    ffmpeg
    duf

    qdirstat

    pcmanfm
    geeqie

    jq

    gimp
    rsync

    eww
    dwm-msg

    pwvucontrol
  ];

  programs.nix-index.enable = true;

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