# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{
  inputs,
  pkgs,
  myhostname,
  ...
}:
let
  theme = "mocha";
  modulesDirectory = ../../moduler;
in
{
  imports = [
    ./hardware-configuration.nix

    (modulesDirectory + /users.nix)
    (modulesDirectory + /git.nix)
    (modulesDirectory + /network.nix)
    (modulesDirectory + /programs.nix)
    (modulesDirectory + /system.nix)
    (modulesDirectory + /dev.nix)
    (modulesDirectory + /sound.nix)

    (modulesDirectory + /services/base)

    (modulesDirectory + /programs/hyprland)
    (modulesDirectory + /programs/nixvim)
  ];

  networking.networkmanager = {
    enable = true;
    plugins = with pkgs; [
      networkmanager-openvpn
    ];
  };

  stylix = {
    enable = true;
    base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-${theme}.yaml";
  };

  nixvim = {
    enable = true;
    theme = theme;
  };

  hyprland = {
    enable = true;
    theme = theme;
  };

  home-manager.extraSpecialArgs = { inherit inputs pkgs; };
  home-manager.users.fw = {
    imports = [
      ./../../moduler/home.nix
      ./../../moduler/programs/waybar
      inputs.catppuccin.homeModules.catppuccin
    ];
    waybar = {
      enable = true;
      profile = "laptop";
      theme = theme;
    };
    gtk = {
      enable = true;
      iconTheme = {
        name = "oomox-gruvbox-dark";
        package = pkgs.gruvbox-dark-icons-gtk;
      };
    };
    kitty = {
      enable = true;
      theme = theme;
    };
    fish = {
      theme = theme;
    };
    k9s = {
      enable = true;
      theme = theme;
    };
    oh-my-posh = {
      enable = true;
      theme = theme;
    };
    catppuccin = {
      librewolf = {
        enable = true;
        flavor = theme;
        accent = "peach";
      };
    };
    programs.ranger.enable = true;
    stylix.targets = {
      lazygit.enable = false;
      fish.enable = false;
      kitty.enable = false;
      waybar.enable = false;
      tmux.enable = false;
      k9s.enable = false;
    };
  };

  security.sudo.wheelNeedsPassword = false;
  users.users.root.openssh.authorizedKeys.keys = [
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII60tdNsG0z9q2jHmoTKvkeLQE6OF0bmTsDX1bpqpoG7 fw@jobb"
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFpJBGPIfPB1BwSG7aoKqwfccyZSaU7J3xpJ8behMp9N fw@core"
  ];

  services.upower = {
    enable = true;
  };

  boot.kernelPackages = pkgs.linuxPackages_latest;

  networking.hostName = myhostname;

  system.stateVersion = "25.05";
}
