2018-09-11 21:42:55 +03:00
|
|
|
disko
|
|
|
|
=====
|
|
|
|
|
|
|
|
nix-powered automatic disk partitioning
|
|
|
|
|
|
|
|
Usage
|
|
|
|
=====
|
|
|
|
|
|
|
|
Master Boot Record
|
|
|
|
------------------
|
|
|
|
This is how your iso configuation may look like
|
|
|
|
|
2019-09-16 12:52:23 +03:00
|
|
|
/etc/nixos/configuration.nix
|
2018-09-11 21:42:55 +03:00
|
|
|
```nix
|
2022-08-17 15:20:44 +03:00
|
|
|
{ pkgs, modulesPath, ... }:
|
2018-09-11 21:42:55 +03:00
|
|
|
let
|
2022-08-17 16:28:24 +03:00
|
|
|
disko = pkgs.callPackage (builtins.fetchGit {
|
|
|
|
url = "https://github.com/nix-community/disko";
|
|
|
|
ref = "master";
|
|
|
|
}) {};
|
|
|
|
cfg = {
|
2022-09-04 14:12:43 +03:00
|
|
|
disk = {
|
2022-08-17 16:28:24 +03:00
|
|
|
sda = {
|
2022-09-04 14:12:43 +03:00
|
|
|
device = "/dev/sda";
|
|
|
|
type = "device";
|
|
|
|
content = {
|
|
|
|
type = "table";
|
|
|
|
format = "msdos";
|
|
|
|
partitions = [
|
|
|
|
{
|
|
|
|
name = "root";
|
|
|
|
type = "partition";
|
|
|
|
part-type = "primary";
|
|
|
|
start = "1M";
|
|
|
|
end = "100%";
|
|
|
|
bootable = true;
|
|
|
|
content = {
|
|
|
|
type = "filesystem";
|
|
|
|
format = "ext4";
|
|
|
|
mountpoint = "/";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
2022-08-17 16:28:24 +03:00
|
|
|
};
|
|
|
|
};
|
2022-08-17 15:20:44 +03:00
|
|
|
};
|
2018-09-11 21:42:55 +03:00
|
|
|
in {
|
|
|
|
imports = [
|
2022-08-17 15:20:44 +03:00
|
|
|
(modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix")
|
2018-09-11 21:42:55 +03:00
|
|
|
];
|
|
|
|
environment.systemPackages = with pkgs;[
|
2019-09-16 12:56:41 +03:00
|
|
|
(pkgs.writeScriptBin "tsp-create" (disko.create cfg))
|
2018-09-11 21:42:55 +03:00
|
|
|
(pkgs.writeScriptBin "tsp-mount" (disko.mount cfg))
|
|
|
|
];
|
2019-09-16 12:51:13 +03:00
|
|
|
## 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";
|
|
|
|
# };
|
|
|
|
#};
|
2018-09-11 21:42:55 +03:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2019-09-16 12:56:55 +03:00
|
|
|
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`
|
|
|
|
|
2018-09-11 21:42:55 +03:00
|
|
|
GUID Partition Table, LVM and dm-crypt
|
|
|
|
--------------------------------------
|
|
|
|
See `examples/`
|