{{ .Title }}
+ {{ with .Params.summary }}{{ . }}
{{ end }} + Read more +diff --git a/src/hugo.toml b/src/hugo.toml
index 53735bb..4172e70 100644
--- a/src/hugo.toml
+++ b/src/hugo.toml
@@ -6,4 +6,4 @@ uglyURLs = true
disableKinds = ["taxonomy", "term", "RSS", "sitemap"]
[params]
- description = "Enroll inspects Debian-like and RedHat-like Linux hosts and generates Ansible roles/playbooks from what it finds. Harvest → Manifest → Manage."
+ description = "Enroll inspects Debian-like and RedHat-like Linux hosts and generates Ansible, Puppet, or Salt manifests from what it finds. Harvest → Manifest → Manage."
diff --git a/src/static/schema/state.schema.json b/src/static/schema/state.schema.json
index d0bde52..a67cf64 100644
--- a/src/static/schema/state.schema.json
+++ b/src/static/schema/state.schema.json
@@ -117,6 +117,14 @@
"minLength": 1,
"type": "string"
},
+ "group": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "section": {
+ "minLength": 1,
+ "type": "string"
+ },
"version": {
"minLength": 1,
"type": "string"
@@ -364,6 +372,12 @@
},
"type": "array"
},
+ "section": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
"version": {
"type": [
"string",
@@ -390,6 +404,16 @@
"package": {
"minLength": 1,
"type": "string"
+ },
+ "has_config": {
+ "type": "boolean",
+ "default": true
+ },
+ "section": {
+ "type": [
+ "string",
+ "null"
+ ]
}
},
"required": [
@@ -571,6 +595,21 @@
"$ref": "#/$defs/UserEntry"
},
"type": "array"
+ },
+ "user_flatpaks": {
+ "additionalProperties": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/FlatpakInstall"
+ }
+ },
+ "type": "object"
+ },
+ "user_flatpak_remotes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/FlatpakRemote"
+ }
}
},
"required": [
@@ -652,6 +691,256 @@
"notes"
],
"type": "object"
+ },
+ "SysctlSnapshot": {
+ "additionalProperties": false,
+ "properties": {
+ "role_name": {
+ "const": "sysctl"
+ },
+ "managed_files": {
+ "items": {
+ "$ref": "#/$defs/ManagedFile"
+ },
+ "type": "array"
+ },
+ "parameters": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "notes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "role_name",
+ "managed_files",
+ "parameters",
+ "notes"
+ ],
+ "type": "object"
+ },
+ "FlatpakInstall": {
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1
+ },
+ "method": {
+ "type": "string",
+ "enum": [
+ "system",
+ "user"
+ ]
+ },
+ "remote": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "branch": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "arch": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "kind": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "enum": [
+ "app",
+ "runtime",
+ null
+ ]
+ },
+ "ref": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "user": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "home": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "source": {
+ "type": "string"
+ },
+ "from_url": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "name",
+ "method"
+ ],
+ "type": "object"
+ },
+ "FlatpakRemote": {
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1
+ },
+ "method": {
+ "type": "string",
+ "enum": [
+ "system",
+ "user"
+ ]
+ },
+ "url": {
+ "type": "string",
+ "minLength": 1
+ },
+ "user": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "home": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "method",
+ "url"
+ ],
+ "type": "object"
+ },
+ "SnapInstall": {
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1
+ },
+ "channel": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "revision": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "minimum": 0
+ },
+ "classic": {
+ "type": "boolean"
+ },
+ "devmode": {
+ "type": "boolean"
+ },
+ "dangerous": {
+ "type": "boolean"
+ },
+ "notes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "source": {
+ "type": "string"
+ },
+ "install_revision": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "FlatpakSnapshot": {
+ "additionalProperties": false,
+ "properties": {
+ "role_name": {
+ "const": "flatpak"
+ },
+ "system_flatpaks": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/FlatpakInstall"
+ }
+ },
+ "remotes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/FlatpakRemote"
+ }
+ },
+ "notes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "role_name"
+ ],
+ "type": "object"
+ },
+ "SnapSnapshot": {
+ "additionalProperties": false,
+ "properties": {
+ "role_name": {
+ "const": "snap"
+ },
+ "system_snaps": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/SnapInstall"
+ }
+ },
+ "notes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "role_name"
+ ],
+ "type": "object"
}
},
"$id": "https://enroll.sh/schema/state.schema.json",
@@ -762,6 +1051,15 @@
},
"firewall_runtime": {
"$ref": "#/$defs/FirewallRuntimeSnapshot"
+ },
+ "sysctl": {
+ "$ref": "#/$defs/SysctlSnapshot"
+ },
+ "flatpak": {
+ "$ref": "#/$defs/FlatpakSnapshot"
+ },
+ "snap": {
+ "$ref": "#/$defs/SnapSnapshot"
}
},
"required": [
diff --git a/src/themes/enroll-theme/layouts/news/list.html b/src/themes/enroll-theme/layouts/news/list.html
new file mode 100644
index 0000000..6c0783c
--- /dev/null
+++ b/src/themes/enroll-theme/layouts/news/list.html
@@ -0,0 +1,19 @@
+{{ define "main" }}
+{{ .Content | safeHTML }}
+ {{ . }}{{ .Title }}
+ {{ with .Params.summary }}