{ config, lib, system, ... }: let isArm = builtins.match "aarch64*" system != null; rootDisk = "/dev/nvme0n1"; in { config = lib.mkIf isArm { disko.devices = { nodev."/" = { fsType = "tmpfs"; mountOptions = [ "mode=755" "defaults" "size=2G" ]; }; # root disk setup disk.main = { type = "disk"; device = rootDisk; imageSize = "15G"; content = { type = "gpt"; # specify partitions partitions = { # /boot/firmware FIRMWARE = { priority = 1; name = "FIRMWARE"; start = "1M"; end = "1G"; type = "0700"; content = { type = "filesystem"; format = "vfat"; mountpoint = "/boot/firmware"; mountOptions = [ "umask=0077" ]; }; }; # /boot ESP = { priority = 2; name = "ESP"; # start = "1G"; # end = "2G"; size = "1G"; type = "EF00"; content = { type = "filesystem"; format = "vfat"; mountpoint = "/boot"; mountOptions = [ "umask=0077" ]; }; }; root = { name = "btrfs-root"; size = "100%"; content = { type = "btrfs"; extraArgs = [ "-f" ]; # Override existing partition # Subvolumes must set a mountpoint in order to be mounted, # unless their parent is mounted subvolumes = { "home" = { mountOptions = [ "compress=zstd" ]; mountpoint = "/home"; }; "root" = { mountOptions = [ "compress=zstd" "noatime" ]; mountpoint = "/root"; }; "nix" = { mountOptions = [ "compress=zstd" "noatime" ]; mountpoint = "/nix"; }; "etc" = { mountOptions = [ "compress=zstd" "noatime" ]; mountpoint = "/etc"; }; "tmp" = { mountOptions = [ "compress=zstd" "noatime" ]; mountpoint = "/tmp"; }; "log" = { mountOptions = [ "compress=zstd" "noatime" ]; mountpoint = "/var/log"; }; }; }; }; }; }; }; }; }; }