aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorMax Bossing <info@maxbossing.de>2025-07-15 14:41:26 +0200
committerMax Bossing <info@maxbossing.de>2025-07-15 14:41:26 +0200
commit75ed52cb761d90b5e5a96717a4d00ef57003994d (patch)
treed4464a446d3324105274101fe7a72d81b658960e /README.md
init
Diffstat (limited to 'README.md')
-rw-r--r--README.md41
1 files changed, 41 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8cadb89
--- /dev/null
+++ b/README.md
@@ -0,0 +1,41 @@
+If you are like me, you probably store your dotfiles in a git repo and symlink them into the right places. However, this
+always takes a considerable amount of time to do on a new system. In the past, I resorted to shell scripts to do my bidding,
+but that was often machine-specific, wouldn't allow me to configure multiple machines without significant hassle, and was
+generally a bit _clunky_.
+
+# The solution: `dots`
+
+`dots` is a machine-agnostic, fs-agnostic and structure-agnostic deployer for dotfiles stored in an arbitrary directory.
+Written in rust, it's :sparkles: _blazingly fast_ :sparkles: and easy to use.
+
+## dots.toml
+
+At the core, `dots` just symlinks arbitrary files and directories as specified by a configuration file. By default, `dots`
+will look for a `dots.toml` file in the current directory.
+
+Example `dots.toml`:
+```toml
+dots_dir = "/home/anon/dots" # If omitted, defaults to working directory
+
+[[dot]]
+src = "nvim" # Resolved against dots_dir
+dest = ".config/nvim" # Resolved against $HOME
+
+[[dot]]
+src = "fish"
+dest = ".config/fish"
+
+[[dot]]
+src = "tmux.conf"
+dest = ".tmux.conf"
+
+[[...]]
+```
+
+If you want to use a different file (for example a different machine but based on the same files), pass a path to the executable
+```bash
+dots some_file.dots.toml
+```
+
+## License
+This is licensed under the [MIT](LICENSE) license. \ No newline at end of file