disko: add WIP module
This commit is contained in:
parent
9cd9f6edcd
commit
9b70709d50
|
@ -1,5 +1,7 @@
|
||||||
{ lib
|
{ lib
|
||||||
, name ? "chaos"
|
, name ? "chaos"
|
||||||
|
, useConfig ? false
|
||||||
|
, config ? ""
|
||||||
, disk ? "/dev/sda1"
|
, disk ? "/dev/sda1"
|
||||||
, enableCeph ? true
|
, enableCeph ? true
|
||||||
, enableLuks ? true
|
, enableLuks ? true
|
||||||
|
@ -11,7 +13,19 @@ assert lib.assertMsg (enableCeph || enableZfs) "Must enable ceph or zfs!";
|
||||||
assert lib.assertMsg (enableCeph -> enableLuks) "Ceph requires Luks!";
|
assert lib.assertMsg (enableCeph -> enableLuks) "Ceph requires Luks!";
|
||||||
|
|
||||||
{
|
{
|
||||||
disko.devices =
|
imports = [
|
||||||
|
../modules/disko.nix
|
||||||
|
] ++ lib.optional useConfig config;
|
||||||
|
|
||||||
|
disko = {
|
||||||
|
# TODO: deprecate?
|
||||||
|
name.default = name;
|
||||||
|
rootDisk.default = disk;
|
||||||
|
enableCeph.default = enableCeph;
|
||||||
|
enableLuks.default = enableLuks;
|
||||||
|
enableZfs.default = enableZfs;
|
||||||
|
|
||||||
|
devices =
|
||||||
let
|
let
|
||||||
rootSize = 200;
|
rootSize = 200;
|
||||||
zfs = {
|
zfs = {
|
||||||
|
@ -37,7 +51,7 @@ assert lib.assertMsg (enableCeph -> enableLuks) "Ceph requires Luks!";
|
||||||
bootable = true;
|
bootable = true;
|
||||||
content = {
|
content = {
|
||||||
type = "filesystem";
|
type = "filesystem";
|
||||||
format = "fat32";
|
format = "vfat";
|
||||||
mountpoint = "/boot";
|
mountpoint = "/boot";
|
||||||
};
|
};
|
||||||
} ++ [
|
} ++ [
|
||||||
|
@ -85,7 +99,7 @@ assert lib.assertMsg (enableCeph -> enableLuks) "Ceph requires Luks!";
|
||||||
} // {
|
} // {
|
||||||
zpool."${name}" = {
|
zpool."${name}" = {
|
||||||
type = "zpool";
|
type = "zpool";
|
||||||
mountpoint = "none";
|
mountpoint = null;
|
||||||
mountRoot = "/mnt";
|
mountRoot = "/mnt";
|
||||||
rootFsOptions.acltype = "posixacl";
|
rootFsOptions.acltype = "posixacl";
|
||||||
options = {
|
options = {
|
||||||
|
@ -143,4 +157,5 @@ assert lib.assertMsg (enableCeph -> enableLuks) "Ceph requires Luks!";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,35 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
useConfig=false config="" ceph=true luks=true zfs=true
|
||||||
|
|
||||||
ceph=true luks=true zfs=true
|
cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null || exit 1
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"-h" | "--help")
|
"-h" | "--help")
|
||||||
echo "Usage:"
|
echo "Usage:"
|
||||||
echo "$0 [-h|--help] --disk /dev/sdx --name chaos [--no-ceph] [--no-luks] [--no-zfs]"
|
echo "$0 [-h|--help] --name chaos [--config [hosts/\$name/default.nix]] [--disk /dev/sdx] [--no-ceph] [--no-luks] [--no-zfs]"
|
||||||
|
echo
|
||||||
|
echo "If only --config is supplied, the script tries to guess the nix file to import from --name."
|
||||||
|
echo "Note: --config is none working"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
"--disk")
|
|
||||||
disk=$2
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
"--name")
|
"--name")
|
||||||
name=$2
|
name=$2
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
"--config")
|
||||||
|
useConfig=true
|
||||||
|
if [[ $2 =~ ^-- ]]; then
|
||||||
|
config=$2
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
config=../hosts/$name/default.nix
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"--disk")
|
||||||
|
disk=$2
|
||||||
|
;;
|
||||||
"--no-ceph") ceph=false;;
|
"--no-ceph") ceph=false;;
|
||||||
"--no-luks") luks=false;;
|
"--no-luks") luks=false;;
|
||||||
"--no-zfs") zfs=false ;;
|
"--no-zfs") zfs=false ;;
|
||||||
|
@ -28,12 +41,13 @@ while [[ $# -gt 0 ]]; do
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ -z ${disk:-} || -z ${name:-} ]]; then
|
if [[ -z ${name:-} || (-n ${config:-} && -n ${disk:-}) ]]; then
|
||||||
echo "--disk and --name must be supplied!"
|
# echo "--name and either config or disk must be supplied!"
|
||||||
|
echo "--name and disk must be supplied!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO: wait for https://github.com/nix-community/disko/pull/211 to be merged
|
# TODO: wait for https://github.com/nix-community/disko/pull/211 to be merged
|
||||||
sudo nix run github:SuperSandro2000/disko/zpool-R -- --mode zap_create_mount ./disko-config.nix --debug \
|
sudo nix run github:SuperSandro2000/disko/zpool-R -- --mode zap_create_mount ./disko-config.nix --debug \
|
||||||
--arg disk '"'"$disk"'"' --arg name '"'"$name"'"' \
|
--arg disk '"'"$disk"'"' --arg name '"'"$name"'"' --arg useConfig "$useConfig" --arg config "$config" \
|
||||||
--arg enableCeph "$ceph" --arg enableLuks "$luks" --arg enableZfs "$zfs"
|
--arg enableCeph "$ceph" --arg enableLuks "$luks" --arg enableZfs "$zfs"
|
||||||
|
|
37
modules/disko.nix
Normal file
37
modules/disko.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
# none functional until https://github.com/nix-community/disko/issues/219 is resolved
|
||||||
|
|
||||||
|
{
|
||||||
|
options.disko = {
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
example = "chaos";
|
||||||
|
description = "Machine name used in eg zpool name.";
|
||||||
|
};
|
||||||
|
|
||||||
|
rootDisk = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
example = "/dev/sda";
|
||||||
|
description = "Path of the root disk.";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableCeph = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Wether to include a ceph on the root disk.";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableLuks = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Wether to encrypt the root disk.";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableZfs = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Wether to include a zfs on the root disk.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user