https://github.com/charlesrocket/dfs
Config manager with a true two-way synchronization
https://github.com/charlesrocket/dfs
cli daemon dotfile git library myers reverse-translation template-engine
Last synced: 17 days ago
JSON representation
Config manager with a true two-way synchronization
- Host: GitHub
- URL: https://github.com/charlesrocket/dfs
- Owner: charlesrocket
- License: apache-2.0
- Created: 2025-08-18T16:14:09.000Z (11 months ago)
- Default Branch: trunk
- Last Pushed: 2026-06-13T13:29:06.000Z (24 days ago)
- Last Synced: 2026-06-13T15:22:31.296Z (24 days ago)
- Topics: cli, daemon, dotfile, git, library, myers, reverse-translation, template-engine
- Language: Zig
- Homepage: https://charlesrocket.github.io/dfs/
- Size: 651 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# `dfs`
[](https://github.com/charlesrocket/dfs/actions/workflows/ci.yml)
[](https://codecov.io/gh/charlesrocket/dfs)
This is a configuration (dotfiles) manager with a template engine and a true 2-way synchronization. It uses a `git` repository as a configuration source and mirrors its content into a destination directory (usually `$HOME`). Any changes in the rendered file are translated back into the template.
## Compilation
```sh
zig build --release=fast
```
## Usage
`dfs -h`
### Configuration
```zig
.{
.repository = "https://github.com/charlesrocket/dotfiles",
.source = "$HOME/src/dotfiles",
.target = "$HOME",
.logging = false,
.notifications = false,
.watcher = .auto,
.ignore_list = .{},
.tray = .{ .enabled = true, .icon = .bright },
}
```
### Template syntax
```
# TEST
val="{> if SYSTEM.hostname == target <}target_val{> else <}none{> endif <}"
{> if SYSTEM.os == freebsd <}
val="Foo"
{> elif SYSTEM.os == openbsd <}
val="Bar"
{> else <}
val="Zoot"
{> endif <}
```
## [Roadmap](https://github.com/users/charlesrocket/projects/8)