nixos-config/common/default.nix

121 lines
2.9 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.displayManager.sddm.autoNumlock = 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";
}