From b084eda7c9727d887d84cabf9ccf15390157c5ee Mon Sep 17 00:00:00 2001 From: Hunter Haugen Date: Mon, 21 Apr 2025 12:17:19 -0700 Subject: [PATCH] add some framework stuff --- framework/framework/configuration-zfs.nix | 204 ++++++++++++++++++ framework/framework/configuration.nix | 193 +++++++++++++++++ framework/framework/disko-btrfs.nix | 97 +++++++++ framework/framework/disko-zfs.nix | 110 ++++++++++ .../hardware-configuration-tmpfs.nix | 78 +++++++ .../framework/hardware-configuration.nix | 40 ++++ .../original-hardware-configuration.nix | 63 ++++++ 7 files changed, 785 insertions(+) create mode 100644 framework/framework/configuration-zfs.nix create mode 100644 framework/framework/configuration.nix create mode 100644 framework/framework/disko-btrfs.nix create mode 100644 framework/framework/disko-zfs.nix create mode 100644 framework/framework/hardware-configuration-tmpfs.nix create mode 100644 framework/framework/hardware-configuration.nix create mode 100644 framework/framework/original-hardware-configuration.nix diff --git a/framework/framework/configuration-zfs.nix b/framework/framework/configuration-zfs.nix new file mode 100644 index 0000000..0f1d763 --- /dev/null +++ b/framework/framework/configuration-zfs.nix @@ -0,0 +1,204 @@ +# Config for framework16 +{ config, pkgs, lib, ... }: + +#... luksOpen /dev/mapper/crypt +#zpool import -f rpool +#mount -t zfs rpool/local/root /mnt +#mkdir -p /mnt/{boot,nix,home,persist,var/lib,var/log} +#mount /dev/nvme0n1p1 /mnt/boot +#mount -t zfs rpool/local/nix /mnt/nix +#mount -t zfs rpool/safe/home /mnt/home +#mount -t zfs rpool/safe/persist /mnt/persist +#mount -t zfs rpool/local/var/lib /mnt/var/lib +#mount -t zfs rpool/local/var/log /mnt/var/log +let + impermanence = builtins.fetchTarball "https://github.com/nix-community/impermanence/archive/master.tar.gz"; +in +{ + imports = + [ + ./hardware-configuration.nix + "${impermanence}/nixos.nix" + ]; + + boot = { + kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; + kernelParams = [ "nohibernate" ]; + supportedFilesystems = [ "zfs" ]; + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + zfs.requestEncryptionCredentials = false; + zfs.devNodes = "/dev/disk/by-path"; + initrd.luks.devices."crypt".device = "/dev/disk/by-uuid/9f40ebbb-b4b6-42bc-9ae3-493ee933142a"; + initrd.postResumeCommands = lib.mkAfter '' + zfs rollback -r rpool/local/root@blank + ''; + }; + + fileSystems = { + "/persist" = { + device = "rpool/safe/persist"; + fsType = "zfs"; + neededForBoot = true; # Only /persist needs to be marked as needed for boot + }; + }; + + swapDevices = [ { + device = "/dev/nvme0n1p2"; + randomEncryption.enable = true; + } ]; + + networking.hostId = "3294c9a2"; # Required for ZFS + networking.hostName = "cryochamber"; + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + environment.persistence."/persist" = { + hideMounts = true; + directories = [ + "/root" + "/etc/nixos" + "/etc/ssh" + ]; + files = [ + "/etc/machine-id" + #"/etc/nix/id_rsa" # Needed? + ]; + }; + # Files are not copied to /persist during install, so need to do so manually + #rsync -azPH /mnt/root/ /mnt/persist/root + #rsync -azPH /mnt/etc/nixos/ /mnt/persist/etc/nixos + #rsync -azPH /mnt/etc/ssh/ /mnt/persist/etc/ssh + #cp /mnt/etc/machine-id /mnt/persist/etc/machine-id + + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/Los_Angeles"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + virtualisation.docker = { + enable = true; + extraOptions = "--storage-driver=overlay2"; + }; + programs.zsh.enable = true; + services.openssh.enable = true; + services.openssh.settings.PermitRootLogin = "yes"; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + 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 this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.hunner = { + isNormalUser = true; + description = "Hunter Haugen"; + extraGroups = [ "docker" "networkmanager" "wheel" ]; + hashedPassword = "$y$j9T$hLqdzlz7dbJZgUnKs.eo3/$25s/2X18vGtDKj53qD1sn/.Omp/6CBJWbn7d9KAiOK7"; + shell = pkgs.zsh; + packages = with pkgs; [ + # thunderbird + ]; + }; + + # Enable automatic login for the user. + services.displayManager.autoLogin.enable = true; + services.displayManager.autoLogin.user = "hunner"; + + # Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229 + systemd.services."getty@tty1".enable = false; + systemd.services."autovt@tty1".enable = false; + + # Install firefox. + programs.firefox.enable = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + git + vim + wget + curl + htop + zfs + tmux + docker-compose + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "24.11"; # Did you read the comment? + +} diff --git a/framework/framework/configuration.nix b/framework/framework/configuration.nix new file mode 100644 index 0000000..aee2028 --- /dev/null +++ b/framework/framework/configuration.nix @@ -0,0 +1,193 @@ +# Config for framework16 +{ config, pkgs, lib, ... }: + +let + impermanence = builtins.fetchTarball "https://github.com/nix-community/impermanence/archive/master.tar.gz"; +in +{ + imports = + [ + ./hardware-configuration.nix + "${impermanence}/nixos.nix" + ]; + + boot = { + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + #initrd.luks.devices."cryptroot".device = "/dev/disk/by-partlabel/cryptroot"; + initrd.luks.devices."cryptswap".device = "/dev/disk/by-partlabel/cryptswap"; + + resumeDevice = "/dev/mapper/cryptswap"; + kernelParams = [ + "resume_offset=0" + "mem_sleep_default=deep" + ]; + }; + + fileSystems = { + "/" = { + device = "none"; + fsType = "tmpfs"; + options = [ "defaults" "size=4G" "mode=755" ]; + }; + "/persist" = { + device = "/dev/disk/by-uuid/7bdece95-b369-4d57-b405-70338fd9cd54"; + fsType = "btrfs"; + neededForBoot = true; + }; + }; + + networking.hostId = "3294c9a2"; # Required for ZFS + networking.hostName = "cryochamber"; + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + environment.persistence."/persist" = { + hideMounts = true; + directories = [ + "/root" + "/etc/nixos" + "/etc/ssh" + ]; + files = [ + "/etc/machine-id" + #"/etc/nix/id_rsa" # Needed? + ]; + }; + # Files are not copied to /persist during install, so need to do so manually + #rsync -azPH /mnt/root/ /mnt/persist/root + #rsync -azPH /mnt/etc/nixos/ /mnt/persist/etc/nixos + #rsync -azPH /mnt/etc/ssh/ /mnt/persist/etc/ssh + #cp /mnt/etc/machine-id /mnt/persist/etc/machine-id + + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/Los_Angeles"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + virtualisation.docker = { + enable = true; + extraOptions = "--storage-driver=overlay2"; + }; + programs.zsh.enable = true; + services.openssh.enable = true; + services.openssh.settings.PermitRootLogin = "yes"; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + 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 this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.hunner = { + isNormalUser = true; + description = "Hunter Haugen"; + extraGroups = [ "docker" "networkmanager" "wheel" ]; + hashedPassword = "$y$j9T$hLqdzlz7dbJZgUnKs.eo3/$25s/2X18vGtDKj53qD1sn/.Omp/6CBJWbn7d9KAiOK7"; + shell = pkgs.zsh; + packages = with pkgs; [ + # thunderbird + ]; + }; + + # Enable automatic login for the user. + services.displayManager.autoLogin.enable = true; + services.displayManager.autoLogin.user = "hunner"; + + # Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229 + systemd.services."getty@tty1".enable = false; + systemd.services."autovt@tty1".enable = false; + + # Install firefox. + programs.firefox.enable = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + git + vim + wget + curl + htop + zfs + tmux + docker-compose + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "24.11"; # Did you read the comment? + +} diff --git a/framework/framework/disko-btrfs.nix b/framework/framework/disko-btrfs.nix new file mode 100644 index 0000000..f940cf5 --- /dev/null +++ b/framework/framework/disko-btrfs.nix @@ -0,0 +1,97 @@ +# Config for framework 16 +# sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount disko.nix +{ + disko.devices = { + disk = { + nvme0n1 = { + type = "disk"; + device = "/dev/nvme0n1"; + content = { + type = "gpt"; + partitions = { + ESP = { + label = "boot"; + name = "ESP"; + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" "defaults" ]; + }; + }; + cryptswap = { + size = "70G"; + type = "8300"; + content = { + type = "luks"; + name = "cryptswap"; + passwordFile = "/tmp/secret.key"; + content = { + type = "swap"; + resumeDevice = true; + }; + }; + }; + cryptroot = { + size = "100%"; + content = { + type = "luks"; + name = "cryptroot"; + passwordFile = "/tmp/secret.key"; + settings = { + allowDiscards = true; + crypttabExtraOpts = [ "no-read-workqueue" "no-write-workqueue" ]; + }; + content = { + type = "btrfs"; + extraArgs = [ "-L" "nixos" "-f" ]; + subvolumes = { + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ "compress=zstd" "noatime" "ssd" "space_cache=v2" ]; + }; + "/home" = { + mountpoint = "/home"; + mountOptions = [ "compress=zstd" "noatime" "ssd" "space_cache=v2" ]; + }; + "/var/log" = { + mountpoint = "/var/log"; + mountOptions = [ "compress=zstd" "noatime" "ssd" "space_cache=v2" ]; + }; + "/var/lib" = { + mountpoint = "/var/lib"; + mountOptions = [ "compress=zstd" "noatime" "ssd" "space_cache=v2" ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ "compress=zstd" "noatime" "ssd" "space_cache=v2" ]; + }; + "/swap" = { + mountpoint = "/swap"; + swap.swapfile.size = "70G"; + }; + }; + }; + }; + }; + }; + }; + }; + }; + nodev = { + "/" = { + fsType = "tmpfs"; + mountOptions = [ + "defaults" + "size=4G" + "mode=755" + ]; + }; + }; + }; + + filesystems."/persist".neededForBoot = true; + filesystems."/var/log".neededForBoot = true; +} diff --git a/framework/framework/disko-zfs.nix b/framework/framework/disko-zfs.nix new file mode 100644 index 0000000..b3ea421 --- /dev/null +++ b/framework/framework/disko-zfs.nix @@ -0,0 +1,110 @@ +# Config for framework 16 +# sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount disko.nix +{ + disko.devices = { + disk = { + nvme0n1 = { + type = "disk"; + device = "/dev/nvme0n1"; + content = { + type = "gpt"; + partitions = { + ESP = { + name = "ESP"; + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + swap = { + size = "70G"; + content = { + type = "swap"; + randomEncryption = true; + }; + }; + crypt = { + size = "100%"; + content = { + type = "luks"; + name = "crypt"; + extraOpenArgs = [ "--allow-discards" ]; + passwordFile = "/tmp/secret.key"; + content = { + type = "zfs"; + pool = "rpool"; + }; + }; + }; + }; + }; + }; + }; + zpool = { + rpool = { + type = "zpool"; + rootFsOptions = { + canmount = "off"; + mountpoint = "none"; + acltype = "posixacl"; + compression = "lz4"; + dnodesize = "auto"; + normalization = "formD"; + relatime = "on"; + xattr = "sa"; + }; + options = { + ashift = "12"; + autotrim = "on"; + }; + datasets = { + "local/root" = { + type = "zfs_fs"; + options = { + mountpoint = "legacy"; + canmount = "noauto"; + }; + mountpoint = "/"; + postCreateHook = '' + zfs snapshot rpool/local/root@blank + ''; + }; + "local/nix" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/nix"; + }; + "safe/persist" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/persist"; + }; + "safe/home" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/home"; + postCreateHook = '' + zfs snapshot rpool/safe/home@blank + ''; + }; + "local/var" = { + type = "zfs_fs"; + }; + "local/var/lib" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/var/lib"; + }; + "local/var/log" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/var/log"; + }; + }; + }; + }; + }; +} diff --git a/framework/framework/hardware-configuration-tmpfs.nix b/framework/framework/hardware-configuration-tmpfs.nix new file mode 100644 index 0000000..9e01c10 --- /dev/null +++ b/framework/framework/hardware-configuration-tmpfs.nix @@ -0,0 +1,78 @@ +# 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" "xhci_pci" "thunderbolt" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "none"; + fsType = "tmpfs"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/C86C-8A59"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/7bdece95-b369-4d57-b405-70338fd9cd54"; + fsType = "btrfs"; + options = [ "subvol=home" ]; + }; + + boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/196ffcae-d171-482c-8b90-dda60c0d4f86"; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/7bdece95-b369-4d57-b405-70338fd9cd54"; + fsType = "btrfs"; + options = [ "subvol=nix" ]; + }; + + fileSystems."/persist" = + { device = "/dev/disk/by-uuid/7bdece95-b369-4d57-b405-70338fd9cd54"; + fsType = "btrfs"; + options = [ "subvol=persist" ]; + }; + + fileSystems."/swap" = + { device = "/dev/disk/by-uuid/7bdece95-b369-4d57-b405-70338fd9cd54"; + fsType = "btrfs"; + options = [ "subvol=swap" ]; + }; + + fileSystems."/var/lib" = + { device = "/dev/disk/by-uuid/7bdece95-b369-4d57-b405-70338fd9cd54"; + fsType = "btrfs"; + options = [ "subvol=var/lib" ]; + }; + + fileSystems."/var/log" = + { device = "/dev/disk/by-uuid/7bdece95-b369-4d57-b405-70338fd9cd54"; + fsType = "btrfs"; + options = [ "subvol=var/log" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/0137a60e-9a7c-4682-9bb8-9c05f996b9af"; } + ]; + + # 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.wlp1s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/framework/framework/hardware-configuration.nix b/framework/framework/hardware-configuration.nix new file mode 100644 index 0000000..7b7a78c --- /dev/null +++ b/framework/framework/hardware-configuration.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 = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/9df8e21d-7a32-4d3c-85bc-430b4e8d81e2"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/FD5E-1CDC"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/57ee1e51-6c22-4046-9a01-da31e88cd800"; } + ]; + + # 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.wlp1s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/framework/framework/original-hardware-configuration.nix b/framework/framework/original-hardware-configuration.nix new file mode 100644 index 0000000..89f7968 --- /dev/null +++ b/framework/framework/original-hardware-configuration.nix @@ -0,0 +1,63 @@ +# 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" "xhci_pci" "thunderbolt" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "rpool/local/root"; + fsType = "zfs"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/3B6B-5D51"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + fileSystems."/home" = + { device = "rpool/safe/home"; + fsType = "zfs"; + }; + + fileSystems."/nix" = + { device = "rpool/local/nix"; + fsType = "zfs"; + }; + + fileSystems."/persist" = + { device = "rpool/safe/persist"; + fsType = "zfs"; + }; + + fileSystems."/var/lib" = + { device = "rpool/local/var/lib"; + fsType = "zfs"; + }; + + fileSystems."/var/log" = + { device = "rpool/local/var/log"; + fsType = "zfs"; + }; + + 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..useDHCP`. + networking.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; +}