# 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`).

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

{
  imports = [
    inputs.home-manager.nixosModules.default
    ../../modules
  ];

  fonts.packages = with pkgs; [
    (nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
  ];

  # Set your time zone.
  time.timeZone = "America/Los_Angeles";

  snowhawk = {
    dwm.enable = true;
    syncthing.enable = true;
    plymouth.enable = true;
  };

  # Configure keymap in X11
  services.xserver = {
    xkb = {
      layout = "us";
      variant = "";
    };
  };

  # Enable CUPS to print documents.
  services.printing.enable = true;

  services.envfs.enable = true;

  programs.nix-ld.enable = true;
  # programs.nix-ld.libraries = with pkgs; [
  # 
  # ];

  # Define a user account. Don't forget to set a password with `passwd`.
  users.users.ravenshade = {
    isNormalUser = true;
    description = "Zynh Ludwig";
    extraGroups = [ "networkmanager" "wheel" "audio" ];
    packages = with pkgs; [
      ripgrep
      unzip
      fzf
      tree

      gparted
      arandr

      brave
      firefox

      # steam
      spotify
      discord
      steam-run

      xivlauncher

      git-credential-oauth
    ];
  };

  hardware.keyboard.uhk.enable = true;

  services.gnome.gnome-keyring.enable = true;

  programs.dconf.enable = true;

  # I think I need a gtk theme? gnome-keyring
  qt.platformTheme = "gtk2";

  # Enable automatic login for the user.
  services.displayManager.autoLogin = {
    enable = true;
    user = "ravenshade";
  };

  security.sudo.extraRules = lib.mkIf false [
    {
      users = [ "ravenshade" ];
      commands = [{
        command = "${pkgs.nixos-rebuild}/bin/nixos-rebuild";
        options = [ "SETENV" "NOPASSWD" ];
      }];
    }
  ];

  home-manager = {
    extraSpecialArgs = { inherit inputs; };
    users = { "ravenshade" = import ./home.nix; };
    # backupFileExtension = "backup";
  };

  # programs.hyprland.enable = true;
  # environment.sessionVariables.NIXOS_OZONE_WL = "1";

  environment.systemPackages = with pkgs; [
    neovim
    curl
    git
    killall
  ];

  # Enable the OpenSSH daemon.
  services.openssh.enable = true;

  # Open ports in the firewall.
  # networking.firewall.allowedTCPPorts = [ ... ];
  # networking.firewall.allowedUDPPorts = [ ... ];
  # Or disable the firewall altogether.
  # networking.firewall.enable = false;

  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  system.stateVersion = "23.11"; # Did you read the comment?
}