From 2828d7a210a8a0a2c6a6484d8e2fbed8f53e669f Mon Sep 17 00:00:00 2001 From: Jimbo Date: Fri, 18 Oct 2024 16:26:44 -0400 Subject: [PATCH] Add a new theme and tamper with some files --- hosts/firefly/system/boot/default.nix | 50 +++++++++++++ hosts/firefly/system/default.nix | 1 + hosts/firefly/system/hardware/default.nix | 66 +++--------------- hosts/lacros/home/default.nix | 2 +- hosts/lacros/system/hardware/default.nix | 66 ++++++++---------- modules/home/default.nix | 3 +- .../files/assets/wallpapers/hillorange/1.png | Bin 0 -> 1065324 bytes .../files/assets/wallpapers/hillorange/2.png | Bin 0 -> 415284 bytes .../files/assets/wallpapers/hillorange/3.png | Bin 0 -> 481333 bytes .../home/programs/misc/headless/default.nix | 1 - .../system/accounts/users/jimbo/default.nix | 7 +- modules/system/default.nix | 1 - .../devices/boot/lanzaboote/default.nix | 6 +- .../system/devices/boot/systemd/default.nix | 1 - variables/look/colors/orange/default.nix | 22 ++++++ variables/look/colors/red/default.nix | 2 +- 16 files changed, 124 insertions(+), 104 deletions(-) create mode 100644 hosts/firefly/system/boot/default.nix create mode 100644 modules/home/files/assets/wallpapers/hillorange/1.png create mode 100644 modules/home/files/assets/wallpapers/hillorange/2.png create mode 100644 modules/home/files/assets/wallpapers/hillorange/3.png create mode 100644 variables/look/colors/orange/default.nix diff --git a/hosts/firefly/system/boot/default.nix b/hosts/firefly/system/boot/default.nix new file mode 100644 index 00000000..86a44dcb --- /dev/null +++ b/hosts/firefly/system/boot/default.nix @@ -0,0 +1,50 @@ +{ pkgs, ... }: +let + commonKernelParams = [ + # Nvidia settings + "nvidia_drm.fbdev=1" + "nouveau.config=NvGspRm=1" + + # VM/GPU passthrough + "amd_iommu=on" + "iommu=pt" + "nested=1" + + # Virtualization nonsense + "transparent_hugepage=never" + + # Isolate devices into IOMMU groups + "pcie_acs_override=downstream,multifunction" + "pci=routeirq" + ]; +in { + boot = { + kernelPackages = pkgs.unstable.linuxPackages_zen; + blacklistedKernelModules = [ + "pcspkr" + ]; + kernel.sysctl."vm.max_map_count" = 2147483642; + kernelParams = commonKernelParams ++ [ + "vfio-pci.ids=10de:1f82,10de:10fa" + ]; + + # Encryption and TPM + initrd = { + systemd.enable = true; + luks.devices = { + "crypt-ssd" = { + device = "/dev/disk/by-uuid/52110c74-19b6-40ef-9710-e6c9b157005f"; + preLVM = true; + allowDiscards = true; + }; + }; + }; + }; + + # Additional entry to boot from the second GPU + specialisation = { + gputwo.configuration = { + boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ]; + }; + }; +} diff --git a/hosts/firefly/system/default.nix b/hosts/firefly/system/default.nix index 652005e3..2d5c458d 100644 --- a/hosts/firefly/system/default.nix +++ b/hosts/firefly/system/default.nix @@ -2,6 +2,7 @@ { imports = [ ./hardware + ./boot # Apps and programs ../../../modules/system diff --git a/hosts/firefly/system/hardware/default.nix b/hosts/firefly/system/hardware/default.nix index 2790d82e..2edf6665 100644 --- a/hosts/firefly/system/hardware/default.nix +++ b/hosts/firefly/system/hardware/default.nix @@ -1,70 +1,26 @@ -{ config, lib, pkgs, modulesPath, ... }: -let - # Set common boot paramaters - commonKernelParams = [ - # Nvidia settings - "nvidia_drm.fbdev=1" - "nouveau.config=NvGspRm=1" - - # VM/GPU passthrough - "amd_iommu=on" - "iommu=pt" - "nested=1" - - # Virtualization nonsense - "transparent_hugepage=never" - - # Isolate devices into IOMMU groups - "pcie_acs_override=downstream,multifunction" - "pci=routeirq" - ]; -in { +{ config, lib, modulesPath, ... }: +{ imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; boot = { - kernelPackages = pkgs.unstable.linuxPackages_zen; - blacklistedKernelModules = [ - "pcspkr" - ]; - kernel.sysctl."vm.max_map_count" = 2147483642; - kernelParams = commonKernelParams ++ [ - "vfio-pci.ids=10de:1f82,10de:10fa" - ]; initrd = { availableKernelModules = [ "nvme" - "xhci_pci" - "ahci" - "usbhid" - "usb_storage" - "sd_mod" + "xhci_pci" + "ahci" + "usbhid" + "usb_storage" + "sd_mod" ]; kernelModules = [ - "dm-snapshot" + "dm-snapshot" "vfio" - "vfio_pci" - "vfio_iommu_type1" - "kvm-amd" + "vfio_pci" + "vfio_iommu_type1" + "kvm-amd" ]; - - # Encryption and TPM - systemd.enable = true; - luks.devices = { - "crypt-ssd" = { - device = "/dev/disk/by-uuid/52110c74-19b6-40ef-9710-e6c9b157005f"; - preLVM = true; - allowDiscards = true; - }; - }; - }; - }; - - # Additional entry to boot from the second GPU - specialisation = { - gputwo.configuration = { - boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ]; }; }; diff --git a/hosts/lacros/home/default.nix b/hosts/lacros/home/default.nix index 75cd42ea..b51a8c87 100644 --- a/hosts/lacros/home/default.nix +++ b/hosts/lacros/home/default.nix @@ -14,7 +14,7 @@ # Misc ../../../overlays ../../../variables - ../../../variables/look/colors/purple + ../../../variables/look/colors/orange # Imports nur.nixosModules.nur diff --git a/hosts/lacros/system/hardware/default.nix b/hosts/lacros/system/hardware/default.nix index 8b8c8891..3e40098a 100644 --- a/hosts/lacros/system/hardware/default.nix +++ b/hosts/lacros/system/hardware/default.nix @@ -1,66 +1,56 @@ -# 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, ... }: +{ config, lib, modulesPath, ... }: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "sdhci_pci" ]; - boot.initrd.kernelModules = [ "dm-snapshot" ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot = { + initrd = { + availableKernelModules = [ "xhci_pci" "sdhci_pci" ]; + kernelModules = [ "dm-snapshot" ]; + }; + kernelModules = [ "kvm-intel" ]; + }; - fileSystems."/" = - { device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; + fileSystems = { + "/" = { + device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; fsType = "btrfs"; options = [ "subvol=@" ]; }; - - fileSystems."/nix" = - { device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; + "/nix" = { + device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; fsType = "btrfs"; options = [ "subvol=@nix" ]; }; - - fileSystems."/var" = - { device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; + "/var" = { + device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; fsType = "btrfs"; options = [ "subvol=@var" ]; }; - - fileSystems."/.snapshots" = - { device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; + "/.snapshots" = { + device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; fsType = "btrfs"; options = [ "subvol=@snapshots" ]; }; - - fileSystems."/home" = - { device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; + "/home" = { + device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; fsType = "btrfs"; options = [ "subvol=@home" ]; }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/1C76-1006"; + "/boot" = { + device = "/dev/disk/by-uuid/1C76-1006"; fsType = "vfat"; options = [ "fmask=0022" "dmask=0022" ]; }; + }; - swapDevices = - [ { device = "/dev/disk/by-uuid/54a9cc22-4a2c-4e04-a968-313c34481489"; } - ]; + swapDevices = [ + { device = "/dev/disk/by-uuid/54a9cc22-4a2c-4e04-a968-313c34481489"; } + ]; - # 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..useDHCP`. networking.useDHCP = lib.mkDefault true; - # networking.interfaces.wg0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlan0.useDHCP = lib.mkDefault true; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/modules/home/default.nix b/modules/home/default.nix index 9216df2a..1feed841 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -1,7 +1,6 @@ { ... }: { + programs.home-manager.enable = true; nixpkgs.config.allowUnfree = true; - - # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion home.stateVersion = "24.05"; } diff --git a/modules/home/files/assets/wallpapers/hillorange/1.png b/modules/home/files/assets/wallpapers/hillorange/1.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed3607a2bf3335051efba4b1d7d9eb7567f82bd GIT binary patch literal 1065324 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