{"id":37213338,"url":"https://github.com/codethread/dotty","last_synced_at":"2026-01-15T00:36:45.861Z","repository":{"id":54799226,"uuid":"519493392","full_name":"codethread/dotty","owner":"codethread","description":"dotfiles manager","archived":true,"fork":false,"pushed_at":"2024-01-21T19:22:20.000Z","size":67,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-26T04:28:05.186Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codethread.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-07-30T11:05:14.000Z","updated_at":"2024-02-25T06:47:06.000Z","dependencies_parsed_at":"2024-06-21T09:54:24.081Z","dependency_job_id":"76151be1-1295-4887-8e76-84c0bfac5ef3","html_url":"https://github.com/codethread/dotty","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/codethread/dotty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codethread%2Fdotty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codethread%2Fdotty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codethread%2Fdotty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codethread%2Fdotty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codethread","download_url":"https://codeload.github.com/codethread/dotty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codethread%2Fdotty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28439816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:34:46.850Z","status":"ssl_error","status_checked_at":"2026-01-15T00:34:46.551Z","response_time":107,"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":[],"created_at":"2026-01-15T00:36:45.132Z","updated_at":"2026-01-15T00:36:45.846Z","avatar_url":"https://github.com/codethread.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotty\n\nA dead simple dotfiles manager.\n\nNot yet ready for public use, as it assumes you keep your dotfiles at `~/PersonalConfigs`, I need to make this configurable. Use at your own risk.\n\n## How it works\n\nHere's how I manage my dotfiles, and if you do the same, then dotty could be for you!\n\nI keep a [repo](https://github.com/codethread/PersonalConfigs) with all my dotfiles and `.config` folders, but it also has other bits and pieces to help get me up and running on any new machine. A subset of this looks like:\n\n```\n├── README.org\n├── Session.vim\n├── _colors+fonts\n│   ├── iterm_tokyonight_storm.itermcolors\n│   └── xterm-256color-italic.terminfo\n├── .config\n│   ├── kitty\n│   │   ├── kitty.conf\n│   │   └── open-actions.conf\n│   └── nvim\n│       ├── init.lua\n│       └── lua\n│           └── codethread\n│               ├── keymaps.lua\n│               └── lsp\n│                   ├── init.lua\n│                   └── settings\n│                       ├── tailwindcss.lua\n│                       └── tsserver.lua\n├── .dottyignore\n├── .gitconfig\n├── .gitignore\n├── .tmux.conf\n├── .stylua.toml\n├── .zshrc\n├── Brewfile\n├── README.org\n└── _packages\n    └── .piplist\n```\n\nDotty's approach is simple, it just symlinks this entire tree, one file at a time into my HOME directory - creating folders if needs be, without disturbing any existing folders.\n\nNot everything gets copied however, as I don't want everything cluttering my HOME, instead dotty will look for a `gitignore` and `gitignore_global` inside my dotfiles, and ignore any files listed there. It will also read from a `.dottyignore` file, which is a simple list of regexps, which can be used to omit any additional files. For example I have:\n\n```sh\n^.git$\n^_.*\n.gitignore$\nREADME\n^.stylua.toml$\n^.dottyignore$\n```\n\nFor me, a simple `_` prefix helps me keep track of what files and folders are not inteded to be linked. Not all files can follow that format, e.g `.stylua.toml`, hence `.dottyignore` allows more specific controls.\n\nIf a folder is marked as ignored, dotty will not traverse it\n\nWhen dotty runs, it stores a list of created files in a temporary file, and then each time it runs, it removes these files. Empty folders will be deleted as it goes, meaning you are free to move and rename files/folders in your dotfolder as you please, and when dotty next runs, your HOME directory will be left in a clean state, before all the files are symlinked back in.\n\nPersonally I like to integrate this flow with my editor, [see the wiki for an example](https://github.com/codethread/dotty/wiki/Editor-integration); this means dotty is run everytime I save or delete a file in my editor (and dotty is extremely fast, so there's no issue of slowdown)\n\n## Install\n\n```sh\nbrew tap codethread/homebrew-dotty\nbrew install dotty\n```\n\n## Usage\n\n```sh\ndotty help\n```\n\n## Contributing\n\n- run\n  ```sh\n  go run main.go \u003ccmd\u003e ...args\n  # e.g.\n  go run main.go setup --dry-run\n  ```\n- test\n  ```sh\n  go test ./...\n  ```\n- add command\n  ```sh\n  go install github.com/spf13/cobra-cli@latest\n  cobra-cli add \u003ccmd\u003e\n  ```\n\n### Releasing\n\ncheck the wiki\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodethread%2Fdotty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodethread%2Fdotty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodethread%2Fdotty/lists"}