Disko: Difference between revisions
 update disko config to one from this decade  | 
				 Prepared the page for translation  | 
				||
| Line 1: | Line 1: | ||
<languages/>  | |||
<translate>  | |||
[https://github.com/nix-community/disko Disko] is a utility and NixOS module for declarative disk partitioning.  | [https://github.com/nix-community/disko Disko] is a utility and NixOS module for declarative disk partitioning.  | ||
| Line 5: | Line 7: | ||
== Usage ==  | == Usage ==  | ||
The following example creates a new GPT partition table for the disk <code>/dev/vda</code> including two partitions for EFI boot and a [[bcachefs]] root filesystem.  | The following example creates a new GPT partition table for the disk <code>/dev/vda</code> including two partitions for EFI boot and a [[Special:MyLanguage/bcachefs|bcachefs]] root filesystem.  | ||
</translate>  | |||
{{file|disko-config.nix|nix|<nowiki>  | {{file|disko-config.nix|nix|<nowiki>  | ||
{  | {  | ||
| Line 42: | Line 45: | ||
}  | }  | ||
</nowiki>}}  | </nowiki>}}  | ||
<translate>  | |||
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.  | ||
</translate>  | |||
{{Warning|The disko commands will erase all existing data on your disk and repartition it according to the given configuration.}}  | {{Warning|The disko commands will erase all existing data on your disk and repartition it according to the given configuration.}}  | ||
<translate>  | |||
<syntaxhighlight lang="console">  | <syntaxhighlight lang="console">  | ||
| Line 57: | Line 63: | ||
</syntaxhighlight>  | </syntaxhighlight>  | ||
The commands above requires [[Flake]] features available on your system.  | The commands above requires [[Special:MyLanguage/Flake|Flake]] features available on your system.  | ||
To verify both partitions got mounted correctly, run  | To verify both partitions got mounted correctly, run  | ||
| Line 75: | Line 81: | ||
Add the Disko module on a flake-enabled system. Insert the required input and reference it and your <code>disko-config.nix</code> in the modules section. For alternative installation methods consult the Disko [https://github.com/nix-community/disko/blob/master/docs/quickstart.md quickstart guide].  | Add the Disko module on a flake-enabled system. Insert the required input and reference it and your <code>disko-config.nix</code> in the modules section. For alternative installation methods consult the Disko [https://github.com/nix-community/disko/blob/master/docs/quickstart.md quickstart guide].  | ||
</translate>  | |||
{{file|/etc/nixos/flake.nix|nix|<nowiki>  | {{file|/etc/nixos/flake.nix|nix|<nowiki>  | ||
{  | {  | ||
| Line 100: | Line 107: | ||
}  | }  | ||
</nowiki>}}  | </nowiki>}}  | ||
<translate>  | |||
Ensure that there are no automatically generated entries of <code>fileSystems</code> options in <code>/etc/nixos/hardware-configuration.nix</code>. Disko will automatically generate them for you. Rebuild your system to apply the Disko configuration.  | Ensure that there are no automatically generated entries of <code>fileSystems</code> options in <code>/etc/nixos/hardware-configuration.nix</code>. Disko will automatically generate them for you. Rebuild your system to apply the Disko configuration.  | ||
[[Category:Filesystem]]  | </translate>  | ||
[[Category:Filesystem{{#translation:}}]]  | |||
Revision as of 12:36, 20 July 2024
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.devices = {
    disk = {
      main = {
        device = "/dev/vda";
        type = "disk";
        content = {
          type = "gpt";
          partitions = {
            ESP = {
              end = "500M";
              type = "EF00";
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot";
              };
            };
            root = {
              name = "root";
              end = "-0";
              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.
# sudo nix run github:nix-community/disko -- --mode disko ./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 disko --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
Configuration
In case the NixOS base system was installed on a partition layout bootstrapped with Disko, the disk config itself can be integrated into the system. First copy the file, for example disko-config.nix into your system configuration directory
# cp disko-config.nix /etc/nixos/
Add the Disko module on a flake-enabled system. Insert the required input and reference it and your disko-config.nix in the modules section. For alternative installation methods consult the Disko quickstart guide.
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
    disko.url = "github:nix-community/disko";
    disko.inputs.nixpkgs.follows = "nixpkgs";
  };
  outputs = {self, nixpkgs, disko, ...}@inputs: {
    nixosConfigurations.mysystem = inputs.nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs.inputs = inputs;
      modules = [
        disko.nixosModules.disko
        ./disko-config.nix
        {
          disko.devices.main.device = nixpkgs.lib.mkForce "/dev/vda";
        }
        ./configuration.nix
      ];
    };
  };
}
Ensure that there are no automatically generated entries of fileSystems options in /etc/nixos/hardware-configuration.nix. Disko will automatically generate them for you. Rebuild your system to apply the Disko configuration.