mirror of
https://github.com/deadc0de6/dotdrop.git
synced 2026-02-07 00:45:38 +00:00
add meta profiles doc
This commit is contained in:
58
docs/howto/group-hosts.md
vendored
Normal file
58
docs/howto/group-hosts.md
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
# Group hosts in config and meta profiles
|
||||
|
||||
Let's consider the situation where you have multiple hosts from different distros and you
|
||||
want an easy way to structure your config file nicely but also simplify the use
|
||||
of templates (since multiple hosts in the same distro would share the same configs parts -
|
||||
or if branch in templates).
|
||||
|
||||
You define two types of profiles:
|
||||
|
||||
* **Meta profiles**: for example for distros it would be something like `os_arch`, `os_debian` and so on.
|
||||
These are never directly used for installing dotfiles but instead included by other profiles.
|
||||
* **Host profiles** (defaults to hostnames): the usual `home`, `office`, etc
|
||||
|
||||
Each *Host profile* would include a *meta profile* and inherit all its dotfiles as well as
|
||||
it variables. For example in the *meta profile* you would define variables like `distro: debian`
|
||||
that you could use in your templates with `{%@@ if distro == "debian" @@%}` to target all
|
||||
profiles that inherit from the same *meta profile*.
|
||||
|
||||
```yaml
|
||||
profiles:
|
||||
meta_base:
|
||||
dotfiles:
|
||||
- f_zshrc
|
||||
- f_zshrc
|
||||
os_arch:
|
||||
variables:
|
||||
distro: arch
|
||||
include:
|
||||
- meta-base
|
||||
os_debian:
|
||||
variables:
|
||||
distro: debian
|
||||
include:
|
||||
- meta-base
|
||||
home:
|
||||
include:
|
||||
- os_arch
|
||||
dotfiles:
|
||||
- f_vimrc
|
||||
office:
|
||||
include:
|
||||
- os_debian
|
||||
dotfiles:
|
||||
- f_something
|
||||
```
|
||||
|
||||
You then have the opportunity in your templates to do the following
|
||||
that would select the if branch for all profiles inheriting from
|
||||
a specific *meta profile*.
|
||||
```
|
||||
# zsh-syntax-highlighting
|
||||
# https://github.com/zsh-users/zsh-syntax-highlighting
|
||||
{%@@ if distro == "arch" @@%}
|
||||
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
{%@@ elif distro == "debian" @@%}
|
||||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
{%@@ endif @@%}
|
||||
```
|
||||
Reference in New Issue
Block a user