= Hermione
Competent magic for your config files and more
:toc: left
:icons: font
:source-highlighter: rouge
:rouge-style: thankful_eyes

Proudly written in Rust, Hermione is a package manager for your config files.

https://crates.io/crates/hermione/[image:https://img.shields.io/crates/v/hermione.svg[]]

WARNING: This is *highly* experimental software and while we've done everything we can to ensure that it won't eat your stuff alive, please don't use it to manage anything critical right now.

Are you tired of editing config files on your computer one by one? Do you wish you had an easy way to group related configs and install them on a computer? Well, Hermione is a config management tool for people who hate config management tools.

Packages are just git repos with a special `hermione.yml` file in them, which describes how config files should be installed. That's it.

.Hermione is
. Competent, with a great set of features planned for now and in the future.
. Careful, with sane defaults that aim to keep things working as they should.
. Fast and secure, with an implementation in Rust.
. Easy, relying on the established workflows of git and related tools.


== Installation

Currently only available via Cargo, the Rust build tool and package manager.

[source,bash]
....
$ cargo install -f hermione
....

How else would you like to install it? Homebrew on macOS? A Debian package? Nix? Just let us know!

== Getting started

You use Hermione to install packages of config files, try it out by installing `https://github.com/hermione-hub/sensibility[sensibility]`, our recommended package of default config files good for any Unix-like system.

[source,bash]
....
$ herm install https://github.com/hermione-hub/sensibility.git
....

== ToDo

There's plenty of work left to do on Hermione and we might never be done as long as we've got users.

* Package repository support.
* Package upgrade support.
* Better automated test suite.
** We need help with this one, so anyone skilled in writing tests for CLI utils should get in touch.
* Improved command-line interface UX.
* Improved error messages and more consistent output.
* Better package selection.
