Merge pull request 'clanModules/state-version: init state-version' (#2077) from kenji/clan-core:state-version into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/2077
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
postgresql = ./postgresql;
|
||||
root-password = ./root-password;
|
||||
single-disk = ./single-disk;
|
||||
state-version = ./state-version;
|
||||
sshd = ./sshd;
|
||||
static-hosts = ./static-hosts;
|
||||
sunshine = ./sunshine;
|
||||
|
||||
7
clanModules/state-version/README.md
Normal file
7
clanModules/state-version/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
description = "Automatically generate the state version of the nixos installation."
|
||||
---
|
||||
|
||||
This module generates the `system.stateVersion` of the nixos installation automatically.
|
||||
|
||||
Options: [system.stateVersion](https://search.nixos.org/options?channel=unstable&show=system.stateVersion&from=0&size=50&sort=relevance&type=packages&query=stateVersion)
|
||||
@@ -1,7 +1,14 @@
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
var = config.clan.core.vars.generators.state-version.files.version or { };
|
||||
in
|
||||
{
|
||||
system.stateVersion = config.clan.core.vars.generators.state-version.files.version.value;
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf ((var.value or null) != null) {
|
||||
system.stateVersion = lib.mkDefault (lib.removeSuffix "\n" var.value);
|
||||
})
|
||||
|
||||
{
|
||||
clan.core.vars.generators.state-version = {
|
||||
files.version.secret = false;
|
||||
runtimeInputs = [ ];
|
||||
@@ -10,3 +17,5 @@
|
||||
'';
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
1
clanModules/state-version/roles/default.nix
Normal file
1
clanModules/state-version/roles/default.nix
Normal file
@@ -0,0 +1 @@
|
||||
{ }
|
||||
@@ -60,24 +60,24 @@ nav:
|
||||
- reference/clanModules/borgbackup.md
|
||||
- reference/clanModules/deltachat.md
|
||||
- reference/clanModules/dyndns.md
|
||||
- reference/clanModules/nginx.md
|
||||
- reference/clanModules/vaultwarden.md
|
||||
- reference/clanModules/ergochat.md
|
||||
- reference/clanModules/garage.md
|
||||
- reference/clanModules/golem-provider.md
|
||||
- reference/clanModules/heisenbridge.md
|
||||
- reference/clanModules/index.md
|
||||
- reference/clanModules/iwd.md
|
||||
- reference/clanModules/localbackup.md
|
||||
- reference/clanModules/localsend.md
|
||||
- reference/clanModules/matrix-synapse.md
|
||||
- reference/clanModules/heisenbridge.md
|
||||
- reference/clanModules/moonlight.md
|
||||
- reference/clanModules/mumble.md
|
||||
- reference/clanModules/nginx.md
|
||||
- reference/clanModules/packages.md
|
||||
- reference/clanModules/postgresql.md
|
||||
- reference/clanModules/root-password.md
|
||||
- reference/clanModules/single-disk.md
|
||||
- reference/clanModules/sshd.md
|
||||
- reference/clanModules/state-version.md
|
||||
- reference/clanModules/static-hosts.md
|
||||
- reference/clanModules/sunshine.md
|
||||
- reference/clanModules/syncthing-static-peers.md
|
||||
@@ -85,6 +85,7 @@ nav:
|
||||
- reference/clanModules/thelounge.md
|
||||
- reference/clanModules/trusted-nix-caches.md
|
||||
- reference/clanModules/user-password.md
|
||||
- reference/clanModules/vaultwarden.md
|
||||
- reference/clanModules/xfce.md
|
||||
- reference/clanModules/zerotier-static-peers.md
|
||||
- reference/clanModules/zt-tcp-relay.md
|
||||
|
||||
@@ -218,6 +218,37 @@ class ServiceSingleDisk:
|
||||
machines: dict[str, ServiceSingleDiskMachine] = field(default_factory = dict)
|
||||
|
||||
|
||||
@dataclass
|
||||
class StateVersionConfig:
|
||||
pass
|
||||
|
||||
@dataclass
|
||||
class ServiceStateVersionMachine:
|
||||
config: StateVersionConfig = field(default_factory = StateVersionConfig)
|
||||
imports: list[str] = field(default_factory = list)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ServiceStateVersionRoleDefault:
|
||||
config: StateVersionConfig = field(default_factory = StateVersionConfig)
|
||||
imports: list[str] = field(default_factory = list)
|
||||
machines: list[str] = field(default_factory = list)
|
||||
tags: list[str] = field(default_factory = list)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ServiceStateVersionRole:
|
||||
default: ServiceStateVersionRoleDefault
|
||||
|
||||
|
||||
@dataclass
|
||||
class ServiceStateVersion:
|
||||
meta: ServiceMeta
|
||||
roles: ServiceStateVersionRole
|
||||
config: StateVersionConfig = field(default_factory = StateVersionConfig)
|
||||
machines: dict[str, ServiceStateVersionMachine] = field(default_factory = dict)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Service:
|
||||
admin: dict[str, ServiceAdmin] = field(default_factory = dict)
|
||||
@@ -225,6 +256,7 @@ class Service:
|
||||
iwd: dict[str, ServiceIwd] = field(default_factory = dict)
|
||||
packages: dict[str, ServicePackage] = field(default_factory = dict)
|
||||
single_disk: dict[str, ServiceSingleDisk] = field(default_factory = dict, metadata = {"alias": "single-disk"})
|
||||
state_version: dict[str, ServiceStateVersion] = field(default_factory = dict, metadata = {"alias": "state-version"})
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
Reference in New Issue
Block a user