# 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’).
{
  config,
  pkgs,
  inputs,
  ...
}: {
  imports = [./hardware-configuration.nix];
  hardware.steam-hardware.enable = true;
  nixpkgs.config.allowUnfree = true;

  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  hardware.amdgpu.opencl.enable = true;
  boot.kernelParams = [ "amdgpu.ppfeaturemask=0xfff7ffff" "amdgpu.gpu_recovery=1" ];
  services.openssh = {enable = true;};

  virtualisation.docker.enable = true;
  virtualisation.docker.storageDriver = "btrfs";


  networking = {
    hostName = "desktop";
    networkmanager.enable = true;
    firewall.enable = false;
  };

  nix = {
    gc.automatic = true;
    settings = {
      experimental-features = ["nix-command" "flakes"];
    };
  };

  services = {
    pipewire = {
      enable = false;
      alsa.enable = true;
      alsa.support32Bit = true;
      pulse.enable = true;
      jack.enable = true;
    };
    wivrn = {
      enable = false;
      defaultRuntime = true;
      autoStart = true;
    };
    xserver = {
      enable = false;
      displayManager.gdm.enable = false;
      desktopManager.gnome.enable = false;
    };
  };

  stylix = {
    enable = false;
    autoEnable = true;
    polarity = "light";
    image = ../laptop/wallpaper.png;
    base16Scheme = "${pkgs.base16-schemes}/share/themes/precious-light-warm.yaml";
    opacity = {
      terminal = 0.85;
      popups = 0.75;
      desktop = 0.75;
    };
    cursor = {
      package = pkgs.adwaita-icon-theme;
      name = "Adwaita";
      size = 28;
    };
    fonts = {
      serif = {
        package = pkgs.nerd-fonts.iosevka;
        name = "Iosevka NF";
      };

      sansSerif = {
        package = pkgs.nerd-fonts.iosevka;
        name = "Iosevka NF";
      };

      monospace = {
        package = pkgs.nerd-fonts.iosevka;
        name = "Iosevka NFM";
      };
    };
  };

  i18n = {
    defaultLocale = "en_US.UTF-8";
    extraLocaleSettings = {
      LC_ADDRESS = "en_US.UTF-8";
      LC_IDENTIFICATION = "en_US.UTF-8";
      LC_MEASUREMENT = "en_US.UTF-8";
      LC_MONETARY = "en_US.UTF-8";
      LC_NAME = "en_US.UTF-8";
      LC_NUMERIC = "en_US.UTF-8";
      LC_PAPER = "en_US.UTF-8";
      LC_TELEPHONE = "en_US.UTF-8";
      LC_TIME = "en_US.UTF-8";
    };
  };

  #hardware = {
  #  graphics.enable32Bit = true;
  #};

  programs = {
    zsh.enable = true;
    steam.enable = false;
    gamescope.enable = false;
    envision.enable = false;
    corectrl.enable = false;
  };

  users.users.k = {
    isNormalUser = true;
    description = "k";
    extraGroups = ["networkmanager" "wheel" "docker"];
    packages = with pkgs; [zsh];
    shell = pkgs.zsh;
  };

  home-manager = {
    backupFileExtension = "bk";
    users = {"k" = import ./home.nix;};
  };

  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It‘s perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # 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?
}
