Parse a base system config if it exists.
This commit is contained in:
parent
8af1cd0fb4
commit
a5573f7097
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
|
|
||||||
"system": {
|
"system": {
|
||||||
|
"base": "alpine",
|
||||||
"packages": [
|
"packages": [
|
||||||
"tmux", "vim", "ripgrep",
|
"tmux", "vim", "ripgrep",
|
||||||
"go"
|
"go"
|
||||||
|
|
24
main.go
24
main.go
|
@ -20,6 +20,7 @@ type Config struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type SystemConfig struct {
|
type SystemConfig struct {
|
||||||
|
Base string
|
||||||
Packages []string
|
Packages []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,9 +45,12 @@ type ServiceConfig struct {
|
||||||
func main() {
|
func main() {
|
||||||
var err error
|
var err error
|
||||||
var config Config
|
var config Config
|
||||||
|
var systemConfig Config
|
||||||
|
|
||||||
|
// Read user config file
|
||||||
file, err := os.ReadFile("goolinux.json")
|
file, err := os.ReadFile("goolinux.json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
fmt.Println("Cannot read user config file")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -57,6 +61,26 @@ func main() {
|
||||||
return
|
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
|
// Parse services
|
||||||
for name, service := range config.Services {
|
for name, service := range config.Services {
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
|
|
13
services/alpine.json
Normal file
13
services/alpine.json
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
system: {
|
||||||
|
base: "alpine",
|
||||||
|
packages: [],
|
||||||
|
}
|
||||||
|
|
||||||
|
services: {
|
||||||
|
ssh: { enable: "true" },
|
||||||
|
firewall: { enable: "true" },
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,2 +1,4 @@
|
||||||
|
# https://fedoraproject.org/wiki/Changes/NetavarkNftablesDefault
|
||||||
|
|
||||||
[network]
|
[network]
|
||||||
firewall_driver="nftables"
|
firewall_driver="nftables"
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
# https://caddyserver.com/docs/caddyfile/options
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# https://caddyserver.com/docs/caddyfile/patterns
|
||||||
{{range .Config.proxy}}
|
{{range .Config.proxy}}
|
||||||
{{.domain}} {
|
{{.domain}} {
|
||||||
reverse_proxy localhost:{{.port}}
|
reverse_proxy localhost:{{.port}}
|
||||||
|
|
Loading…
Reference in a new issue