| Crates.io | falconf |
| lib.rs | falconf |
| version | 0.2.17 |
| created_at | 2025-07-02 14:07:44.763645+00 |
| updated_at | 2025-09-21 09:56:16.783014+00 |
| description | TODO description here |
| homepage | |
| repository | https://github.com/GideonBear/falconf |
| max_upload_size | |
| id | 1735103 |
| size | 175,212 |
Falconf is a tool to manage your personal Linux machine(s). It is an imperative alternative to Nix and Ansible, to make tweaking your computers seamless without needing to edit files in a specialized syntax. Falconf puts usability and speed of iteration before idempotency and correctness.
Falconf keeps track of changes done on top of your base Linux install, and syncs then across your machines.
Falconf can track configuration files, and run arbitrary commands. These changes are tracked and can be undone, and are synchronized with all your machines through a Git repository. The ultimate goal is to be able to bring a clean Linux install to your desired state with as few manual steps as possible, and to never have to tweak something manually on multiple machines. More things can be automated than you think!
# Using cargo-binstall:
cargo binstall falconf
# Using cargo:
cargo install falconf
You can also manually download the binary from the releases page, but that can't update itself (yet).
my-falconf. This repository can be private.falconf init --new <remote_url>, where <remote_url>
is the Git url of the remote.falconf init <remote_url>, then falconf sync.Any changes are automatically pulled from and pushed to the Git repository,
but not automatically executed. For that, use falconf sync.
Topgrade can also do this for you.
Let's say you just discovered duf, and want
to use it insteead of df. You add an alias alias df=duf to ~/.bash_aliases,
which is tracked with falconf add -f ~/.bash_aliases. You then run
falconf add -n apt install duf, which installs duf. When you then
run falconf sync on your other machine, it adds the alias to ~/.bash_aliases,
and installs duf.
If you decide you actually want to use a different tool, like
dysk, run falconf list to find the apt install duf
piece, and run falconf undo -n <piece id>, where <piece id> is the 8-digit hexadecimal
ID noted in brackets in the falconf list output. This automatically runs apt remove --autoremove duf
for you, and on your other machines, and marks the piece for deletion when every machine has.
This way you don't clutter your pieces with install and remove commands. You can then edit
~/.bash_aliases again, and run falconf add -n cargo binstall dysk. The next sync on the other
machine will then update ~/.bash_aliases, uninstall duf, and install dysk.
falconf add without --not-done-here (-n) will assume you've already ran the command
here. You can for example run any command, and then run falconf add !!. Your shell will expand !! to the
previous command you ran.The most similar tool to falconf is Ansible, but there are two main differences:
| Characteristic | Falconf | Nix | Ansible | Chezmoi | GNU Stow |
|---|---|---|---|---|---|
| Reproducible | ✅ | ✅ | ✅ | ✅ | ✅ |
| Idempotent design | ❌ | ✅ | ✅ | ✅ | ✅ |
| Run arbitrary idempotent commands | ✅ | ✅ | ✅ | ✅ | ❌ |
| Run arbitrary non-idempotent commands | ✅ | ❌ | ❌ | ❌ | ❌ |
| Works with your previous configuration | ✅ | ❌ | ✅ | ✅ | ✅ |
| Full functionality on all Linux distros | ✅ | ❌ | ✅ | ✅ | ✅ |
| Interact (run commands, add files) via CLI | ✅ | ❌ | ❌ | ❌ | ❌ |
| Edit arbitrary files | ✅ | ➖ | ✅ | ✅ | ✅ |
| Undo commands (with commands) | ✅ | ➖ | ➖ | ➖ | ❌ |
| Undo changes (automatically, without commands) | ✅ | ✅ | ➖ | ❌ | ❌ |
| Runs without Git installation | ✅ | ✅ | ✅ | ✅ | ✅ |
| Built-in synchronization | ✅ | ❌ | ❌ | ✅ | ❌ |
| dconf support (specific paths)* | ⏳ | ✅ | ✅ | ❌ | ❌ |
| Temporary one-time pieces | ⏳ | ❌ | ❌ | ❌ | ❌ |
| Watch configuration (files, dconf) | ⏳ | ❌ | ❌ | ❌ | ❌ |
| Secret management | ⏳ | ✅ | ✅ | ✅ | ❌ |
| Windows support | ⏳ | ❌ | ✅ | ✅ | ❌ |
| Topgrade integration | ⏳ | ✅ | ❌ | ✅ | ❌ |
| Self-updating | ⏳ | ✅ | ❌ | ✅ | ❌ |
| Machine-to-machine differences (templates) | ⏳ | ✅ | ✅ | ✅ | ❌ |
| Supports use on servers | ❌ | ✅ | ✅ | ❌ | ❌ |
| Made specifically for managing personal machines | ✅ | ✅ | ❌ | ✅ | ✅ |
| Also a package manager | ❌ | ✅ | ❌ | ❌ | ❌ |
| Extensive built-in support for specific programs | ❌ | ✅ | ❌ | ❌ | ❌ |
* Chezmoi supports syncing the entire dconf file via onchange scripts, but this is not always desired, because things like window positions are stored in there as well. Falconf supports syncing specific dconf paths natively.