mirror of
https://github.com/nix-community/disko.git
synced 2024-09-11 06:25:33 +03:00
Declarative disk partitioning and formatting using nix [maintainer=@Lassulus]
example | ||
tests | ||
.gitignore | ||
ci.nix | ||
default.nix | ||
flake.lock | ||
flake.nix | ||
README.md | ||
types.nix |
disko
nix-powered automatic disk partitioning
Usage
Master Boot Record
This is how your iso configuation may look like
/etc/nixos/configuration.nix
{ pkgs, modulesPath, ... }:
let
disko = pkgs.callPackage (builtins.fetchGit {
url = "https://github.com/nix-community/disko";
ref = "master";
}) {};
cfg = {
type = "devices";
content = {
sda = {
type = "table";
format = "msdos";
partitions = [{
type = "partition";
part-type = "primary";
start = "1M";
end = "100%";
bootable = true;
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
}];
};
};
};
in {
imports = [
(modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix")
];
environment.systemPackages = with pkgs;[
(pkgs.writeScriptBin "tsp-create" (disko.create 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";
# };
#};
}
After nixos-rebuild switch
this will add a tsp-create
and a tsp-mount
command:
- tsp-create: creates & formats the partitions according to
tsp-disk.json
- tsp-mount: mounts the partitions to
/mnt
GUID Partition Table, LVM and dm-crypt
See examples/