143 lines
3.3 KiB
Nix
143 lines
3.3 KiB
Nix
{ config, lib, inputs, pkgs, timeZone, ... }:
|
|
let
|
|
deskCfg = config.deskCfg;
|
|
in
|
|
{
|
|
imports = [
|
|
./nixos/hardware-configuration.nix
|
|
./modules/sway/sway_conf.nix
|
|
../../shared/modules/desktop/base.nix
|
|
../../shared/modules/desktop/stylix.nix
|
|
../../shared/modules/desktop/silent-boot.nix
|
|
../../shared/modules/desktop/greetd.nix
|
|
../../shared/modules/wm/niri.nix
|
|
../../shared/modules/services/syncthing.nix
|
|
../../shared/modules/services/kdeconnect.nix
|
|
../../shared/modules/services/docker.nix
|
|
../../shared/modules/services/tailscale.nix
|
|
../../shared/modules/services/avahi.nix
|
|
../../shared/modules/services/motu-m4-combined.nix
|
|
];
|
|
|
|
deskCfg = {
|
|
userName = "nate";
|
|
hostName = "winmax";
|
|
fullName = "Nate Anderson";
|
|
de = "niri";
|
|
installGaming = true;
|
|
};
|
|
|
|
# Stylix — derive color scheme from wallpaper
|
|
stylix.image = ./wallpaper.png;
|
|
stylix.fonts.sizes = {
|
|
applications = 12;
|
|
desktop = 10;
|
|
popups = 10;
|
|
terminal = 11;
|
|
};
|
|
|
|
# Limit the number of generations to keep
|
|
boot.loader.systemd-boot.configurationLimit = 5;
|
|
|
|
# Systemd initrd for faster boot
|
|
boot.initrd.systemd.enable = true;
|
|
|
|
# Silent boot
|
|
silentBoot.enable = true;
|
|
|
|
# Plymouth boot animation
|
|
boot.plymouth = {
|
|
enable = true;
|
|
theme = "rings";
|
|
themePackages = with pkgs; [
|
|
(adi1090x-plymouth-themes.override {
|
|
selected_themes = [ "rings" ];
|
|
})
|
|
];
|
|
};
|
|
|
|
# Perform garbage collection weekly to maintain low disk usage
|
|
nix.gc = {
|
|
automatic = true;
|
|
dates = "weekly";
|
|
options = "--delete-older-than 14d";
|
|
};
|
|
nix.settings.auto-optimise-store = true;
|
|
|
|
# Extra groups
|
|
main_user.extraGroups = [ "dialout" "docker" "scanner" "lp" ];
|
|
|
|
# Sway WM (legacy, kept for fallback)
|
|
swaywm = {
|
|
enable = deskCfg.de == "sway";
|
|
useNonFree = true;
|
|
installGaming = deskCfg.installGaming;
|
|
systemPackages = [];
|
|
};
|
|
|
|
# Niri WM config
|
|
niriwm = {
|
|
enable = deskCfg.de == "niri";
|
|
useNonFree = true;
|
|
user = deskCfg.userName;
|
|
systemPackages = [];
|
|
};
|
|
|
|
# Steam with remote play + gamescope
|
|
programs.steam = {
|
|
enable = true;
|
|
remotePlay.openFirewall = true;
|
|
gamescopeSession.enable = true;
|
|
};
|
|
|
|
# MOTU M4 audio interface
|
|
services.motu-m4-combined = {
|
|
enable = true;
|
|
user = deskCfg.userName;
|
|
latencyMs = 10;
|
|
};
|
|
|
|
# ADB for Android
|
|
programs.adb.enable = true;
|
|
|
|
# usbmuxd for iOS
|
|
services.usbmuxd.enable = true;
|
|
|
|
# Nate-specific session variables
|
|
environment.sessionVariables = {
|
|
FIREFOX_USE_SYSTEM_THEME = "true";
|
|
GTK_THEME = "stylix";
|
|
};
|
|
|
|
# Firewall — allow dev server ports
|
|
networking.firewall = {
|
|
enable = true;
|
|
allowedTCPPorts = [ 8080 8081 ];
|
|
};
|
|
|
|
# Bluetooth
|
|
hardware.bluetooth.settings.General = {
|
|
Name = "Nate-WinMax";
|
|
Privacy = "device";
|
|
JustWorksRepairing = "always";
|
|
Class = "0x000100";
|
|
};
|
|
hardware.xpadneo.enable = true;
|
|
|
|
# AMD GPU setup (WinMax uses AMD)
|
|
services.xserver.videoDrivers = [ "amdgpu" ];
|
|
# Enable HIP for ROCm
|
|
systemd.tmpfiles.rules = [
|
|
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
|
|
];
|
|
hardware.graphics = {
|
|
enable = true;
|
|
enable32Bit = true;
|
|
extraPackages = with pkgs; [
|
|
rocmPackages.clr.icd
|
|
];
|
|
};
|
|
|
|
system.stateVersion = "23.11";
|
|
}
|