From 1ef7aa8333c0851d0ca5ae556b5f1d12fad87b08 Mon Sep 17 00:00:00 2001
From: Tim Keller <tjkeller.xyz>
Date: Wed, 5 Feb 2025 21:18:11 -0600
Subject: add optiplex as new host

---
 modules/hosts/optiplex/configuration.nix          | 50 +++++++++++++++++++++++
 modules/hosts/optiplex/hardware-configuration.nix | 45 ++++++++++++++++++++
 modules/hosts/optiplex/home.nix                   |  7 ++++
 3 files changed, 102 insertions(+)
 create mode 100644 modules/hosts/optiplex/configuration.nix
 create mode 100644 modules/hosts/optiplex/hardware-configuration.nix
 create mode 100644 modules/hosts/optiplex/home.nix

(limited to 'modules/hosts')

diff --git a/modules/hosts/optiplex/configuration.nix b/modules/hosts/optiplex/configuration.nix
new file mode 100644
index 0000000..cbde612
--- /dev/null
+++ b/modules/hosts/optiplex/configuration.nix
@@ -0,0 +1,50 @@
+{ config, lib, pkgs, ... }: {
+	imports = [
+		./hardware-configuration.nix
+	];
+	networking.hostName = "optiplex";
+
+	bootloader.mode = "efi";
+
+	# Allow unfree for nvidia + others
+	nixpkgs.config.allowUnfree = true;
+
+	# Enable extra software pkgs
+	software.desktop = {
+		chromium.enable = true;
+		cad.enable = true;
+		crypto.enable = true;
+		graphics.enable = true;
+		office.enable = true;
+		utilities.enable = true;
+	};
+
+	# Install more programs
+	environment.systemPackages = with pkgs; [
+		prismlauncher
+		spotify
+		#vintagestory
+	];
+
+	# Enable network drives
+	nas.enable = true;
+
+	# Disable wifi
+	wifi.enable = false;
+
+	networking.hosts = {
+		"192.168.77.3"  = [ "devel" ];
+	};
+
+	# Use nvidia driver
+	services.xserver.videoDrivers = [ "nvidia" ];
+	hardware.nvidia = {
+		modesetting.enable = true;  # Required
+		powerManagement.enable = false;  # Can cause bugs
+		nvidiaSettings = true;
+		open = false;  # Not compatible w/ GTX-1050
+		package = config.boot.kernelPackages.nvidiaPackages.stable;  # Still good for 1050
+	};
+
+	system.stateVersion = "24.11";
+}
diff --git a/modules/hosts/optiplex/hardware-configuration.nix b/modules/hosts/optiplex/hardware-configuration.nix
new file mode 100644
index 0000000..3d9651e
--- /dev/null
+++ b/modules/hosts/optiplex/hardware-configuration.nix
@@ -0,0 +1,45 @@
+# Do not modify this file!  It was generated by ‘nixos-generate-config’
+# and may be overwritten by future invocations.  Please make changes
+# to /etc/nixos/configuration.nix instead.
+{ config, lib, pkgs, modulesPath, ... }:
+
+{
+  imports =
+    [ (modulesPath + "/installer/scan/not-detected.nix")
+    ];
+
+  boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "firewire_ohci" "usbhid" "usb_storage" "sd_mod" "sr_mod" ];
+  boot.initrd.kernelModules = [ ];
+  boot.kernelModules = [ "kvm-intel" ];
+  boot.extraModulePackages = [ ];
+
+  fileSystems."/" =
+    { device = "/dev/disk/by-uuid/a9d54117-31f6-4cad-b1b2-250f6bfd7808";
+      fsType = "btrfs";
+      options = [ "subvol=@" ];
+    };
+
+  fileSystems."/home" =
+    { device = "/dev/disk/by-uuid/a9d54117-31f6-4cad-b1b2-250f6bfd7808";
+      fsType = "btrfs";
+      options = [ "subvol=@home" ];
+    };
+
+  fileSystems."/boot" =
+    { device = "/dev/disk/by-uuid/6987-81B6";
+      fsType = "vfat";
+      options = [ "fmask=0022" "dmask=0022" ];
+    };
+
+  swapDevices = [ ];
+
+  # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+  # (the default) this is the recommended approach. When using systemd-networkd it's
+  # still possible to use this option, but it's recommended to use it in conjunction
+  # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+  networking.useDHCP = lib.mkDefault true;
+  # networking.interfaces.eno1.useDHCP = lib.mkDefault true;
+
+  nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/modules/hosts/optiplex/home.nix b/modules/hosts/optiplex/home.nix
new file mode 100644
index 0000000..ee56dc6
--- /dev/null
+++ b/modules/hosts/optiplex/home.nix
@@ -0,0 +1,7 @@
+{ ... }: {
+	imports = [ ../../home ];
+
+	theme.mint.theme.color = "Dark-Green";
+	theme.mint.icons.color = "Green";
+	wallpapers.enable = true;
+}
-- 
cgit v1.2.3