{ inputs, pkgs, ... }:

{
  imports = [
    # DE + style
    ../../modules/desktop-environments/hyprland.nix
    ../../modules/home-manager/apple-style.nix
    ../../modules/home-manager/stylix.nix

    # Utilities + apps
    ../../modules/home-manager/darkman.nix
    ../../modules/home-manager/fish.nix
    ../../modules/home-manager/ags.nix
    ./apps/firefox.nix

    # Home Manager modules
    inputs.ags.homeManagerModules.default
  ];

  services.flameshot = {
    enable = true;
    package = pkgs.flameshot.override { enableWlrSupport = true; };
  };

  modules.hyprland = {
    enable = true;
    plugins = with pkgs.hyprlandPlugins; [ hyprspace ];
    additionalConfig.source = [
      "~/.config/hypr/config/animations.conf"
      "~/.config/hypr/config/autostart.conf"
      "~/.config/hypr/config/binds.conf"
      "~/.config/hypr/config/io.conf"
      "~/.config/hypr/config/misc.conf"
      "~/.config/hypr/config/rules.conf"
      "~/.config/hypr/config/workspaces.conf"
    ];

    additionalConfig = {
      "$terminal" = "alacritty";
      "$fileManager" = "thunar";
      "$browser" = "firefox";
      "$email" = "thunderbird";
      "$shell" = "fish";

      "$screenshot_dir" = "$HOME/images/screenshots";
    };
  };

  modules.stylix = {
    enable = true;
    lightWallpaper = ./wallpapers/light.jpg;
    darkWallpaper = ./wallpapers/dark.jpg;
  };

  stylix.targets.firefox = {
    firefoxGnomeTheme.enable = true;
    profileNames = [ "sador" ];
  };

  modules.ags = {
    enable = true;
    full = true;
  };

  modules.darkman.enable = true;
  modules.apple-style.enable = true;

  modules.fish = {
    enable = true;
    enableStarship = true;
    functions = import ./apps/fish/functions.nix;
  };

  programs.obs-studio = {
    enable = true;
    plugins = with pkgs.obs-studio-plugins; [
      obs-source-clone
      obs-pipewire-audio-capture
      #advanced-scene-switcher
      obs-tuna
      obs-move-transition
      waveform
      wlrobs
    ];
  };

  programs.vscode = {
    enable = true;
    package = pkgs.vscodium;
    # TODO: migrate to 'profiles.default.extensions' on new stable
    extensions = with pkgs.vscode-extensions; [
      rust-lang.rust-analyzer
      bbenoist.nix
    ];
  };
}