# This is your home-manager configuration file
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
{
  inputs,
  lib,
  config,
  pkgs,
  ...
}: 
let
  username = "Winter";
in
{
  # You can import other home-manager modules here
  imports = [
    # If you want to use modules your own flake exports (from modules/home-manager):
    # inputs.self.homeManagerModules.example

    # Or modules exported from other flakes (such as nix-colors):
    # inputs.nix-colors.homeManagerModules.default

    # You can also split up your configuration and import pieces of it here:
    # ./nvim.nix

    ./features/niri/niri.nix
    ./features/spicetify.nix
    ./features/yazi/yazi.nix
    ./features/nvimConf.nix
    ./features/cli.nix
    ./features/shell.nix
  ];

  nixpkgs = {
    # You can add overlays here
    overlays = [
      # Add overlays your own flake exports (from overlays and pkgs dir):
      inputs.self.overlays.additions
      inputs.self.overlays.modifications
      inputs.self.overlays.unstable-packages

      # You can also add overlays exported from other flakes:
      # neovim-nightly-overlay.overlays.default

      # Or define it inline, for example:
      # (final: prev: {
      #   hi = final.hello.overrideAttrs (oldAttrs: {
      #     patches = [ ./change-hello-to-hi.patch ];
      #   });
      # })
    ];
    # Configure your nixpkgs instance
    config = {
      # Disable if you don't want unfree packages
      allowUnfree = true;
    };
  };

  # --- xdg ---
  xdg.mimeApps = {
    enable = true;
    defaultApplications = {
      "inode/directory" = [ "kitty-open.desktop" ];
      "image/jpeg" = [ "org.gnome.gThumb.desktop" ];
      "image/png"  = [ "org.gnome.gThumb.desktop" ];
      "image/gif"  = [ "org.gnome.gThumb.desktop" ];
      "image/webp" = [ "org.gnome.gThumb.desktop" ];
      "image/tiff" = [ "org.gnome.gThumb.desktop" ];
      "image/bmp"  = [ "org.gnome.gThumb.desktop" ];
    };
  };

  home.packages = with pkgs; [
    # --- General utils ---
    libreoffice
    libresprite
    hunspell
    hunspellDicts.en_US
    rose-pine-cursor # TODO: ensure change cursor
  ];

  home = {
    username = username;
    homeDirectory = "/home/${username}";
  };
  programs.home-manager.enable = true;

  # --- General utils ---
  programs.quickshell.enable = true;
  programs.obsidian = {
    enable = true;
  };

  # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
  home.stateVersion = "25.11";
}
