aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hosts/server1/configuration.nix3
-rw-r--r--hosts/server1/hardware.nix8
-rw-r--r--modules/by-name/di/disko/module.nix78
-rw-r--r--system/default.nix1
-rw-r--r--system/disks/default.nix83
5 files changed, 84 insertions, 89 deletions
diff --git a/hosts/server1/configuration.nix b/hosts/server1/configuration.nix
index 0bbb993..2d35bd8 100644
--- a/hosts/server1/configuration.nix
+++ b/hosts/server1/configuration.nix
@@ -21,8 +21,5 @@
networking.hostName = "server1";
networking.domain = "vhack.eu";
- # FIXME: Find a better way to specify the disk
- system.disks.disk = "/dev/vda";
-
system.stateVersion = "22.11";
}
diff --git a/hosts/server1/hardware.nix b/hosts/server1/hardware.nix
index 6086362..9abc64c 100644
--- a/hosts/server1/hardware.nix
+++ b/hosts/server1/hardware.nix
@@ -3,8 +3,12 @@
(modulesPath + "/profiles/qemu-guest.nix")
(modulesPath + "/profiles/headless.nix")
];
- # FIXME: The name of the grub device depends on the disko settings
- boot.loader.grub.device = "/dev/vda";
+
+ vhack.disko = {
+ enable = true;
+ # FIXME: Find a better way to specify the disk
+ disk = "/dev/vda";
+ };
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk"];
boot.initrd.kernelModules = [];
}
diff --git a/modules/by-name/di/disko/module.nix b/modules/by-name/di/disko/module.nix
new file mode 100644
index 0000000..0aff93f
--- /dev/null
+++ b/modules/by-name/di/disko/module.nix
@@ -0,0 +1,78 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.system.disko;
+
+ defaultMountOptions = ["compress-force=zstd:15" "noatime"];
+in {
+ options.vhack.disko = {
+ enable = lib.mkEnableOption "disk configuration via disko";
+
+ disk = lib.mkOption {
+ type = lib.types.path;
+ example = "/dev/disk/by-id/ata-WDC_WD10SDRW-11A0XS0_WD-WXP2A901KJN5";
+ description = "Path to the main disk";
+ };
+ };
+
+ config = {
+ disko.devices = {
+ disk.main = {
+ type = "disk";
+ device = cfg.disk;
+
+ content = {
+ type = "gpt";
+ partitions = {
+ boot = {
+ size = "1M";
+ type = "EF02"; # for grub MBR
+ };
+ root = {
+ size = "100%";
+ content = {
+ type = "btrfs";
+ extraArgs = ["-f" "--label nixos"]; # f: Override existing partitions
+
+ subvolumes = {
+ "/nix" = {
+ mountpoint = "/nix";
+ mountOptions = defaultMountOptions;
+ };
+ "/srv" = {
+ mountpoint = "/srv";
+ mountOptions = defaultMountOptions;
+ };
+ "/srv/.snapshots" = {
+ mountpoint = "/srv/.snapshots";
+ mountOptions = defaultMountOptions;
+ };
+ "/boot" = {
+ mountpoint = "/boot";
+ mountOptions = defaultMountOptions;
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+
+ nodev."/" = {
+ fsType = "tmpfs";
+ mountOptions = ["defaults" "size=6G" "mode=755"];
+ };
+ };
+
+ fileSystems = {
+ "/srv" = {
+ neededForBoot = true;
+ };
+ "/boot" = {
+ neededForBoot = true;
+ };
+ };
+ };
+}
diff --git a/system/default.nix b/system/default.nix
index 14f0748..4c80ed9 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -1,6 +1,5 @@
{...}: {
imports = [
- ./disks
./impermanence
./packages
./secrets
diff --git a/system/disks/default.nix b/system/disks/default.nix
deleted file mode 100644
index 3ae682c..0000000
--- a/system/disks/default.nix
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
- cfg = config.system.disks;
- defaultMountOptions = ["compress-force=zstd:15"];
-in {
- options.system.disks = {
- disk = mkOption {
- type = lib.types.path;
- example = literalExpression "/dev/disk/by-id/ata-WDC_WD10SDRW-11A0XS0_WD-WXP2A901KJN5";
- description = lib.mdDoc "Path to the disk";
- };
- };
-
- config = {
- disko.devices = {
- disk.main = {
- device = cfg.disk;
- type = "disk";
- content = {
- type = "table";
- format = "gpt";
- partitions = [
- {
- name = "boot";
- start = "0";
- end = "1M";
- part-type = "primary";
- flags = ["bios_grub"];
- }
- {
- name = "root";
- # leave space for the grub aka BIOS boot
- start = "1M";
- end = "100%";
- part-type = "primary";
- bootable = true;
- content = {
- type = "btrfs";
- extraArgs = ["-f" "--label nixos"]; # f: Override existing partitions
- subvolumes = {
- "nix" = {
- mountpoint = "/nix";
- mountOptions = defaultMountOptions;
- };
- "persistent-storage" = {
- mountpoint = "/srv";
- mountOptions = defaultMountOptions;
- };
- "persistent-storage@snapshots" = {
- mountpoint = "/srv/.snapshots";
- mountOptions = defaultMountOptions;
- };
- "boot" = {
- mountpoint = "/boot";
- mountOptions = defaultMountOptions;
- };
- };
- };
- }
- ];
- };
- };
- nodev = {
- "/" = {
- fsType = "tmpfs";
- mountOptions = ["defaults" "size=6G" "mode=755"];
- };
- };
- };
- fileSystems = {
- "/srv" = {
- neededForBoot = true;
- };
- "/boot" = {
- neededForBoot = true;
- };
- };
- };
-}