2026-02-18 08:24:25 -08:00
|
|
|
{ config, pkgs, ... }:
|
|
|
|
|
|
|
|
|
|
{
|
2026-02-18 08:56:27 -08:00
|
|
|
# Allow unfree packages (NVIDIA drivers, Steam)
|
|
|
|
|
nixpkgs.config.allowUnfree = true;
|
|
|
|
|
|
2026-02-18 08:24:25 -08:00
|
|
|
# Bootloader
|
|
|
|
|
boot.loader.systemd-boot.enable = true;
|
|
|
|
|
boot.loader.efi.canTouchEfiVariables = true;
|
|
|
|
|
|
|
|
|
|
# Networking
|
|
|
|
|
networking.hostName = "ringtail";
|
|
|
|
|
networking.networkmanager.enable = true;
|
|
|
|
|
|
|
|
|
|
# Time zone
|
|
|
|
|
time.timeZone = "America/Los_Angeles";
|
|
|
|
|
|
|
|
|
|
# Locale
|
|
|
|
|
i18n.defaultLocale = "en_US.UTF-8";
|
|
|
|
|
|
|
|
|
|
# NVIDIA proprietary drivers
|
|
|
|
|
hardware.graphics.enable = true;
|
|
|
|
|
services.xserver.videoDrivers = [ "nvidia" ];
|
|
|
|
|
hardware.nvidia = {
|
|
|
|
|
modesetting.enable = true;
|
|
|
|
|
open = false; # Use proprietary driver for RTX 4080
|
|
|
|
|
nvidiaSettings = true;
|
|
|
|
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Wayland / Sway
|
|
|
|
|
programs.sway = {
|
|
|
|
|
enable = true;
|
|
|
|
|
wrapperFeatures.gtk = true;
|
|
|
|
|
extraPackages = with pkgs; [
|
|
|
|
|
swaylock
|
|
|
|
|
swayidle
|
|
|
|
|
wezterm # terminal
|
|
|
|
|
wmenu # app launcher
|
|
|
|
|
mako # notifications
|
|
|
|
|
grim # screenshots
|
|
|
|
|
slurp # region selection
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
security.polkit.enable = true;
|
|
|
|
|
|
|
|
|
|
# Enable greetd as display manager for sway
|
|
|
|
|
services.greetd = {
|
|
|
|
|
enable = true;
|
|
|
|
|
settings = {
|
|
|
|
|
default_session = {
|
|
|
|
|
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd sway";
|
|
|
|
|
user = "greeter";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# PipeWire for audio
|
|
|
|
|
services.pipewire = {
|
|
|
|
|
enable = true;
|
|
|
|
|
alsa.enable = true;
|
|
|
|
|
pulse.enable = true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Steam
|
|
|
|
|
programs.steam = {
|
|
|
|
|
enable = true;
|
|
|
|
|
dedicatedServer.openFirewall = true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Tailscale
|
|
|
|
|
services.tailscale.enable = true;
|
|
|
|
|
|
|
|
|
|
# SSH
|
|
|
|
|
services.openssh = {
|
|
|
|
|
enable = true;
|
|
|
|
|
settings = {
|
|
|
|
|
PasswordAuthentication = false;
|
|
|
|
|
PermitRootLogin = "no";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# User account
|
|
|
|
|
users.users.eblume = {
|
|
|
|
|
isNormalUser = true;
|
|
|
|
|
initialPassword = "changeme";
|
|
|
|
|
extraGroups = [ "wheel" "networkmanager" "video" ];
|
|
|
|
|
openssh.authorizedKeys.keys = [
|
|
|
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILmh1SSCdDAyu3vkSQH7kAXEPDi8APyjo9JXDTjtha2j"
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# System packages
|
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
|
git
|
|
|
|
|
vim
|
|
|
|
|
htop
|
|
|
|
|
curl
|
|
|
|
|
wget
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
# Enable nix flakes
|
|
|
|
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
|
|
|
|
|
|
|
|
# NixOS release
|
|
|
|
|
system.stateVersion = "25.11";
|
|
|
|
|
}
|