{"id":18147414,"url":"https://github.com/shellshape/dotrs","last_synced_at":"2026-02-16T23:37:32.639Z","repository":{"id":259759926,"uuid":"870217497","full_name":"shellshape/dotrs","owner":"shellshape","description":"A try on building a dotfiles manager which makes managing and synchronizing dotfiles across multiple systems as seamless and easy as possible.","archived":false,"fork":false,"pushed_at":"2024-11-01T21:58:53.000Z","size":73,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-21T05:55:18.037Z","etag":null,"topics":["cli","dotfile-manager","dotfiles","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shellshape.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-09T16:40:14.000Z","updated_at":"2024-10-29T21:08:47.000Z","dependencies_parsed_at":"2025-07-05T13:15:52.926Z","dependency_job_id":null,"html_url":"https://github.com/shellshape/dotrs","commit_stats":null,"previous_names":["shellshape/dotrs"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/shellshape/dotrs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Fdotrs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Fdotrs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Fdotrs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Fdotrs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shellshape","download_url":"https://codeload.github.com/shellshape/dotrs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellshape%2Fdotrs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29524334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T21:45:09.491Z","status":"ssl_error","status_checked_at":"2026-02-16T21:44:58.452Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","dotfile-manager","dotfiles","rust"],"created_at":"2024-11-01T22:06:29.526Z","updated_at":"2026-02-16T23:37:32.619Z","avatar_url":"https://github.com/shellshape.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotrs\n\nA try on building a dotfiles manager which makes managing and synchronizing dotfiles across multiple systems as\nseamless and easy as possible.\n\n\u003e [!Warning]\n\u003e This tool is currently under construction and thus neither feature-complete nor has it been field-tested enough\n\u003e to ensure a confident level of consistency and reliability.\n\n## Feature Roadmap\n\n- [x] Import dotfiles from a remote repository\n- [x] Apply dotfiles to home directory\n- [x] Update dotfiles to remote directory\n- [x] Service to automatically sync dotfiles with remote repository\n- [x] Profiles and templating support\n- [x] List currently tracked dotfiles (i.e. `dotrs ls`)\n- [ ] Value encryption in profiles\n\n## Installation\n\nYou can install dotrs either by downloading the precompiled binaries for your system configuration from the\n[**releases page**](https://github.com/shellshape/dotrs), or by installing it from source by using cargo install.\n\n```bash\ncargo install dotrs\n```\n\nTo be able to properly use the `dotrs cd` command, you can use the [`bin/wrapper-bash.sh`](bin/wrapper-bash.sh) script.\nSimply download it to your system and source it in your `.profile`.\n\n```bash\ncurl -Lo /usr/local/bin/dotrs-wrapper.sh \\\n    \"https://raw.githubusercontent.com/shellshape/dotrs/refs/heads/main/bin/wrapper-bash.sh\"\necho \"source /usr/local/bin/dotrs-wrapper.sh\" \u003e\u003e \"$HOME/.profile\"\n```\n\n### Service Setup\n\nThe service is integrated into the same binary as the CLI and can simply be started with the `dotrs start-service`\ncommand. Configuration for the service can be passed wither via command line parameters or via environment variables.\nSee `dotrs start-service --help` for more information.\n\nIn the [service](./service) directory, you can find some configuration examples to run the dotrs service using systemd\nor launchd (macOS).\n\n## Concept\n\n### CLI Tool\n\ndotrs uses a central Git repository as reference to share and synchronize dotfiles across your systems. You can import\n_(or simply point dotrs via the config to an already cloned repository)_ a repository of dotfiles. These are stored in\na _stage_ directory. There, you can edit and modify your dotfiles and templates. From there, with the `apply` command,\nthe templates are processed and the dotfiles are copied to your home directory. With the `pull` command, you can update\nyour stage from the upstream repository. With the `update` command, you can commit your changes in the stage and push\nthem to the upstream repository.\n\n### Service Module\n\nBut because we are all lazy and forget to actively pull, commit and sync our stuff, dotrs tries to do all that for you\nautomatically with the provided service module, which is directly integrated into the tool and can be started with the\n`start-service` command. _Example service configuration is also available in the [service/](service/) directory._ The\nservice watches the stage directory for changes and applies them automatically to your home directory. Also, after a\ndebounce period, changes are automatically committed and pushed from the stage to the upstream repository. Also,\nperiodically, the service pulls changes from the upstream repository into the stage directory and applies them, so that\nyour dotfiles are always up-to-date across devices.\n\n### Profiles\n\ndotrs features profiles and templating. You can create profiles by creating a `.dotrs-profiles` directory in your dotfiles\nrepository. There, you can create a `\u003cprofile-name\u003e.yaml` file, which can be applied on your dotfiles with the\n`dotrs apply --profile \u003cprofile-name\u003e` command. Profile files contain variables which then are substituted into your dotfiles\nusing the [Handlebars](https://handlebarsjs.com/) templating language. \n\n\u003e [!Note]\n\u003e The Rust implementation of handlebars used in this project only supports a subset of handlebars. Please refer to the\n\u003e [handlebars-rust](https://crates.io/crates/handlebars) crate documentation for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellshape%2Fdotrs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshellshape%2Fdotrs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellshape%2Fdotrs/lists"}