From b1395b27cebea54b6607aced3352a235e6536aa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Sat, 8 Nov 2025 12:05:50 +0800 Subject: [PATCH] hetzner_benchmark: init --- default.nix | 6 ++ nix/configurations/hetzner_benchmark.nix | 39 ++++++++ .../hardware-configuration.nix | 35 +++++++ nix/disko/hetzner_benchmark/ext4.nix | 37 ++++++++ nix/disko/hetzner_benchmark/raid.nix | 93 +++++++++++++++++++ 5 files changed, 210 insertions(+) create mode 100644 nix/configurations/hetzner_benchmark.nix create mode 100644 nix/configurations/hetzner_benchmark/hardware-configuration.nix create mode 100644 nix/disko/hetzner_benchmark/ext4.nix create mode 100644 nix/disko/hetzner_benchmark/raid.nix diff --git a/default.nix b/default.nix index ccf69117..729c5d87 100644 --- a/default.nix +++ b/default.nix @@ -21,6 +21,12 @@ system = "x86_64-linux"; modules = [ ./nix/configurations/installer.nix ]; }; + + # Not mine, rented on hetzner + hetzner_benchmark = { + system = "x86_64-linux"; + modules = [ ./nix/configurations/hetzner_benchmark.nix ]; + }; }; packages = import ./nix/packages { inherit sources; }; diff --git a/nix/configurations/hetzner_benchmark.nix b/nix/configurations/hetzner_benchmark.nix new file mode 100644 index 00000000..eb06224e --- /dev/null +++ b/nix/configurations/hetzner_benchmark.nix @@ -0,0 +1,39 @@ +# The hetzner machine rented to benchmark the cabal comment parser +let + sources = import ../../npins; + + hostname = "hetzner_benchmark"; +in +{ lib, ... }: +{ + imports = [ + # + # hostname + # + { _module.args = { inherit hostname; }; } + + { system.nixos.version = lib.substring 0 8 sources.nixpkgs.revision; } + + ./hetzner_benchmark/hardware-configuration.nix + + (sources.disko + "/module.nix") + ../disko/hetzner_benchmark/ext4.nix + + ../nixosModules/common/system-nixconf.nix + ../nixosModules/extra/leana.nix + + # TODO: install my user configuration + ]; + + boot.loader.grub.enable = true; + + services.openssh.enable = true; + + users.users = { + "root".openssh.authorizedKeys.keys = import ../identities.nix ++ [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFza3UN1gWQqh//FkJBzmssQ4lxHdllQGfqPHzG4LQI8 benchmark-machine" + ]; + }; + + system.stateVersion = "25.05"; +} diff --git a/nix/configurations/hetzner_benchmark/hardware-configuration.nix b/nix/configurations/hetzner_benchmark/hardware-configuration.nix new file mode 100644 index 00000000..2066ce8f --- /dev/null +++ b/nix/configurations/hetzner_benchmark/hardware-configuration.nix @@ -0,0 +1,35 @@ +# 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" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + # 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.enp41s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nix/disko/hetzner_benchmark/ext4.nix b/nix/disko/hetzner_benchmark/ext4.nix new file mode 100644 index 00000000..1bd10ef0 --- /dev/null +++ b/nix/disko/hetzner_benchmark/ext4.nix @@ -0,0 +1,37 @@ +{ + disko.devices = { + disk = { + main = { + type = "disk"; + device = "/dev/nvme1n1"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "1M"; + type = "EF02"; + priority = 1; + }; + ESP = { + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/nix/disko/hetzner_benchmark/raid.nix b/nix/disko/hetzner_benchmark/raid.nix new file mode 100644 index 00000000..c6ed68d5 --- /dev/null +++ b/nix/disko/hetzner_benchmark/raid.nix @@ -0,0 +1,93 @@ +# I can't get this working for now :( +# Only nvme1n1 is detected in the installer environment +{ + disko.devices = { + disk = { + one = { + type = "disk"; + device = "/dev/nvme0n1"; + content = { + type = "gpt"; + partitions = { + BOOT = { + size = "1M"; + type = "EF02"; # for grub MBR + }; + ESP = { + size = "500M"; + type = "EF00"; + content = { + type = "mdraid"; + name = "boot"; + }; + }; + mdadm = { + size = "100%"; + content = { + type = "mdraid"; + name = "raid1"; + }; + }; + }; + }; + }; + two = { + type = "disk"; + device = "/dev/nvme1n1"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "1M"; + type = "EF02"; # for grub MBR + }; + ESP = { + size = "500M"; + type = "EF00"; + content = { + type = "mdraid"; + name = "boot"; + }; + }; + mdadm = { + size = "100%"; + content = { + type = "mdraid"; + name = "raid1"; + }; + }; + }; + }; + }; + }; + + mdadm = { + boot = { + type = "mdadm"; + level = 1; + metadata = "1.0"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + raid1 = { + type = "mdadm"; + level = 1; + content = { + type = "gpt"; + partitions.primary = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; +}