1
0
forked from clan/clan-core

Merge pull request 'Init single disk' (#1694) from hsjobeki/clan-core:hsjobeki-main into main

This commit is contained in:
clan-bot 2024-07-03 10:00:28 +00:00
commit 1dd4db0034
10 changed files with 118 additions and 10 deletions

View File

@ -7,6 +7,7 @@
ergochat = ./ergochat;
localbackup = ./localbackup;
localsend = ./localsend;
single-disk = ./single-disk;
matrix-synapse = ./matrix-synapse;
moonlight = ./moonlight;
postgresql = ./postgresql;

View File

@ -0,0 +1,42 @@
---
description = "Configures partitioning of the main disk"
categories = ["disk-layout"]
---
# 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"
}
}
}
}
}
}
```

View 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 = "/";
};
};
};
};
};
};
};
};
}

View File

@ -0,0 +1 @@
{ }

View File

@ -61,6 +61,7 @@ nav:
- reference/clanModules/moonlight.md
- reference/clanModules/postgresql.md
- reference/clanModules/root-password.md
- reference/clanModules/single-disk.md
- reference/clanModules/sshd.md
- reference/clanModules/static-hosts.md
- reference/clanModules/sunshine.md

View File

@ -8,5 +8,25 @@
"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"
}
}
}
}
}
}
}

View File

@ -59,7 +59,6 @@ let
) machinesFactsAttrs;
in
filteredMachineFactAttrs;
in
{
inherit

View File

@ -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.

View File

@ -1,4 +0,0 @@
{
"fileSystems": { "/": { "device": "/dev/null" } },
"boot": { "loader": { "grub": { "device": "/dev/null" } } }
}

View File

@ -20,7 +20,6 @@ let
runtimeDependencies = [ ];
testDependencies = pythonDependencies ++ runtimeDependencies ++ [ ];
in
python3.pkgs.buildPythonApplication {
name = "matrix-bot";