forked from clan/clan-core
clanModules: init single disk
This commit is contained in:
parent
be4628d235
commit
186784d0fd
@ -7,6 +7,7 @@
|
|||||||
ergochat = ./ergochat;
|
ergochat = ./ergochat;
|
||||||
localbackup = ./localbackup;
|
localbackup = ./localbackup;
|
||||||
localsend = ./localsend;
|
localsend = ./localsend;
|
||||||
|
single-disk = ./single-disk;
|
||||||
matrix-synapse = ./matrix-synapse;
|
matrix-synapse = ./matrix-synapse;
|
||||||
moonlight = ./moonlight;
|
moonlight = ./moonlight;
|
||||||
postgresql = ./postgresql;
|
postgresql = ./postgresql;
|
||||||
|
43
clanModules/single-disk/README.md
Normal file
43
clanModules/single-disk/README.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
---
|
||||||
|
description = "Configures partitioning of the main disk"
|
||||||
|
categories = ["disk-layout"]
|
||||||
|
required = true
|
||||||
|
---
|
||||||
|
# Primary Disk Layout
|
||||||
|
|
||||||
|
A module for the "disk-layout" category MUST be choosen.
|
||||||
|
|
||||||
|
There is exactly one slot for this type of module in the UI, if you don't fill the slot, your machine cannot boot
|
||||||
|
|
||||||
|
This module is a good choice for most machines. In the future clan will offer a broader choice of disk-layouts
|
||||||
|
|
||||||
|
The UI will ask for the options of this module:
|
||||||
|
|
||||||
|
`device: "/dev/null"`
|
||||||
|
|
||||||
|
# Usage example
|
||||||
|
|
||||||
|
`inventory.json`
|
||||||
|
```json
|
||||||
|
"services": {
|
||||||
|
"single-disk": {
|
||||||
|
"default": {
|
||||||
|
"meta": {
|
||||||
|
"name": "single-disk"
|
||||||
|
},
|
||||||
|
"roles": {
|
||||||
|
"default": {
|
||||||
|
"machines": ["jon"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"machines": {
|
||||||
|
"jon": {
|
||||||
|
"config": {
|
||||||
|
"device": "/dev/null"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
52
clanModules/single-disk/default.nix
Normal file
52
clanModules/single-disk/default.nix
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{ lib, config, ... }:
|
||||||
|
{
|
||||||
|
options.clan.single-disk = {
|
||||||
|
device = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "The primary disk device to install the system on";
|
||||||
|
# Question: should we set a default here?
|
||||||
|
# default = "/dev/null";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
boot.loader.grub.efiSupport = lib.mkDefault true;
|
||||||
|
boot.loader.grub.efiInstallAsRemovable = lib.mkDefault true;
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
type = "disk";
|
||||||
|
# This is set through the UI
|
||||||
|
device = config.clan.single-disk.device;
|
||||||
|
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02"; # for grub MBR
|
||||||
|
priority = 1;
|
||||||
|
};
|
||||||
|
ESP = {
|
||||||
|
size = "512M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
1
clanModules/single-disk/roles/default.nix
Normal file
1
clanModules/single-disk/roles/default.nix
Normal file
@ -0,0 +1 @@
|
|||||||
|
{ }
|
@ -8,5 +8,25 @@
|
|||||||
"tags": ["1", "2", "3"]
|
"tags": ["1", "2", "3"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"services": {}
|
"services": {
|
||||||
|
"single-disk": {
|
||||||
|
"default": {
|
||||||
|
"meta": {
|
||||||
|
"name": "single-disk"
|
||||||
|
},
|
||||||
|
"roles": {
|
||||||
|
"default": {
|
||||||
|
"machines": ["minimal-inventory-machine"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"machines": {
|
||||||
|
"minimal-inventory-machine": {
|
||||||
|
"config": {
|
||||||
|
"device": "/dev/null"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,6 @@ let
|
|||||||
) machinesFactsAttrs;
|
) machinesFactsAttrs;
|
||||||
in
|
in
|
||||||
filteredMachineFactAttrs;
|
filteredMachineFactAttrs;
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
inherit
|
inherit
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
This settings exists only for testing purpose to make the machine bootable
|
|
||||||
|
|
||||||
It serves as a gap close, until we have the required boot and filesystem modules ready for the inventory.
|
|
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"fileSystems": { "/": { "device": "/dev/null" } },
|
|
||||||
"boot": { "loader": { "grub": { "device": "/dev/null" } } }
|
|
||||||
}
|
|
@ -20,7 +20,6 @@ let
|
|||||||
runtimeDependencies = [ ];
|
runtimeDependencies = [ ];
|
||||||
|
|
||||||
testDependencies = pythonDependencies ++ runtimeDependencies ++ [ ];
|
testDependencies = pythonDependencies ++ runtimeDependencies ++ [ ];
|
||||||
|
|
||||||
in
|
in
|
||||||
python3.pkgs.buildPythonApplication {
|
python3.pkgs.buildPythonApplication {
|
||||||
name = "matrix-bot";
|
name = "matrix-bot";
|
||||||
|
Loading…
Reference in New Issue
Block a user