build01: migrate to disko config

This commit is contained in:
Jörg Thalheim 2023-12-04 08:41:05 +01:00 committed by zowoq
parent 3af52025ce
commit 4c68367b89
5 changed files with 78 additions and 75 deletions

View file

@ -165,6 +165,10 @@
remote-workers = ./modules/nixos/remote-workers.nix;
watch-store = ./modules/nixos/watch-store.nix;
zfs = ./modules/nixos/zfs.nix;
disko-raid.imports = [
inputs.disko.nixosModules.disko
./modules/nixos/disko-raid.nix
];
};
flake.lib.darwinSystem = args:

View file

@ -1,22 +1,13 @@
{ inputs, ... }:
# Boot recovery:
# Activate 64-bit Rescue system in https://robot.your-server.de/server
# ssh root@build01.nix-community.org "mount /dev/md[0-9]* /mnt && /mnt/kexec_bundle"
#
#
# In kexec image:
# # stop autoreboot
# $ systemctl stop autoreboot.timer
# $ zpool import -f zroot && mount -t zfs zroot/root /mnt && mount -t zfs zroot/root/home /mnt/home && mount -t zfs zroot/root/nix /mnt/nix && mount /dev/md[0-9]* /mnt/boot
# nixos-enter
{
imports = [
inputs.srvos.nixosModules.hardware-hetzner-online-amd
inputs.self.nixosModules.common
inputs.self.nixosModules.disko-raid
inputs.self.nixosModules.builder
inputs.self.nixosModules.zfs
inputs.self.nixosModules.community-builder
];
nixCommunity.disko.raidLevel = 0; # more disk space, we don't have state to restore anyway
# Emulate riscv64 until we have proper builders
boot.binfmt.emulatedSystems = [ "riscv64-linux" ];

View file

@ -1,10 +1,10 @@
{ inputs, ... }:
{
imports = [
inputs.disko.nixosModules.disko
inputs.srvos.nixosModules.mixins-nginx
inputs.srvos.nixosModules.hardware-hetzner-online-amd
inputs.self.nixosModules.common
inputs.self.nixosModules.disko-raid
inputs.self.nixosModules.buildbot
inputs.self.nixosModules.builder
inputs.self.nixosModules.hercules-ci
@ -14,7 +14,6 @@
inputs.self.nixosModules.github-org-backup
inputs.self.nixosModules.hydra
inputs.self.nixosModules.nur-update
./disko.nix
./postgresql.nix
];

View file

@ -1,62 +0,0 @@
{ lib, ... }:
let
mirrorBoot = idx: {
type = "disk";
device = "/dev/nvme${idx}n1";
content = {
type = "gpt";
partitions = {
boot = {
size = "1M";
type = "EF02"; # for grub MBR
};
ESP = {
size = "1G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot${idx}";
mountOptions = [ "nofail" ];
};
};
raid-root = {
size = "100%";
content = {
type = "mdraid";
name = "root";
};
};
};
};
};
in
{
# this is both efi and bios compatible
boot.loader.grub = {
enable = true;
efiSupport = true;
efiInstallAsRemovable = true;
devices = lib.mkForce [ ]; # disko adds /boot here, we want /boot0 /boot1
mirroredBoots = [
{ path = "/boot0"; devices = [ "/dev/nvme0n1" ]; }
{ path = "/boot1"; devices = [ "/dev/nvme1n1" ]; }
];
};
disko.devices = {
disk = {
x = mirrorBoot "0";
y = mirrorBoot "1";
};
mdadm.root = {
type = "mdadm";
level = 1;
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
}

View file

@ -0,0 +1,71 @@
{ lib, config, ... }:
let
mirrorBoot = idx: {
type = "disk";
device = "/dev/nvme${idx}n1";
content = {
type = "gpt";
partitions = {
boot = {
size = "1M";
type = "EF02"; # for grub MBR
};
ESP = {
size = "1G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot${idx}";
mountOptions = [ "nofail" ];
};
};
raid-root = {
size = "100%";
content = {
type = "mdraid";
name = "root";
};
};
};
};
};
in
{
options = {
nixCommunity.disko.raidLevel = lib.mkOption {
type = lib.types.int;
default = 1;
description = "RAID level to use for the root partition";
};
};
config = {
# this is both efi and bios compatible
boot.loader.grub = {
enable = true;
efiSupport = true;
efiInstallAsRemovable = true;
devices = lib.mkForce [ ]; # disko adds /boot here, we want /boot0 /boot1
mirroredBoots = [
{ path = "/boot0"; devices = [ "/dev/nvme0n1" ]; }
{ path = "/boot1"; devices = [ "/dev/nvme1n1" ]; }
];
};
disko.devices = {
disk = {
x = mirrorBoot "0";
y = mirrorBoot "1";
};
mdadm.root = {
type = "mdadm";
level = config.nixCommunity.disko.raidLevel;
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
};
}