Consistent Linux configuration : desktop, server, ...
Go to file
xdrm-brackets aa609561d5 create common configuration format interface 2018-11-06 18:01:36 +01:00
cnf create common configuration format interface 2018-11-06 18:01:36 +01:00
pkg create common package-manager interface 2018-11-06 17:56:44 +01:00
LICENSE update license | readme barebone 2018-11-06 13:15:48 +01:00
README.md add build file example 2018-11-06 17:17:39 +01:00

README.md

| nix-amer |

name:        nix-amer
version:     0.1.0
description: Configuration automation tool
author:      xdrm-brackets

Need to automate the setup of your linux server or desktop ? This tool is made for you.

[TOC]


I. Build Format

Your whole setup remains in 1 only build file. Each line contains one instruction, the list of instructions is listed below.

1) package management

These instructions allow you to interact with the package system available on your system.

ins <packages>

Install the listed packages. If more than one, use spaces to separate package names.

upd

Update/upgrade your system.

del <packages>

Remove the listed packages. If more than one, use spaces to separate package names.

3) update configuration files

This instruction allow you to update configuration files without the need of an editor and in a developer-readable manner.

cnf <expr> <content>

Update a configuration file where <expr> is a dot-separated human-readable path expression and <content> is a string or a file. If a string is given, it will override/add the field ; if a file is given the configuration file will be replaced by it.

cnf <expr>

Remove a configuration field matching the <expr> path.

4) service management

These instructions allow you to interact with the service system (cf. systemd).

ser [enable|start|stop|restart|reload] <services>

Perform the action on services. If more than one, use spaces to separate service names.

5) custom scripts

These instructions allow you to use custom scripts for complex operations.

run <script>

Execute the <script> file.


II. Path Expressions

The syntax is pretty fast-forward, it uses 3 levels to find your configuration line : subject@alt.field.

Field Description Example
subject The name of the program to configure. Available program names are listed in this table. sshd, httpd, nginx
alt Alternative file if there is more than one for a package. If omitted it will default to the main configuration file. httpd@main, http@ports
field Field is a dot-separated chain of strings that match with a configuration field. If omitted, the <value> will just be added at the end of the configuration file. In the same way if the field does not point to a raw field but a parent or group containing fields, the <value> will be added at the end. sshd.AllowGroups, nginx.http.gzip

Example

myserver.build

sys name    ubuntu #
sys version 18.4   # required to choose which package-manager to use
sys arch    amd64  #

upd
ins nginx ssh sslh

cnf nginx.http.gzip           on
ser enable nginx
ser start nginx

cnf sshd.PermitRootLogin      no
cnf sshd.PermitEmptyPasswords no
cnf sshd.StrictModes          yes
cnf sshd.Port                 22
ser enable sshd
ser enable ssh

cnf sslh.RUN                  yes
cnf sslh.DEAMON_OPTS          "--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:44300 --pidfile /var/run/sslh/sslh.pid"
ser enable sslh
ser start sslh