120 lines
2.8 KiB
Nix
120 lines
2.8 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
{
|
|
imports =
|
|
[
|
|
./system-utils.nix # CLI Tools
|
|
./user-apps.nix # GUI Apps
|
|
];
|
|
|
|
# ==========================================
|
|
# 1. CORE SYSTEM SETTINGS
|
|
# ==========================================
|
|
# Bootloader (Standard UEFI)
|
|
boot.loader.systemd-boot.enable = true;
|
|
boot.loader.efi.canTouchEfiVariables = true;
|
|
|
|
# Networking
|
|
networking.networkmanager.enable = true;
|
|
|
|
# Time & Locale
|
|
time.timeZone = "Europe/London";
|
|
i18n.defaultLocale = "en_US.UTF-8";
|
|
|
|
# ==========================================
|
|
# 2. USER ACCOUNT
|
|
# ==========================================
|
|
users.users.nimmo = {
|
|
isNormalUser = true;
|
|
description = "Nimmo";
|
|
extraGroups = [ "networkmanager" "wheel" "docker" ];
|
|
};
|
|
|
|
# ==========================================
|
|
# 3. COMMON SERVICES
|
|
# ==========================================
|
|
# Firmware & Updates
|
|
services.fwupd.enable = true;
|
|
|
|
# Power (Standard Profile)
|
|
services.power-profiles-daemon.enable = true;
|
|
|
|
# Filesystem Maintenance
|
|
services.fstrim.enable = true;
|
|
zramSwap.enable = true;
|
|
services.btrfs.autoScrub = {
|
|
enable = true;
|
|
interval = "weekly";
|
|
fileSystems = [ "/" ];
|
|
};
|
|
|
|
# Garbage Collection
|
|
nix.gc = {
|
|
automatic = true;
|
|
dates = "weekly";
|
|
options = "--delete-older-than 7d";
|
|
};
|
|
|
|
# Bluetooth
|
|
hardware.bluetooth.enable = true;
|
|
hardware.bluetooth.powerOnBoot = true;
|
|
|
|
# Audio (Pipewire)
|
|
security.rtkit.enable = true;
|
|
services.pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
alsa.support32Bit = true;
|
|
pulse.enable = true;
|
|
};
|
|
|
|
# Docker
|
|
virtualisation.docker.enable = true;
|
|
|
|
# Steam
|
|
programs.steam = {
|
|
enable = true;
|
|
remotePlay.openFirewall = true;
|
|
dedicatedServer.openFirewall = true;
|
|
};
|
|
|
|
# ==========================================
|
|
# 4. DESKTOP ENVIRONMENT (Plasma 6)
|
|
# ==========================================
|
|
services.xserver.enable = true;
|
|
services.displayManager.sddm.enable = true;
|
|
services.displayManager.sddm.wayland.enable = true;
|
|
services.desktopManager.plasma6.enable = true;
|
|
services.xserver.xkb.layout = "gb";
|
|
|
|
# ==========================================
|
|
# 5. NIX CORE SETTINGS
|
|
# ==========================================
|
|
nixpkgs.config.allowUnfree = true;
|
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
system.stateVersion = "24.11";
|
|
|
|
# ==========================================
|
|
# 6. POLISHING
|
|
# ==========================================
|
|
fonts.packages = with pkgs; [
|
|
noto-fonts
|
|
noto-fonts-cjk-sans
|
|
noto-fonts-emoji
|
|
nerd-fonts.jetbrains-mono
|
|
];
|
|
|
|
programs.nix-ld.enable = true;
|
|
programs.nix-ld.libraries = with pkgs; [
|
|
stdenv.cc.cc.lib
|
|
zlib
|
|
fuse3
|
|
icu
|
|
nss
|
|
openssl
|
|
curl
|
|
expat
|
|
];
|
|
|
|
environment.variables.EDITOR = "nano";
|
|
}
|