196 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  config,
 | 
						|
  lib,
 | 
						|
  pkgs,
 | 
						|
  userName,
 | 
						|
  ...
 | 
						|
}: let
 | 
						|
  flatpakPackages = [
 | 
						|
    "com.github.tchx84.Flatseal"
 | 
						|
    "com.slack.Slack"
 | 
						|
    "info.beyondallreason.bar"
 | 
						|
    "io.dbeaver.DBeaverCommunity"
 | 
						|
    "io.openrct2.OpenRCT2"
 | 
						|
    "md.obsidian.Obsidian"
 | 
						|
    "org.prismlauncher.PrismLauncher"
 | 
						|
    "sh.cider.Cider"
 | 
						|
  ];
 | 
						|
in {
 | 
						|
  imports = [
 | 
						|
    (import ../../apps/flatpak.nix {
 | 
						|
      inherit lib pkgs flatpakPackages userName;
 | 
						|
    })
 | 
						|
    ../../apps/gaming.nix
 | 
						|
    ../../apps/appimage.nix
 | 
						|
    ../../graphics
 | 
						|
    ../../pwrMgmt
 | 
						|
    ../../networking/core.nix
 | 
						|
    ../../sound/pipewire.nix
 | 
						|
    ../../sound/shairport.nix
 | 
						|
    ../../sound/focusrite.nix
 | 
						|
    ../../virtualization/podman.nix
 | 
						|
    ../../virtualization/hardware.nix
 | 
						|
  ];
 | 
						|
 | 
						|
  # Enable flakes for NixOS
 | 
						|
  nix.settings.experimental-features = ["nix-command" "flakes"];
 | 
						|
 | 
						|
  # Custom kernel/boot stuff
 | 
						|
  boot = {
 | 
						|
    kernelPackages = pkgs.linuxPackages_latest;
 | 
						|
    loader = {
 | 
						|
      systemd-boot.enable = true;
 | 
						|
      efi.canTouchEfiVariables = true;
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  # Enable Bluetooth if present
 | 
						|
  hardware.bluetooth.enable = true;
 | 
						|
 | 
						|
  # Set your timezone
 | 
						|
  time.timeZone = "America/Detroit";
 | 
						|
 | 
						|
  # Install packages to be installed system-wide
 | 
						|
  environment.systemPackages = with pkgs; [
 | 
						|
    wireguard-tools
 | 
						|
    grim
 | 
						|
    slurp
 | 
						|
    playerctl
 | 
						|
    light
 | 
						|
    brightnessctl
 | 
						|
    wttrbar
 | 
						|
    cliphist
 | 
						|
    xdg-desktop-portal-gtk
 | 
						|
    xdg-utils
 | 
						|
    flatpak-xdg-utils
 | 
						|
    desktop-file-utils
 | 
						|
    shared-mime-info
 | 
						|
    wl-clipboard
 | 
						|
    wl-clip-persist
 | 
						|
  ];
 | 
						|
 | 
						|
  # Enable Polkit
 | 
						|
  security.polkit.enable = true;
 | 
						|
 | 
						|
  # Graphics module (../../graphics/default.nix)
 | 
						|
  graphics = {
 | 
						|
    enable = true;
 | 
						|
    gpuVendor = "amd"; # or "amd" or "intel"
 | 
						|
    wayland.enable = true;
 | 
						|
    vulkan.enable = true;
 | 
						|
  };
 | 
						|
 | 
						|
  # Gaming module (see ../../apps/gaming.nix)
 | 
						|
  gaming = {
 | 
						|
    steam = {
 | 
						|
      enable = true;
 | 
						|
      firewall = {
 | 
						|
        remotePlay = true;
 | 
						|
        localNetworkGameTransfers = true;
 | 
						|
      };
 | 
						|
    };
 | 
						|
    gamemode.enable = true;
 | 
						|
    gamescope.enable = true;
 | 
						|
    lutris = {
 | 
						|
      enable = true;
 | 
						|
      wine = {
 | 
						|
        enable = true;
 | 
						|
        package = pkgs.wine-staging;
 | 
						|
      };
 | 
						|
      compatibility = {
 | 
						|
        protonSupport = true;
 | 
						|
      };
 | 
						|
      extraPackages = with pkgs; [
 | 
						|
        gamemode
 | 
						|
        mangohud
 | 
						|
      ];
 | 
						|
    };
 | 
						|
 | 
						|
    ffxiv.enable = true;
 | 
						|
    minecraft.enable = true;
 | 
						|
  };
 | 
						|
 | 
						|
  # Power management (see ../../pwrMgmt/default.nix)
 | 
						|
  pwrMgmt = {
 | 
						|
    enable = true;
 | 
						|
    cpuFreqGovernor = "performance";
 | 
						|
    powertop.enable = false;
 | 
						|
  };
 | 
						|
 | 
						|
  # Podman module (see ../../virtualization/podman.nix)
 | 
						|
  podman = {
 | 
						|
    enable = true;
 | 
						|
    extraPackages = with pkgs; [
 | 
						|
      docker-credential-helpers
 | 
						|
      toolbox
 | 
						|
      cosign
 | 
						|
      crane
 | 
						|
      podman-tui
 | 
						|
      podman-desktop
 | 
						|
    ];
 | 
						|
  };
 | 
						|
 | 
						|
  # Core networking module (see ../../networking/core.nix)
 | 
						|
  network = {
 | 
						|
    firewall.enable = true;
 | 
						|
    networkManager.enable = true;
 | 
						|
  };
 | 
						|
 | 
						|
  programs = {
 | 
						|
    # Enable GnuPG
 | 
						|
    gnupg.agent = {
 | 
						|
      enable = true;
 | 
						|
      enableSSHSupport = true;
 | 
						|
    };
 | 
						|
 | 
						|
    # Enable SUID wrappers (some programs need them)
 | 
						|
    mtr.enable = true;
 | 
						|
 | 
						|
    # Enable dconf
 | 
						|
    dconf.enable = true;
 | 
						|
  };
 | 
						|
 | 
						|
  # Add username to groups "wheel" and "video" - more may be added here later
 | 
						|
  users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"];
 | 
						|
 | 
						|
  services = {
 | 
						|
    # Enable OpenSSH
 | 
						|
    openssh.enable = true;
 | 
						|
 | 
						|
    # Enable keyring
 | 
						|
    gnome.gnome-keyring.enable = true;
 | 
						|
 | 
						|
    # Flatpak packages (see ../../apps/flatpak.nix)
 | 
						|
    flatpak.packages = flatpakPackages;
 | 
						|
  };
 | 
						|
 | 
						|
  # Focusrite Scarlett audio interface support (see ../../sound/focusrite.nix)
 | 
						|
  sound.hardware.focusrite.enable = true;
 | 
						|
 | 
						|
  # AppImage support
 | 
						|
  appimage.enable = true;
 | 
						|
 | 
						|
  # XDG stuff
 | 
						|
  xdg = {
 | 
						|
    portal = {
 | 
						|
      enable = true;
 | 
						|
      config = {
 | 
						|
        sway = {
 | 
						|
          default = ["wlr" "gtk"];
 | 
						|
          "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
 | 
						|
        };
 | 
						|
        common = {
 | 
						|
          default = ["gtk"];
 | 
						|
          "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
 | 
						|
        };
 | 
						|
      };
 | 
						|
      extraPortals = with pkgs; [
 | 
						|
        xdg-desktop-portal-wlr
 | 
						|
        xdg-desktop-portal-gtk
 | 
						|
      ];
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  system.stateVersion = "24.11";
 | 
						|
}
 |