{ 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; }) ../../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"; }