From 9f4a0edd8eeedb93fcd27bed3532625629b57893 Mon Sep 17 00:00:00 2001 From: Sam Rolfe Date: Wed, 28 Jan 2026 13:09:10 +1100 Subject: [PATCH] Initial commit of NixOS configuration --- configuration.nix | 125 ++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 17 +++++++ 2 files changed, 142 insertions(+) create mode 100644 configuration.nix create mode 100644 flake.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..751d1b2 --- /dev/null +++ b/configuration.nix @@ -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. + +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..e294757 --- /dev/null +++ b/flake.nix @@ -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 + ]; + }; + }; +}