disko/README.md
2019-02-02 12:32:10 +01:00

1.6 KiB

disko

nix-powered automatic disk partitioning

Usage

Master Boot Record

This is how your iso configuation may look like

{ pkgs, ... }:
let
  disko = (builtins.fetchGit {
    url = https://cgit.lassul.us/disko/;
    rev = "88f56a0b644dd7bfa8438409bea5377adef6aef4";
  }) + "/lib";
  cfg = builtins.fromJSON ./tsp-disk.json;
in {
  imports = [
    <nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix>
  ];
  environment.systemPackages = with pkgs;[
    (pkgs.writeScriptBin "tsp-create" (disko.mount cfg))
    (pkgs.writeScriptBin "tsp-mount" (disko.mount cfg))
  ];
  # Optional: Automatically creates a service which runs at startup to perform the partitioning
  systemd.services.install-to-hd = {
    enable = true;
    wantedBy = ["multi-user.target"];
    after = ["getty@tty1.service" ];
    serviceConfig = {
      Type = "oneshot";
      ExecStart = [ (disko.create cfg) (disk.mount cfg) ];
      StandardInput = "null";
      StandardOutput = "journal+console";
      StandardError = "inherit";
    };
  };
}

tsp-disk.json (TODO: find the correct disk)

{
  "type": "devices",
  "content": {
    "sda": {
      "type": "table",
      "format": "msdos",
      "partitions": [
        { "type": "partition",
          "start": "1M",
          "end": "100%",
          "bootable": true,
          "content": {
            "type": "filesystem",
            "format": "ext4",
            "mountpoint": "/"
          }
        }
      ]
    }
  }
}

GUID Partition Table, LVM and dm-crypt

See examples/