From 490bf5bc869d0b71d911652710c97fa0df2eb620 Mon Sep 17 00:00:00 2001 From: Steven Date: Sat, 25 Mar 2023 20:21:03 -0400 Subject: [PATCH] added disko config --- .modules/base/framework.nix | 40 +++++++++++++++++++ .modules/disko/luks-lvm.nix | 77 +++++++++++++++++++++++++++++++++++++ flake.nix | 14 ++++++- 3 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 .modules/base/framework.nix create mode 100644 .modules/disko/luks-lvm.nix diff --git a/.modules/base/framework.nix b/.modules/base/framework.nix new file mode 100644 index 0000000..3563406 --- /dev/null +++ b/.modules/base/framework.nix @@ -0,0 +1,40 @@ +# 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" "thunderbolt" "nvme" "usb_storage" "sd_mod" ]; + kernelModules = [ "dm-snapshot" ]; + }; + kernelModules = [ "kvm-intel" ]; + kernelParams = [ "acpi_osi=linux" "module_blacklist=hid_sensor_hub" ]; + extraModulePackages = [ ]; + kernelPackages = pkgs.linuxPackages_5_18; + loader = { + efi.canTouchEfiVariables = true; + grub = { + enable = true; + version = 2; + efiSupport = true; + enableCryptodisk = true; + device = "nodev"; + }; + }; + }; + + # 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.enp0s13f0u3u2.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp166s0.useDHCP = lib.mkDefault true; + networking.hostName = "creatorforge"; + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} \ No newline at end of file diff --git a/.modules/disko/luks-lvm.nix b/.modules/disko/luks-lvm.nix new file mode 100644 index 0000000..5a755ad --- /dev/null +++ b/.modules/disko/luks-lvm.nix @@ -0,0 +1,77 @@ +{ disks ? [ "/dev/nvme0n1" ], ... }: { + disk = { + nvme0n1p1 = { + type = "disk"; + device = builtins.elemAt disks 0; + content = { + type = "table"; + format = "gpt"; + partitions = [ + { + type = "partition"; + name = "ESP"; + start = "1MiB"; + end = "100MiB"; + bootable = true; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ + "defaults" + ]; + }; + } + { + type = "partition"; + name = "luks"; + start = "100MiB"; + end = "100%"; + content = { + type = "luks"; + name = "crypted"; + extraOpenArgs = [ "--allow-discards" ]; + keyFile = "/tmp/secret.key"; + content = { + type = "lvm_pv"; + vg = "pool"; + }; + }; + } + ]; + }; + }; + }; + lvm_vg = { + pool = { + type = "lvm_vg"; + lvs = { + root = { + type = "lvm_lv"; + size = "128G"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + mountOptions = [ + "defaults" + ]; + }; + }; + home = { + type = "lvm_lv"; + size = "25G"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/home"; + }; + }; + raw = { + type = "lvm_lv"; + size = "10M"; + }; + }; + }; + }; +} diff --git a/flake.nix b/flake.nix index 8495fe1..7a01a7b 100644 --- a/flake.nix +++ b/flake.nix @@ -14,8 +14,12 @@ url = "github:nix-community/nixos-generators"; inputs.nixpkgs.follows = "nixpkgs"; }; + disko = { + url = "github:nix-community/disko"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { self, home-manager, nixos-generators, nixpkgs, ... }@inputs: + outputs = { self, home-manager, nixos-generators, disko, nixpkgs, ... }@inputs: { proxmox = nixos-generators.nixosGenerate { system = "x86_64-linux"; @@ -32,6 +36,14 @@ ./.modules/base/proxmox-vm-hardware.nix ]; }; + creatorforge-framework = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + disko.nixosModules.disko + ./hosts/creatorforge.nix + ./.modules/base/proxmox-vm-hardware.nix + ]; + }; }; homeManagerConfiguration = { speccon18 = {