Initial commit of NixOS configuration
This commit is contained in:
125
configuration.nix
Normal file
125
configuration.nix
Normal 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.
|
||||||
|
|
||||||
|
}
|
||||||
17
flake.nix
Normal file
17
flake.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
description = "NixOS configuration for sam's desktop";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, ... }@inputs: {
|
||||||
|
nixosConfigurations.nixos-desktop = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
|
modules = [
|
||||||
|
./configuration.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user