# 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, lib, inputs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
      ./../../modules/nixos/cspark-desktop-plasma/module.nix
      ./../../modules/nixos/cspark-desktop-gnome/module.nix
      ./../../modules/nixos/cspark-desktop-sway/module.nix
      ./../../modules/nixos/cspark-desktop-niri/module.nix
      inputs.home-manager.nixosModules.default
    ];

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

  networking.hostName = "cspark-nixos-laptop"; # Define your hostname.

  # Enable networking
  networking.networkmanager.enable = true;
  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.

  # Custom desktop environments
  # cspark-desktop-plasma.enable = true;
  # cspark-desktop-gnome.enable = true;
  # cspark-desktop-sway.enable = true;
  cspark-desktop-niri.enable = true;

  # Home Manager Configuration
  home-manager = {
    extraSpecialArgs = { inherit inputs; };
    users = {
      "cspark" = import ./home.nix;
    };
  };

  # Steam Game Platform
  programs.steam = {
    enable = true;
    # remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
    # dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
    gamescopeSession.enable = true;
  };

  # Waydroid Android Emulation
  virtualisation.waydroid.enable = true;

  # Docker for development
  virtualisation.docker.enable = true;

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    nvtopPackages.intel
  ];

}
