docs(profiles): improved documentation

This commit is contained in:
Hanashiko 2025-05-23 23:36:50 +03:00
commit 1dc9e1fc90

View file

@ -1,25 +1,55 @@
# profiles plugin # profiles plugin
This plugin allows you to create separate configuration files for zsh based The `profiles` plugin allows you to automatically load machine-specific Zsh configuration files based on your fully qualified hostname.
on your long hostname (including the domain). This is especially useful if you work across multiple systems (e.g. personal laptop, work server, containers) and need different aliases, environament variables, or behaveors on each.
To use it, add profiles to the plugins array of your zshrc file: To use it, add `profiles` to the plugins array of your zshrc file:
```sh ```sh
plugins=(... profiles) plugins=(... profiles)
``` ```
It takes your `$HOST` variable and looks for files named according to the ## How It Works
domain parts in `$ZSH_CUSTOM/profiles/` directory. The plugin inspects the `$HOST` environament variable and attempts to source configuration files based on its domain hierarchy.
For a hostname like:
For example, for `HOST=host.domain.com`, it will try to load the following files, ```bash
in this order: HOST=host.domain.com
```
It fill try to source the following files in order of generality -> specificity:
```text ```text
$ZSH_CUSTOM/profiles/com $ZSH_CUSTOM/profiles/com
$ZSH_CUSTOM/profiles/domain.com $ZSH_CUSTOM/profiles/domain.com
$ZSH_CUSTOM/profiles/host.domain.com $ZSH_CUSTOM/profiles/host.domain.com
``` ```
Each files is sourced if it exists. More specific files override earlier general settings.
This means that if there are conflicting settings on those files, the one to take ## Directory Structure
precedence will be the last applied, i.e. the one in host.domain.com. Create your profile files under:
```bash
$ZSH_CUSTOM/profiles/
```
Example structure:
```bash
~/.oh-my-zsh/custom/
├── plugins/
│ └── profiles/
│ └── profiles.plugin.zsh
└── profiles/
├── com
├── domain.com
└── host.domain.com
```
## Example
For `HOST=dev.internal.example.com`, the plugin will attempts to load:
```bash
$ZSH_CUSTOM/profiles/com
$ZSH_CUSTOM/profiles/example.com
$ZSH_CUSTOM/profiles/internal.example.com
$ZSH_CUSTOM/profiles/dev.internal.example.com
```
## Tips
- Each profile file should contain valid Zsh code (e.g., `export`, `alias`, etc.).
- Later (more specific) profiles override settings from earlier (more general) ones.
- You can use this for environment-specific variables, host-specific tool paths, aliases, or functions.