• Stars
    star
    219
  • Rank 180,222 (Top 4 %)
  • Language
    Rust
  • License
    MIT License
  • Created about 4 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A dotfile manager with templating

Toml Bombadil - A dotfile manager written in rust

GitHub Actions workflow status Code coverage status AUR package
crates Conventional commits Repository license

Documentation Β· Installation Β· Configuration

A dotfile manager written in Rust

  • Dotfile template: define your dotfiles templates and link them as needed.
  • Dotfile profiles: create profiles for different machines and situations and combine them on the flow.
  • Installation hooks: run custom commands before and after installing your dotfiles.
  • Gpg encryption: add encrypted secrets to your dotfile configuration with gpg.

Explore Toml Bombadil's docsΒ Β β–Ά

example gif

Why another dotfile manager ?

I wrote Toml Bombadil because I kept changing my desktop environment: switching from i3 to sway, from sway to xfce, from xfce to gnome and back to sway. When you keep changing your working environment like this you end up with several problems:

  • Some symlinks will end up orphans.
  • Not every program you use support Xresources and you will most probably have to manually edit some themes/config.
  • When starting a fresh installation you will very likely need to adapt your existing dotfiles to your new machine.
  • It is a mess.

Toml Bombadil try to solve this with a simple addition to the symlink method used by other tools: instead of creating a symlink from a dotfile to the actual config path of a program, it will create a copy of it and symlink the copy. This additional step allow to use your original dotfile as a template and inject variables in the copy. You can have multiple value files in the same dotfile repository and change color scheme, or any value on the fly.

In addition, this is completely optional, you could start using Toml Bombadil only to generate symlinks and templatize your dot file progressively.

Installation

Arch Linux:

pacman -S toml-bombadil

Cargo:

cargo install toml-bombadil

Quickstart

See Docs -> Quickstart.

Shell completions

Command line completion scripts for several popular shells can be generated by running bombadil generate-completions. An example for generating a completion script and outputting it to a file for zsh would be bombadil generate-completions zsh > <somewhere on your $fpath>/_bombadil. Available shells are: bash, elvish, fish, and zsh.

Troubleshooting

If you get lost you can use bombadil get {resource_name} to see what is currently configured. Available resources are dots, hooks, path, profiles, vars, secrets.

Optionally you can display resources for a profile with the --profiles flag.

Example repositories

If you use Bombadil please submit an issue, or a PR to update this section, we will be happy to reference your dotfiles here!

Contributing

Found a bug, have a suggestion for a new feature? Please read the contribution guideline and submit an issue.

License

All the code in this repository is released under the MIT License, for more information take a look at the LICENSE file.

More Repositories

1

onagre

A general purpose application launcher for X and wayland inspired by rofi/wofi and alfred
Rust
354
star
2

illumination

A mardown renderer for nvim written with gtkrs and neovim-lib
Rust
84
star
3

stray

A system tray for eww
Rust
76
star
4

dotfiles

my dotfiles
Lua
65
star
5

unveil-rs

Unveil Rs is a tool to create presentations from markdown inspired by reveal.js, mdbook and zola.
Rust
49
star
6

speculoos

Fluent test assertions for Rust.
Rust
42
star
7

musicbrainz_rs

A wrapper around the musicbrainz API
Rust
38
star
8

gill

Gill is a free and open-source git-service based on ActivityPub and ForgeFed
Rust
37
star
9

sealed-test

A procmacro attribute to run your test in an isolated environment
Rust
24
star
10

lapce-java

Rust
17
star
11

vessel

A selfhostable soulseek client
Rust
12
star
12

freedesktop-icons

A rust freedestkop icon lookup implementation
Rust
7
star
13

manucure

HTML
4
star
14

pop-launcher-jetbrains-plugin

Launch your jetbrains IDE project from pop-launcher
Rust
4
star
15

ascii-nurse

A rust parsing crate for asciidoc
Rust
3
star
16

moins

A Keep It Simple Stupid pager crate
Rust
3
star
17

blog

HTML
3
star
18

lucene_query_builder_rs

A procmacro derive crate to create lucene query from rust struct.
Rust
3
star
19

omdb-spring-demo

A simple rest API showcasing Omdb content
Java
2
star
20

musicbrainz_browser

A showcase application for musicbrainz_rs
Rust
2
star
21

jetkcli

Rust
2
star
22

pop-launcher-stackoverflow

A pop-launcher plugin to browse stackoverflow posts
Rust
2
star
23

colo-rs

colortest in rust
Rust
2
star
24

kube-homelab

Jinja
2
star
25

wazemmes

Rust
1
star
26

archunit_rs

archunit_rs
Rust
1
star
27

godot_platformer_playground

Learing godot engine with a simple platformer project
GDScript
1
star
28

rusty-forkfork

A fork of rusty-fork
Rust
1
star
29

wzm

Rust
1
star
30

homebrew-tap

My own home brew formulas
Ruby
1
star
31

commit-spammer

Don't listen to people on twitter, If you need to show off your massive github contrib history, use this
Rust
1
star
32

godot_platformer

GDScript
1
star
33

pop-launcher-mpd

A MPD for pop-launcher to examplify pop-launcher plugin implementation
Rust
1
star
34

todo-or-boom

A Todo and Fixme linter
Rust
1
star
35

gilded_roses_python

Python
1
star