summaryrefslogtreecommitdiff
path: root/hosts
diff options
context:
space:
mode:
authorTim Keller <tjk@tjkeller.xyz>2025-08-26 21:36:16 -0500
committerTim Keller <tjk@tjkeller.xyz>2025-08-26 21:36:16 -0500
commitc3c3d6f1fd19a5da015c9a9d3ae5c54f2d177be0 (patch)
tree559a0d9385df907f471b9bdd2bf708ec4650c718 /hosts
parent125313aabedb17516d735a718968bfad1289f12b (diff)
downloadnixos-master.tar.xz
nixos-master.zip
reogranize files more only working on optiplex for now prepare for home manager refactoringHEADmaster
Diffstat (limited to 'hosts')
-rw-r--r--hosts/T495/configuration.nix64
-rw-r--r--hosts/T495/hardware-configuration.nix49
-rw-r--r--hosts/T495/home.nix19
-rw-r--r--hosts/T495/resources/input-leap/input-leap.conf12
-rw-r--r--hosts/T495/resources/secrets/wg0.yaml21
-rw-r--r--hosts/T495/wg.nix7
-rw-r--r--hosts/X230/configuration.nix30
-rw-r--r--hosts/X230/hardware-configuration.nix48
-rw-r--r--hosts/X230/home.nix18
-rw-r--r--hosts/flex-wg-router/configuration.nix17
-rw-r--r--hosts/flex-wg-router/hardware-configuration.nix45
-rw-r--r--hosts/flex-wg-router/home.nix7
-rw-r--r--hosts/hp-envy-office/configuration.nix52
-rw-r--r--hosts/hp-envy-office/hardware-configuration.nix48
-rw-r--r--hosts/hp-envy-office/home.nix12
-rw-r--r--hosts/libreX60/bios-flashing.nix8
-rw-r--r--hosts/libreX60/configuration.nix25
-rw-r--r--hosts/libreX60/hardware-configuration.nix46
-rw-r--r--hosts/libreX60/home.nix18
-rw-r--r--hosts/libreX60/powertop-auto-tune.nix17
-rw-r--r--hosts/optiplex/configuration.nix73
-rw-r--r--hosts/optiplex/hardware-configuration.nix45
-rw-r--r--hosts/optiplex/home.nix7
-rw-r--r--hosts/poweredge/configuration.nix19
24 files changed, 707 insertions, 0 deletions
diff --git a/hosts/T495/configuration.nix b/hosts/T495/configuration.nix
new file mode 100644
index 0000000..171f746
--- /dev/null
+++ b/hosts/T495/configuration.nix
@@ -0,0 +1,64 @@
+{ config, lib, pkgs, ... }: {
+ imports = [
+ ./hardware-configuration.nix
+ ./wg.nix
+ ../../nixos/archetypes/tjkeller
+ ];
+
+ # Setup bootloader
+ boot._loader.enable = true;
+
+ # Enable common options
+ _archetypes = {
+ # Use desktop profile
+ profiles.desktop.enable = true;
+ # Install software
+ collections = {
+ desktop = {
+ extraUtilities.enable = true;
+ cad.enable = true;
+ chromium.enable = true;
+ crypto.enable = true;
+ graphics.enable = true;
+ office.enable = true;
+ };
+ development = {
+ android.enable = true;
+ c.enable = true;
+ docker.enable = true;
+ lua.enable = true;
+ web = {
+ hugo = {
+ enable = true;
+ openFirewall = true;
+ };
+ node.enable = true;
+ };
+ };
+ bluetooth.enable = true;
+ };
+ # Setup user
+ users.primary = {
+ enable = true;
+ autologin.enable = true;
+ };
+ # Enable network drives
+ tjkeller = {
+ nas = {
+ enable = true;
+ office.enable = true;
+ };
+ };
+ };
+
+ # Install spotify
+ nixpkgs.config.allowUnfree = true;
+ environment.systemPackages = with pkgs; [
+ spotify
+ ];
+
+ # Use amdgpu driver for x11
+ services.xserver.videoDrivers = [ "amdgpu" ];
+
+ system.stateVersion = "24.05";
+}
diff --git a/hosts/T495/hardware-configuration.nix b/hosts/T495/hardware-configuration.nix
new file mode 100644
index 0000000..6258a83
--- /dev/null
+++ b/hosts/T495/hardware-configuration.nix
@@ -0,0 +1,49 @@
+# 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 = [ "nvme" "ehci_pci" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-amd" ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/4256823f-107b-41a9-851d-6bd9939f1f4b";
+ fsType = "btrfs";
+ options = [ "subvol=@" ];
+ };
+
+ boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/f20115a9-0a0e-43d2-9cee-c705b2de43b9";
+
+ fileSystems."/home" =
+ { device = "/dev/disk/by-uuid/4256823f-107b-41a9-851d-6bd9939f1f4b";
+ fsType = "btrfs";
+ options = [ "subvol=@home" ];
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/9441-53B1";
+ 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.enp3s0f0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/hosts/T495/home.nix b/hosts/T495/home.nix
new file mode 100644
index 0000000..f233c08
--- /dev/null
+++ b/hosts/T495/home.nix
@@ -0,0 +1,19 @@
+{ ... }: {
+ imports = [ ../../home ];
+
+ theme = {
+ mint.theme.color = "Dark-Purple";
+ mint.icons.color = "Purple";
+ st = {
+ enable = true;
+ font = "TamzenForPowerline:pixelsize=20";
+ };
+ };
+ wallpapers.enable = true;
+
+ home.file.input-leap-config = {
+ source = ./resources/input-leap;
+ recursive = true;
+ target = "./.config/input-leap";
+ };
+}
diff --git a/hosts/T495/resources/input-leap/input-leap.conf b/hosts/T495/resources/input-leap/input-leap.conf
new file mode 100644
index 0000000..c2d5176
--- /dev/null
+++ b/hosts/T495/resources/input-leap/input-leap.conf
@@ -0,0 +1,12 @@
+section: screens
+ T495:
+ optiplex:
+end
+
+section: links
+ T495:
+ up = optiplex
+
+ optiplex:
+ down = T495
+end
diff --git a/hosts/T495/resources/secrets/wg0.yaml b/hosts/T495/resources/secrets/wg0.yaml
new file mode 100644
index 0000000..6df5ff6
--- /dev/null
+++ b/hosts/T495/resources/secrets/wg0.yaml
@@ -0,0 +1,21 @@
+wg0: ENC[AES256_GCM,data:Zxw98YrH2QYyU8u4sk0geOUQXfOZK9scGPECbKruehcDffJlRspmsS2k3sSahdAIcJjIjauGmZ7usXus2wKAiRnYsl2e4P/0IUVp8L8UJp52iPZVEvT9JRELPYQ9gBBNmp/HDYglxP7uHx2bzcCTvCr4fFdQZgsUSl/pd6pBtSMwupsK5U9Xfz9Sh7JNTlpgpU4jlkl676XnrCo0HyL7rXMp4S6Ruhfve8gwJYP8QLn4DiwnP69Flc54MDQRKSvlvYca8dZIrS1N3h9k6aO1eB/z4I3qPN0/p7yT9pdfemaDpEqf1+byRKGYuED1Ge8P3D0+qRWJBd5GmoSHC8NV9KVV3DrAJ/QLOLCqm8oN0UGxQW5lbWi6lIQ708kodEDOsBREexRPOzjYAjajBr6O6wCtRThgce4yOg9ZwqxVDERqIz1fR034b56LrZtKjOSlJtmkmMCuCGrVkKj4L7JvBfKtCjBN+TOyONsClY/Vhd+XzNWWk8d8FVraOE2rJN4+ss7UL+jBth3DfSbr739cEQDhHRKoMPvXy0FhPVw=,iv:CN82pOBNCtICzM0Ac9Gh+x8pUSK1Fc2v2KmM+de3A78=,tag:KuGiC+Ak550d6njSdX4muA==,type:str]
+sops:
+ kms: []
+ gcp_kms: []
+ azure_kv: []
+ hc_vault: []
+ age:
+ - recipient: age1w80rc0dnuu8nw99gw64c596qqetm78jdnsqajr0u7ephykekr39qfz8vnv
+ enc: |
+ -----BEGIN AGE ENCRYPTED FILE-----
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4NEN4NGxDR1oreGVoSGhE
+ TzMxSEY0QVBhS2Z6MW15ci9aVlJ0a3IyVlZBCldPRVNvcUhJSHhWSEk3akd4RjN0
+ ajhUV2d1ZWRsRFU4cTE2dGl6RmM4MGsKLS0tIFhnUjl5aDJqWVB1NE15SlNzR2Iv
+ YTNydURsOUMrSXZGdk9UOUdUQlA0SFUKxEDJRR6tpYva9qpWo9NxwCxk/xpRVoTl
+ YJkmDZzMcXikXXiro96AprP9dXJXvMPKYPGl2Zsal8PlGFPBoHW2GA==
+ -----END AGE ENCRYPTED FILE-----
+ lastmodified: "2025-01-05T18:21:12Z"
+ mac: ENC[AES256_GCM,data:VEtpQLHMoQK7Qg4PT2DkNNMurjRE0ZadyiQ0uYsPJ0K2lS0gD8pPwb8btiq7KXXOGWWZOMYRDaRKOENy44f/k+16GOpO6jaKAfN6eEcidaWlP7zvpeNzt7LImFqn/Sjv4rq1+DmvGxyyNjuK8BwvvAfnZwG6KXbn7Bh6xgfTnLs=,iv:Jf4f5j6BTkDBmah3izIESsAn7wDMUFU6NbsqpFIdui4=,tag:yNg374unwHaDEK43+Y0eWg==,type:str]
+ pgp: []
+ unencrypted_suffix: _unencrypted
+ version: 3.9.2
diff --git a/hosts/T495/wg.nix b/hosts/T495/wg.nix
new file mode 100644
index 0000000..3881b63
--- /dev/null
+++ b/hosts/T495/wg.nix
@@ -0,0 +1,7 @@
+{ config, pkgs, inputs, ... }: {
+ sops.secrets.wg0.sopsFile = ./resources/secrets/wg0.yaml;
+
+ networking.wg-quick.interfaces = {
+ wg0.configFile = config.sops.secrets.wg0.path;
+ };
+}
diff --git a/hosts/X230/configuration.nix b/hosts/X230/configuration.nix
new file mode 100644
index 0000000..accbb1c
--- /dev/null
+++ b/hosts/X230/configuration.nix
@@ -0,0 +1,30 @@
+{ config, lib, pkgs, ... }: {
+ imports = [
+ ./hardware-configuration.nix
+ ../../nixos/archetypes/tjkeller
+ ];
+
+ # Setup bootloader
+ boot._loader.enable = true;
+
+ # Enable common options
+ _archetypes = {
+ # Use desktop profile
+ profiles.desktop.enable = true;
+ # Install software
+ collections = {
+ desktop = {
+ crypto.enable = true;
+ graphics.enable = true;
+ office.enable = true;
+ };
+ };
+ # Setup user
+ users.primary = {
+ enable = true;
+ autologin.enable = true;
+ };
+ };
+
+ system.stateVersion = "24.05";
+}
diff --git a/hosts/X230/hardware-configuration.nix b/hosts/X230/hardware-configuration.nix
new file mode 100644
index 0000000..0791585
--- /dev/null
+++ b/hosts/X230/hardware-configuration.nix
@@ -0,0 +1,48 @@
+# 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" "ehci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-intel" ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/41036740-73bc-4004-a302-01233b4d83b8";
+ fsType = "btrfs";
+ options = [ "subvol=@" ];
+ };
+
+ boot.initrd.luks.devices."enc".device = "/dev/disk/by-uuid/6019772f-4a1c-4abd-9c70-b1d71cc2de65";
+
+ fileSystems."/home" =
+ { device = "/dev/disk/by-uuid/41036740-73bc-4004-a302-01233b4d83b8";
+ fsType = "btrfs";
+ options = [ "subvol=@home" ];
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/72D4-F66A";
+ 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.enp0s25.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/hosts/X230/home.nix b/hosts/X230/home.nix
new file mode 100644
index 0000000..03b559d
--- /dev/null
+++ b/hosts/X230/home.nix
@@ -0,0 +1,18 @@
+{ ... }: {
+ imports = [ ../../home ];
+
+ theme = {
+ mint.theme.color = "Dark-Teal";
+ mint.icons.color = "Teal";
+ font = {
+ monospace = "TamzenForPowerline";
+ gtk.name = "monospace";
+ gtk.size = 8;
+ };
+ cursor.size = 24;
+ st = {
+ enable = true;
+ font = "TamzenForPowerline:pixelsize=14";
+ };
+ };
+}
diff --git a/hosts/flex-wg-router/configuration.nix b/hosts/flex-wg-router/configuration.nix
new file mode 100644
index 0000000..f21046d
--- /dev/null
+++ b/hosts/flex-wg-router/configuration.nix
@@ -0,0 +1,17 @@
+{ config, lib, pkgs, ... }: {
+ imports = [
+ ./hardware-configuration.nix
+ ../../archetypes/headless
+ ];
+ bootloader.mode = "efi";
+
+ # Enable docker
+ software.development = {
+ docker.enable = true;
+ };
+
+ # Enable set root password
+ users.setPassword.enable = true;
+
+ system.stateVersion = "25.05";
+}
diff --git a/hosts/flex-wg-router/hardware-configuration.nix b/hosts/flex-wg-router/hardware-configuration.nix
new file mode 100644
index 0000000..01cff6d
--- /dev/null
+++ b/hosts/flex-wg-router/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" "usb_storage" "usbhid" "sd_mod" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-intel" ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/01eae5fd-a46e-4a36-8a9d-247a0b16bcef";
+ fsType = "btrfs";
+ options = [ "subvol=@" ];
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/345A-436A";
+ fsType = "vfat";
+ options = [ "fmask=0022" "dmask=0022" ];
+ };
+
+ fileSystems."/home" =
+ { device = "/dev/disk/by-uuid/01eae5fd-a46e-4a36-8a9d-247a0b16bcef";
+ fsType = "btrfs";
+ options = [ "subvol=@home" ];
+ };
+
+ 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.enp3s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/hosts/flex-wg-router/home.nix b/hosts/flex-wg-router/home.nix
new file mode 100644
index 0000000..21d548f
--- /dev/null
+++ b/hosts/flex-wg-router/home.nix
@@ -0,0 +1,7 @@
+{ ... }: {
+ imports = [ ../../home ];
+
+ theme.enable = false;
+ programs.firefox.enable = false;
+ gtk.enable = false;
+}
diff --git a/hosts/hp-envy-office/configuration.nix b/hosts/hp-envy-office/configuration.nix
new file mode 100644
index 0000000..60be56d
--- /dev/null
+++ b/hosts/hp-envy-office/configuration.nix
@@ -0,0 +1,52 @@
+{ config, lib, pkgs, ... }: {
+ imports = [
+ ./hardware-configuration.nix
+ ../../nixos/archetypes/tjkeller
+ ];
+
+ # Setup bootloader
+ boot._loader.enable = true;
+ boot.loader.timeout = 15; # Show for longer since it's usually skipped
+
+ # Enable common options
+ _archetypes = {
+ # Use desktop profile
+ profiles.desktop.enable = true;
+ # Install software
+ collections = {
+ desktop = {
+ extraUtilities.enable = true;
+ chromium.enable = true;
+ graphics.enable = true;
+ office.enable = true;
+ };
+ development = {
+ docker.enable = true;
+ web = {
+ node.enable = true;
+ };
+ };
+ virtualization.enable = true;
+ bluetooth.enable = true;
+ };
+ # Setup user
+ users.primary = {
+ enable = true;
+ };
+ tjkeller = {
+ nas = {
+ enable = true;
+ office.enable = true;
+ office.automount = true;
+ };
+ };
+ };
+
+ # Disable suspend
+ systemd._suspend.disable = true;
+
+ # Use amdgpu driver for x11
+ services.xserver.videoDrivers = [ "amdgpu" ];
+
+ system.stateVersion = "24.11";
+}
diff --git a/hosts/hp-envy-office/hardware-configuration.nix b/hosts/hp-envy-office/hardware-configuration.nix
new file mode 100644
index 0000000..22a8c24
--- /dev/null
+++ b/hosts/hp-envy-office/hardware-configuration.nix
@@ -0,0 +1,48 @@
+# 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" "ums_realtek" "usb_storage" "usbhid" "sd_mod" "sr_mod" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/5749d84b-690b-43a2-b834-f94675003189";
+ fsType = "btrfs";
+ options = [ "subvol=@" ];
+ };
+
+ boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/4a617e54-4800-4474-b1fd-3bca5f66e55a";
+
+ fileSystems."/home" =
+ { device = "/dev/disk/by-uuid/5749d84b-690b-43a2-b834-f94675003189";
+ fsType = "btrfs";
+ options = [ "subvol=@home" ];
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/5E93-7CE3";
+ 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.enp3s0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/hosts/hp-envy-office/home.nix b/hosts/hp-envy-office/home.nix
new file mode 100644
index 0000000..2e4f61f
--- /dev/null
+++ b/hosts/hp-envy-office/home.nix
@@ -0,0 +1,12 @@
+{ userDetails, ... }: {
+ imports = [ ../../home ];
+
+ theme.mint.theme.color = "Dark-Green";
+ theme.mint.icons.color = "Green";
+ wallpapers.enable = true;
+
+ additional-gtk-bookmarks = with userDetails.userDirs; [
+ "file://${documents}/src/sites/admin Admin"
+ "file:///media/chexx/chexx cHEXx"
+ ];
+}
diff --git a/hosts/libreX60/bios-flashing.nix b/hosts/libreX60/bios-flashing.nix
new file mode 100644
index 0000000..6117813
--- /dev/null
+++ b/hosts/libreX60/bios-flashing.nix
@@ -0,0 +1,8 @@
+# https://libreboot.org/docs/install/#thinkpad-t60x60x60tabletx60s
+
+{ pkgs, ... }: {
+ environment.systemPackages = [ pkgs.flashprog ];
+
+ boot.kernelParams = [ "iomem=relaxed" ];
+}
+
diff --git a/hosts/libreX60/configuration.nix b/hosts/libreX60/configuration.nix
new file mode 100644
index 0000000..9c83a42
--- /dev/null
+++ b/hosts/libreX60/configuration.nix
@@ -0,0 +1,25 @@
+{ config, lib, pkgs, ... }: {
+ imports = [
+ ./hardware-configuration.nix
+ ./powertop-auto-tune.nix
+ ../../nixos/archetypes/tjkeller
+ # Uncomment this module and reboot to enable bios flashing
+ #./bios-flashing.nix
+ ];
+
+ # Use grub
+ boot._loader = {
+ enable = true;
+ loader = "grub";
+ mode = "bios";
+ grub.biosDevice = "/dev/sda";
+ };
+
+ # Use libre kernel
+ boot.kernelPackages = pkgs.linuxPackages-libre;
+
+ # i915 Gpu requires intel driver
+ services.xserver.videoDrivers = [ "intel" ];
+
+ system.stateVersion = "24.11";
+}
diff --git a/hosts/libreX60/hardware-configuration.nix b/hosts/libreX60/hardware-configuration.nix
new file mode 100644
index 0000000..b0a7868
--- /dev/null
+++ b/hosts/libreX60/hardware-configuration.nix
@@ -0,0 +1,46 @@
+# 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 = [ "uhci_hcd" "ehci_pci" "ata_piix" "ahci" "firewire_ohci" "usb_storage" "sd_mod" "sdhci_pci" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-intel" ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/91572803-436d-4f43-b41f-dfba2103752e";
+ fsType = "btrfs";
+ options = [ "subvol=@" ];
+ };
+
+ fileSystems."/home" =
+ { device = "/dev/disk/by-uuid/91572803-436d-4f43-b41f-dfba2103752e";
+ fsType = "btrfs";
+ options = [ "subvol=@home" ];
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/F618-D6C2";
+ 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.enp1s0.useDHCP = lib.mkDefault true;
+ networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/hosts/libreX60/home.nix b/hosts/libreX60/home.nix
new file mode 100644
index 0000000..f5957d6
--- /dev/null
+++ b/hosts/libreX60/home.nix
@@ -0,0 +1,18 @@
+{ ... }: {
+ imports = [ ../../home ];
+
+ theme = {
+ mint.theme.color = "Dark-Red";
+ mint.icons.color = "Red";
+ font = {
+ monospace = "TamzenForPowerline";
+ gtk.name = "monospace";
+ gtk.size = 8;
+ };
+ cursor.size = 24;
+ st = {
+ enable = true;
+ font = "TamzenForPowerline:pixelsize=14";
+ };
+ };
+}
diff --git a/hosts/libreX60/powertop-auto-tune.nix b/hosts/libreX60/powertop-auto-tune.nix
new file mode 100644
index 0000000..0eb9578
--- /dev/null
+++ b/hosts/libreX60/powertop-auto-tune.nix
@@ -0,0 +1,17 @@
+# https://en.wikibooks.org/wiki/Libreboot/ThinkPad_X60#Remove_High_Pitched_Whining_Noise
+# TLDR; running `powertop --auto-tune` is supposed to kill the high pitched noises produced by the X60
+
+{ pkgs, ... }: {
+ environment.systemPackages = [ pkgs.powertop ];
+
+ # Create systemd service
+ systemd.services.powertop-autotune = {
+ description = "Powertop Auto-Tune";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ serviceConfig = {
+ Type = "oneshot";
+ ExecStart = "${pkgs.powertop}/bin/powertop --auto-tune";
+ };
+ };
+}
diff --git a/hosts/optiplex/configuration.nix b/hosts/optiplex/configuration.nix
new file mode 100644
index 0000000..8a06294
--- /dev/null
+++ b/hosts/optiplex/configuration.nix
@@ -0,0 +1,73 @@
+{ config, lib, pkgs, ... }: {
+ imports = [
+ ./hardware-configuration.nix
+ ../../archetypes/tjkeller
+ ];
+
+ # Setup bootloader
+ boot._loader.enable = true;
+
+ # Enable common options
+ _archetypes = {
+ # Use desktop profile
+ profiles.desktop.enable = true;
+ # Install software
+ collections = {
+ desktop = {
+ extraUtilities.enable = true;
+ cad.enable = true;
+ chromium.enable = true;
+ crypto.enable = true;
+ graphics.enable = true;
+ office.enable = true;
+ };
+ development = {
+ android.enable = true;
+ c.enable = true;
+ docker.enable = true;
+ lua.enable = true;
+ web = {
+ hugo = {
+ enable = true;
+ openFirewall = true;
+ };
+ node.enable = true;
+ };
+ };
+ };
+ # Setup user
+ users.primary = {
+ enable = true;
+ autologin.enable = true;
+ };
+ tjkeller = {
+ nas.enable = true;
+ };
+ };
+
+ # Disable suspend
+ systemd._suspend.disable = true;
+
+ # Allow unfree for nvidia + others
+ nixpkgs.config.allowUnfree = true;
+
+ # Install more software
+ environment.systemPackages = with pkgs; [
+ prismlauncher
+ spotify
+ #vintagestory
+ ];
+
+ # 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
+ forceFullCompositionPipeline = true; # Enables vsync
+ };
+
+ system.stateVersion = "24.11";
+}
diff --git a/hosts/optiplex/hardware-configuration.nix b/hosts/optiplex/hardware-configuration.nix
new file mode 100644
index 0000000..3d9651e
--- /dev/null
+++ b/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/hosts/optiplex/home.nix b/hosts/optiplex/home.nix
new file mode 100644
index 0000000..d293ae0
--- /dev/null
+++ b/hosts/optiplex/home.nix
@@ -0,0 +1,7 @@
+{ ... }: {
+ imports = [ ../../home-manager ];
+
+ theme.mint.theme.color = "Dark-Green";
+ theme.mint.icons.color = "Green";
+ wallpapers.enable = true;
+}
diff --git a/hosts/poweredge/configuration.nix b/hosts/poweredge/configuration.nix
new file mode 100644
index 0000000..08e392d
--- /dev/null
+++ b/hosts/poweredge/configuration.nix
@@ -0,0 +1,19 @@
+{ config, lib, pkgs, ... }: {
+ imports = [ ./hardware-configuration.nix ];
+
+ # ZFS bootloader
+ bootloader.loader = "grub";
+ bootloader.mode = "efi";
+ boot.loader.grub = {
+ zfsSupport = true;
+ efiInstallAsRemovable = true;
+ mirroredBoots = [
+ { devices = [ "nodev" ]; path = "/boot"; }
+ ];
+ };
+
+ # Disable suspend
+ suspend.enable = false;
+
+ system.stateVersion = "25.05";
+}