Initial commit of NixOS configuration

This commit is contained in:
2026-01-28 13:09:10 +11:00
commit 9f4a0edd8e
2 changed files with 142 additions and 0 deletions

125
configuration.nix Normal file
View File

@@ -0,0 +1,125 @@
# NixOS Configuration Template
# Path: results/configuration.nix.template
#
# This is a starting point for your new NixOS configuration.
# Review and edit this file carefully.
# You will use this file during the NixOS installation.
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
# Path to this file will be /mnt/etc/nixos/hardware-configuration.nix
# after the installation script generates it.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# --- NETWORKING ---
networking.hostName = "nixos-desktop"; # Define your hostname.
networking.networkmanager.enable = true;
# networking.wireless.enable = true; # Uncomment for WiFi support.
# Set your time zone.
time.timeZone = "Australia/Sydney"; # CHANGE THIS to your time zone, e.g. "Europe/Berlin"
# --- USER ACCOUNTS ---
users.users.sam = {
isNormalUser = true;
description = "Sam";
extraGroups = [ "networkmanager" "wheel" "docker" ]; # "wheel" allows sudo
packages = with pkgs; [
# You can install user-specific packages here, but it's often better
# to manage them system-wide below unless you have multiple users.
];
};
# --- SOFTWARE PACKAGES ---
# List packages you want to install system-wide.
# Refer to docs/02_software_migration_plan.md
environment.systemPackages = with pkgs; [
# --- Essentials ---
git
wget
curl
# --- Desktop & GUI ---
firefox
thunderbird
libreoffice
flameshot
# --- Terminal & CLI Tools ---
kitty
neovim
nushell
btop
eza
bat
fzf
# --- Development ---
gcc
gnumake
nodejs # Consider specifying a version, e.g., nodejs-20_x
rustc
cargo
python3
];
# --- SERVICES & VIRTUALIZATION ---
# Enable the Docker daemon.
virtualisation.docker.enable = true;
# Enable sound with PipeWire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment the following.
#jack.enable = true;
};
# Enable CUPS to print documents.
services.printing.enable = true;
# --- DESKTOP ENVIRONMENT ---
# Enable the GNOME Desktop Environment.
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# --- DISK MOUNTS ---
# This is where we will mount your existing data drives.
# The device paths (e.g., "/dev/disk/by-uuid/...") must be correct.
# Use the output of `lsblk -f` on the live USB to get the right UUIDs.
fileSystems."/mnt/ubuntu_storage_3TB" = {
device = "/dev/disk/by-uuid/037a542c-6aa9-4b1f-ab2f-4b6922ab371f"; # This is sdd1 (ubuntu_storage_3)
fsType = "ext4";
};
fileSystems."/mnt/windows-storage" = { # Renaming `/mnt/storage` to be clearer
device = "/dev/disk/by-uuid/063E316A3E315441"; # This is sdb2
fsType = "ntfs-3g";
options = [ "rw" "uid=1000" "gid=100" "umask=007" ]; # Makes files user-writable
};
# Add more entries here for other disks like sdc2 if needed.
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# System state version.
system.stateVersion = "24.05"; # Or whatever version you install.
}