Nixos-anywhere: Difference between revisions

From NixOS Wiki
M3vtfbp (talk | contribs)
Created page with "[https://github.com/nix-community/nixos-anywhere nixos-anywhere] is a tool for installing NixOS to a remote machine. It uses kexec to boot into a temporary ram based NixOS system. From there, it can erase and repartition an entire disk, and install NixOS. More information can be found on the official documents. https://github.com/nix-community/nixos-anywhere =Installing MBR= The official documents recommend installing a GPT partition table, and installing an msdos part..."
Tags: Mobile edit Mobile web edit
 
M3vtfbp (talk | contribs)
Tags: Mobile edit Mobile web edit
Line 6: Line 6:
The official documents recommend installing a GPT partition table, and installing an msdos partition table is not well supported, and there are no examples. This is unfortunate, as many VPS do not use UEFI boot and are not over 4TB for the root partition. Additionally, on a VPS with limited disk space, it can be an unnecessary waste to create a separate partition for /boot. With an msdos partition table, a bootable system can be made with only 1 partition.  
The official documents recommend installing a GPT partition table, and installing an msdos partition table is not well supported, and there are no examples. This is unfortunate, as many VPS do not use UEFI boot and are not over 4TB for the root partition. Additionally, on a VPS with limited disk space, it can be an unnecessary waste to create a separate partition for /boot. With an msdos partition table, a bootable system can be made with only 1 partition.  


Fortunately, it is possible to install an msdos partition table in spite of the lack of support. Below is a simple example for installing a [[Btrfs]] root filesystem as the only WIP
Fortunately, it is possible to install an msdos partition table in spite of the lack of support. Below is a simple example for installing a [[Btrfs]] root filesystem as the only partition on disk.
 
<pre>
# disk-config.nix
# Example to create a bios compatible gpt partition
{ lib, ... }:
{
  disko.devices = {
    disk.disk1 = {
      device = lib.mkDefault "/dev/sda";
#      type = "disk";
      content = {
        type = "table";
        format = "msdos";
        partitions = [
          {
            part-type = "primary";
            fs-type = "btrfs";
            name = "root";
            bootable = true;
            content = {
              type = "filesystem";
              format = "btrfs";
              extraArgs = [ "-f" "-O block-group-tree" ];
              mountpoint = "/";
              mountOptions = [ "compress=zstd" ];
            };
          }
        ];
      };
    };
  };
}
</pre>

Revision as of 08:46, 4 September 2024

nixos-anywhere is a tool for installing NixOS to a remote machine. It uses kexec to boot into a temporary ram based NixOS system. From there, it can erase and repartition an entire disk, and install NixOS.

More information can be found on the official documents. https://github.com/nix-community/nixos-anywhere

Installing MBR

The official documents recommend installing a GPT partition table, and installing an msdos partition table is not well supported, and there are no examples. This is unfortunate, as many VPS do not use UEFI boot and are not over 4TB for the root partition. Additionally, on a VPS with limited disk space, it can be an unnecessary waste to create a separate partition for /boot. With an msdos partition table, a bootable system can be made with only 1 partition.

Fortunately, it is possible to install an msdos partition table in spite of the lack of support. Below is a simple example for installing a Btrfs root filesystem as the only partition on disk.

# disk-config.nix
# Example to create a bios compatible gpt partition
{ lib, ... }:
{
  disko.devices = {
    disk.disk1 = {
      device = lib.mkDefault "/dev/sda";
#      type = "disk";
      content = {
        type = "table";
        format = "msdos";
        partitions = [
          {
            part-type = "primary";
            fs-type = "btrfs";
            name = "root";
            bootable = true;
            content = {
              type = "filesystem";
              format = "btrfs";
              extraArgs = [ "-f" "-O block-group-tree" ];
              mountpoint = "/";
              mountOptions = [ "compress=zstd" ];
            };
          }
        ];
      };
    };
  };
}