Configure for atlas/pinj and add Wayland session variables #2
22
flake.nix
22
flake.nix
@@ -22,9 +22,19 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.quickshell.follows = "quickshell";
|
||||
};
|
||||
|
||||
nix-gaming = {
|
||||
url = "github:fufexan/nix-gaming";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, mango, quickshell, noctalia, ... }@inputs:
|
||||
outputs = { self, nixpkgs, mango, quickshell, noctalia, nix-gaming, home-manager, ... }@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
lib = nixpkgs.lib;
|
||||
@@ -34,11 +44,17 @@
|
||||
mangoModule = assert lib.hasAttrByPath [ "nixosModules" "mango" ] mango;
|
||||
mango.nixosModules.mango;
|
||||
|
||||
# IMPORTANT: Replace <hostname> with actual hostname
|
||||
commonModules = [
|
||||
./hosts/<hostname>/hardware-configuration.nix
|
||||
./hosts/atlas/hardware-configuration.nix
|
||||
./modules/common.nix
|
||||
mangoModule
|
||||
# Home Manager module - Foundation for user-level package management
|
||||
# User-specific configurations can be added via home-manager.users.<username>
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
}
|
||||
];
|
||||
in {
|
||||
nixosConfigurations = {
|
||||
|
||||
@@ -10,13 +10,32 @@
|
||||
# --------------------------------------------------------------------------
|
||||
# SYSTEM
|
||||
# --------------------------------------------------------------------------
|
||||
# IMPORTANT: Replace with actual values
|
||||
networking.hostName = "<hostname>";
|
||||
time.timeZone = "<timezone>";
|
||||
i18n.defaultLocale = "<locale>";
|
||||
networking.hostName = "atlas";
|
||||
time.timeZone = "Europe/Berlin";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
# German keyboard layout (nodeadkeys variant)
|
||||
console.keyMap = "de-latin1-nodeadkeys";
|
||||
services.xserver.xkb = {
|
||||
layout = "de";
|
||||
|
|
||||
variant = "nodeadkeys";
|
||||
};
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Memory compression (reduces swap usage)
|
||||
zramSwap = {
|
||||
enable = true;
|
||||
algorithm = "zstd";
|
||||
memoryPercent = 50;
|
||||
};
|
||||
|
||||
# Firmware updates
|
||||
services.fwupd.enable = true;
|
||||
|
||||
# Power profiles daemon (for laptop/power management)
|
||||
services.power-profiles-daemon.enable = true;
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# AMD GPU - RDNA 4 (RX 9060 XT) + Zen 3 CPU (5700G)
|
||||
# --------------------------------------------------------------------------
|
||||
@@ -42,6 +61,13 @@
|
||||
# This variable is optional but makes it explicit
|
||||
environment.variables.AMD_VULKAN_ICD = "RADV";
|
||||
|
||||
# Wayland session variables for proper app integration
|
||||
environment.sessionVariables = {
|
||||
QT_QPA_PLATFORM = "wayland";
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
NIXOS_OZONE_WL = "1"; # Electron apps (VS Code, Discord, etc.)
|
||||
};
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# CPU - Zen 3 Optimizations (Ryzen 7 5700G)
|
||||
# --------------------------------------------------------------------------
|
||||
@@ -75,16 +101,14 @@
|
||||
enable = true;
|
||||
settings.default_session = {
|
||||
command = "mango";
|
||||
# IMPORTANT: Replace <username> with actual username
|
||||
user = "<username>";
|
||||
user = "pinj";
|
||||
};
|
||||
};
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# USER ACCOUNT
|
||||
# --------------------------------------------------------------------------
|
||||
# IMPORTANT: Replace <username> with actual username
|
||||
users.users.<username> = {
|
||||
users.users.pinj = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "wheel" "networkmanager" "video" "seat" ];
|
||||
# IMPORTANT: Generate a password hash with: mkpasswd -m sha-512
|
||||
@@ -151,6 +175,13 @@
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
|
||||
# Low-latency configuration for gaming
|
||||
lowLatency = {
|
||||
enable = true;
|
||||
quantum = 64; # Buffer size (lower = less latency)
|
||||
rate = 48000; # Sample rate
|
||||
};
|
||||
};
|
||||
|
||||
# Disable PulseAudio (conflicts with PipeWire)
|
||||
|
||||
@@ -22,10 +22,9 @@
|
||||
};
|
||||
};
|
||||
|
||||
# IMPORTANT: Replace <username> with actual username
|
||||
# NOTE: After first enabling/applying this dev profile, you must log out and
|
||||
# log back in (or reboot) for the docker group membership to take effect.
|
||||
users.users.<username>.extraGroups = [ "docker" ];
|
||||
users.users.pinj.extraGroups = [ "docker" ];
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# DEVELOPMENT TOOLS
|
||||
@@ -35,11 +34,12 @@
|
||||
nix-direnv.enable = true; # Caches nix shells
|
||||
};
|
||||
|
||||
# IMPORTANT: Replace <username> with actual username
|
||||
users.users.<username>.packages = with pkgs; [
|
||||
users.users.pinj.packages = with pkgs; [
|
||||
# -- Git --
|
||||
lazygit
|
||||
gh # GitHub CLI
|
||||
delta # Git diff viewer
|
||||
meld # Visual diff tool
|
||||
|
||||
# -- Node.js --
|
||||
nodejs_22
|
||||
@@ -56,10 +56,11 @@
|
||||
bat # cat alternative
|
||||
fzf # Fuzzy finder
|
||||
zoxide # cd alternative
|
||||
delta # Git diff viewer
|
||||
|
||||
# -- Database Clients --
|
||||
# -- Database & API Tools --
|
||||
postgresql # psql client
|
||||
dbeaver-bin # Database GUI
|
||||
insomnia # API testing
|
||||
# redis # Uncomment if needed
|
||||
|
||||
# -- Misc --
|
||||
|
||||
@@ -1,9 +1,18 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
# Identification tags (shows in boot menu)
|
||||
system.nixos.tags = [ "gaming" "zen" ];
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# NIX-GAMING PLATFORM OPTIMIZATIONS
|
||||
# --------------------------------------------------------------------------
|
||||
imports = [
|
||||
inputs.nix-gaming.nixosModules.platformOptimisations
|
||||
];
|
||||
|
||||
nix-gaming.platformOptimisations.enable = true;
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# KERNEL - Zen for gaming performance
|
||||
# --------------------------------------------------------------------------
|
||||
@@ -53,17 +62,16 @@
|
||||
# programs to function correctly. These groups are only added when using
|
||||
# the gaming profile. If you need consistent group membership across
|
||||
# both profiles, add these groups to common.nix instead.
|
||||
# IMPORTANT: Replace <username> with actual username
|
||||
users.users.<username>.extraGroups = [ "corectrl" "gamemode" ];
|
||||
users.users.pinj.extraGroups = [ "corectrl" "gamemode" ];
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# GAMING PACKAGES
|
||||
# --------------------------------------------------------------------------
|
||||
# IMPORTANT: Replace <username> with actual username
|
||||
users.users.<username>.packages = with pkgs; [
|
||||
users.users.pinj.packages = with pkgs; [
|
||||
# -- Performance Overlays --
|
||||
mangohud # FPS counter, GPU stats
|
||||
goverlay # MangoHud GUI config
|
||||
vkbasalt # Vulkan post-processing (sharpening, CAS)
|
||||
|
||||
# -- Game Launchers --
|
||||
lutris # Multi-platform launcher
|
||||
@@ -78,6 +86,10 @@
|
||||
# -- Utilities --
|
||||
gamescope # Micro-compositor for gaming
|
||||
corectrl # AMD GPU control GUI
|
||||
lact # Linux AMDGPU Control Tool (alternative to CoreCtrl)
|
||||
|
||||
# -- Communication --
|
||||
discord # Voice chat and gaming communities
|
||||
|
||||
# -- Optional Game Clients --
|
||||
# prismlauncher # Minecraft
|
||||
|
||||
Reference in New Issue
Block a user
PR description says the system timezone should be set to Europe/Rome (with a TODO note), but the config hard-codes Europe/Berlin and there’s no TODO. Please align the value (and TODO/comment) with the intended target, or update the PR description if Berlin is correct.