Parse a base system config if it exists.

This commit is contained in:
root 2025-03-09 15:57:40 -04:00
parent 8af1cd0fb4
commit a5573f7097
5 changed files with 42 additions and 0 deletions

View file

@ -1,6 +1,7 @@
{
"system": {
"base": "alpine",
"packages": [
"tmux", "vim", "ripgrep",
"go"

24
main.go
View file

@ -20,6 +20,7 @@ type Config struct {
}
type SystemConfig struct {
Base string
Packages []string
}
@ -44,9 +45,12 @@ type ServiceConfig struct {
func main() {
var err error
var config Config
var systemConfig Config
// Read user config file
file, err := os.ReadFile("goolinux.json")
if err != nil {
fmt.Println("Cannot read user config file")
fmt.Println(err)
return
}
@ -57,6 +61,26 @@ func main() {
return
}
// Read system "base" config file if it exists
if config.System.Base != "" {
path := "services/" + config.System.Base + ".json"
file, err = os.ReadFile(path)
if err != nil {
fmt.Println("Cannot read system base config file")
fmt.Println(err)
return
}
err = hjson.Unmarshal(file, &systemConfig)
if err != nil {
fmt.Println(err)
return
}
// Merge base system config layer
mergo.Merge(&config, systemConfig, mergo.WithOverride)
}
// Parse services
for name, service := range config.Services {
var b strings.Builder

13
services/alpine.json Normal file
View file

@ -0,0 +1,13 @@
{
system: {
base: "alpine",
packages: [],
}
services: {
ssh: { enable: "true" },
firewall: { enable: "true" },
}
}

View file

@ -1,2 +1,4 @@
# https://fedoraproject.org/wiki/Changes/NetavarkNftablesDefault
[network]
firewall_driver="nftables"

View file

@ -1,6 +1,8 @@
# https://caddyserver.com/docs/caddyfile/options
{
}
# https://caddyserver.com/docs/caddyfile/patterns
{{range .Config.proxy}}
{{.domain}} {
reverse_proxy localhost:{{.port}}