{"id":22135575,"url":"https://github.com/mfinelli/dotfiles","last_synced_at":"2026-05-09T00:37:51.537Z","repository":{"id":28127461,"uuid":"31626589","full_name":"mfinelli/dotfiles","owner":"mfinelli","description":"My configuration files","archived":false,"fork":false,"pushed_at":"2025-03-05T15:43:37.000Z","size":1081,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-05T16:38:04.944Z","etag":null,"topics":["ansible","dotfiles"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"exacity/deeplearningbook-chinese","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mfinelli.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}},"created_at":"2015-03-03T23:11:22.000Z","updated_at":"2025-01-10T23:07:37.000Z","dependencies_parsed_at":"2023-02-12T16:01:33.431Z","dependency_job_id":"d6f47ea8-8c71-4b74-a422-fa091536b3f3","html_url":"https://github.com/mfinelli/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfinelli%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfinelli%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfinelli%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfinelli%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mfinelli","download_url":"https://codeload.github.com/mfinelli/dotfiles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245249222,"owners_count":20584497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ansible","dotfiles"],"created_at":"2024-12-01T19:15:17.017Z","updated_at":"2026-05-09T00:37:51.530Z","avatar_url":"https://github.com/mfinelli.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# .dotfiles\n\nAll configuration is managed via [ansible](https://www.ansible.com).\n\nThis is slightly more challenging compared to our old\n[GNU Stow](https://www.gnu.org/software/stow/) approach as each file,\ndirectory, symlink, and template needs to be managed manually instead of just\nletting stow create a bunch of symbolic links but it allows greater control\nand ease-of-use for managing differences across systems and dealing with\nsecrets.\n\n## usage\n\n### setup\n\nYou must have the GPG key used for decrypting the vault (more information\nbelow) available before running the setup step below. If you're using using a\nyubikey to store the key material you're done as the setup script automatically\nloads the public keys necessary for it to work.\n\nIf you're keeping the private key material on the machine then you need to copy\nthe private key to the new machine and then run the following steps:\n\n```shell\ngpg --import ./path/to/key.asc\n```\n\nThen you need to edit the key to give it `ultimate` trust:\n\n```shell\ngpg --edit-key 36FDA306\n```\n\nThen enter `trust` and `5` to `ultimate`ly trust the key, and then `save` to\nexit.\n\nYou can verify success with\n\n```shell\ngpg --list-keys\n```\n\n### first run\n\nGet up and running by either cloning this repository and running, `run.bash`,\nor all-in-one:\n\n```shell\nbash -c \"$(curl -fsSL https://mfgo.link/dotfiles)\"\n```\n\n**N.B.** if you're intending to run the dotfiles on a remote server you need\nto forward your ssh agent with the public keys that you intend to write out\nunlocked (`ssh-add ~/.ssh/key`).\n\nThe initial installation will install the dotfiles into `$HOME/.dotfiles` and\nafterwards everything can be updated with `git pull` and `./run.bash`.\n\n### post-setup\n\nSome roles only install basic configuration but other steps are necessary.\nFor example to activate `atuin` (in the `zsh` role) you must run the `login`\ncommand. More information is available in the `zsh` role README.\n\n## notes\n\n### vault\n\nSensitive files are encrypted with ansible-vault. The vault password was\ninitialized like so:\n\n```shell\npwgen -cnsy 128 1 | gpg -ear 36FDA306 \u003e vault.asc\n```\n\nThe work-secret password was initialized like so:\n\n```shell\npwgen -cnsy 128 1 | gpg -ear 36FDA306 -r 4DA7BCBA \u003e work.asc\n```\n\n**N.B.** that to view encrypted variables (as opposed to full files) you will\nneed to have the [yq](https://github.com/mikefarah/yq) utility installed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmfinelli%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmfinelli%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmfinelli%2Fdotfiles/lists"}