First Start Wizard¶
Running hods with a user that doesn’t have a
~/.hods/ directory yet, will start the wizard.
You can also start it from the menu at any time.
Pull existing configuration guides you through the setup of a new hods client:
Open the Settings window. (Configure your server and ssh-agent preferences.)
Start the SSH Agent (if enabled).
Pull the configuration file.
Open the Install Features window. (Select the features to install.)
Pull sources in installed features.
Start new configuration guides you through your first configuration from scratch:
Abort exits the wizard. You will be asked to start the SSH Agent.
This is the main screen of hods, the navigation and overview of your configuration.
Use the arrow keys to navigate and
enter to show/edit the selected item.
To switch to the menu press
The left column is the list of all your features (source groups).
The right column is the file tree of the selected source.
ato add files from your home directory to the selected directory.
Features and Sources are synchronized and updated in the order they are displayed. Use
(move down) and
F8 (move up) to rearrange them.
This is the remote ssh user that stores your configuration (
hods will synchronize features in its configuration
[user@]server:.hods/) with the local one. Leave this empty on your server user.
This is a proxy¶
Make the current instance of hods a proxy server.
If checked, pull and push will ignore the Installed flag of
your features and synchronize all sources. You can then use the current
server for other hods instances. Make sure to check Server is a proxy
on those clients that don’t have access to the internet.
This is unchecked by default.
Server is a proxy¶
This instance of hods sits behind a proxy and/or does not have access to all upstream git repositories.
If checked, git repositories will be synchronized with the configured server using rsync.
This is unchecked by default.
Forward synchronization to the proxy server.
If checked, hods will:
ssh to the server and run pull on it before running it locally and
ssh to the server and run push on it after running it locally
This setting is ignored if Server is a proxy is not checked.
This is checked by default.
The pull and push commands for your sources may require you to enter the password for your ssh key many times. To enter it only once you need a ssh-agent.
At every start hods looks for a running ssh-agent and a key to use. If not found, it starts an agent for the current session and/or adds your key.
There are 4 options to control this behaviour:
Start if not running
Ask to start if not running (This is the default)
Warn if not running
Do nothing disables the check. hods will not look for a running agent or start one in this mode.
The feature is a group of Sources to create different home directory configurations. Each user / home directory can select a different set of features to install.
It also provides shell-hooks to prepare or finalize the synchronization of its sources. They are only executed for installed features!
Enable this feature for the current user / home directory.
If checked, the sources in this feature will be:
downloaded from the server on Pull
used to synchronize the home directory of the current user and
uploaded to the server on Push
A proxy server (Server is a proxy) will always pull and push all features. You can still use this to keep the home directory of that user clean.
This is unchecked by default.
When you pull features that are unknown to the local configuration you’ll see this window. Select the features you want to install.
If Install by default is checked, the feature is pre-checked here.
By default, hods creates files in your home directory using its relative source path. In other words, the file tree of a source is considered the desired tree of your home directory. The default destination of the source itself is your home directory. Any file in it is created at the same relative location in your home directory. E.g.:
You can change the destination at any level. Each file and directory uses the destination of its parent directory by default.
It is skipped when synchronizing sources on the server since this would synchronize it with itself.
The source directory is a simple file container with some control over the files and directories it contains.
a on a directory shows this window.
Select the directories and files you want to add.
hods copies them into the directory you pressed
a on. On next update, they will be replaced
with symlinks and/or templates.
The source file configures each file in your sources.
The mode specifies how to apply the file to your home directory. There are 3 options:
ignore: Do not apply this file to the home directory.
link: Create a symlink in the home directory pointing to this file. (This is the default)
template: This file is a template. Render it to the home directory.
The destination is the relative path to create the symlink or template in your home directory.
By default, it uses the destination of its parent directory as a base. Configure it on the parent directory instead to change the destination of all of its children recursively.
The context variables consist of:
All Environment variables
Your own custom variables configured in Settings
Some information about the current hods installation and configuration:
A map (
dict) of all features in your configuration called
The File object to be rendered called
When you pull variables that are unknown to the local configuration you’ll see this window. Enter the values for your user or leave them empty to use the default values.
When everything is configured, its time to update your home directory.
hods shows a summary before adding or removing anything. Read it carefully!
Then, finally its time to update!
The pull and push actions synchronize the configuration and sources in your
directory with the configured Server.
The pull action in detail:
Download the configuration file from
If new features are found, show the Install Features window.
If new template variables are found, show the New Variables window.
For each installed feature:
Run its pre-pull hook.
Download/pull all of its sources.
Run its post-pull hook.
The push action in detail:
Upload the configuration file to
For each installed features:
Run its pre-push hook.
For each source:
If it’s a git repository with changes, run
git add --alland
git commit. (Opens an editor to list the changes and to change the commit message.)
Upload/push the source.
Run its post-push hook.