Disko: Difference between revisions

From NixOS Wiki
imported>Onny
mNo edit summary
imported>Onny
mNo edit summary
Line 47: Line 47:


The following command will apply the disk layout specified in the configuration and mount them afterwards. Warning: This will erase all data on the disk.
The following command will apply the disk layout specified in the configuration and mount them afterwards. Warning: This will erase all data on the disk.
{{Warning|The disko commands will erase all existing data on your disk and repartition it according to your config.}}


<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
Line 52: Line 54:
</syntaxhighlight>
</syntaxhighlight>


The command above requires [[Flake]] features available on your system.
Alternativley use a disk layout configuration of a remote repository containing a <code>flake.nix</code> file as an entry point
 
<syntaxhighlight lang="console">
# sudo nix run github:nix-community/disko -- --mode zap_create_mount --flake github:Lassulus/flakes-testing#fnord
</syntaxhighlight>
 
The commands above requires [[Flake]] features available on your system.


To verify both partitions got mounted correctly, run
To verify both partitions got mounted correctly, run

Revision as of 16:02, 19 May 2023

Disko is a utility and NixOS module for declarative disk partitioning.

Usage

The following example creates a new GPT partition table for the disk /dev/vda including two partitions for EFI boot and a bcachefs root filesystem.

disko-config.nix
{ disks ? [ "/dev/vda" ], ... }: {
  disko.devices = {
    disk = {
      vdb = {
        device = builtins.elemAt disks 0;
        type = "disk";
        content = {
          type = "table";
          format = "gpt";
          partitions = [
            {
              name = "ESP";
              start = "1MiB";
              end = "500MiB";
              bootable = true;
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot";
              };
            }
            {
              name = "root";
              start = "500MiB";
              end = "100%";
              part-type = "primary";
              content = {
                type = "filesystem";
                format = "bcachefs";
                mountpoint = "/";
              };
            }
          ];
        };
      };
    };
  };
}

The following command will apply the disk layout specified in the configuration and mount them afterwards. Warning: This will erase all data on the disk.

Warning: The disko commands will erase all existing data on your disk and repartition it according to your config.
# sudo nix run github:nix-community/disko -- --mode zap_create_mount ./disko-config.nix

Alternativley use a disk layout configuration of a remote repository containing a flake.nix file as an entry point

# sudo nix run github:nix-community/disko -- --mode zap_create_mount --flake github:Lassulus/flakes-testing#fnord

The commands above requires Flake features available on your system.

To verify both partitions got mounted correctly, run

# mount | grep /mnt