{"id":25072532,"url":"https://github.com/cr0t/dotfiles","last_synced_at":"2025-04-14T22:03:01.696Z","repository":{"id":45663399,"uuid":"179367854","full_name":"cr0t/dotfiles","owner":"cr0t","description":"Personal set of dotfiles","archived":false,"fork":false,"pushed_at":"2025-04-12T20:37:03.000Z","size":1433,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T22:02:42.188Z","etag":null,"topics":["dotfiles","neovim","tmux","vim","vimrc"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/cr0t.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,"zenodo":null}},"created_at":"2019-04-03T20:47:36.000Z","updated_at":"2025-04-12T20:37:06.000Z","dependencies_parsed_at":"2023-01-23T10:30:28.566Z","dependency_job_id":"96d4e81a-dd6d-4431-b407-7013765d2dcf","html_url":"https://github.com/cr0t/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/cr0t%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cr0t%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cr0t%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cr0t%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cr0t","download_url":"https://codeload.github.com/cr0t/dotfiles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248968738,"owners_count":21191159,"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":["dotfiles","neovim","tmux","vim","vimrc"],"created_at":"2025-02-06T22:29:55.755Z","updated_at":"2025-04-14T22:03:01.688Z","avatar_url":"https://github.com/cr0t.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cr0t's dotfiles\n\nA set of configuration files I prefer to have across my computers.\n\n\u003e [!tip]\n\u003e\n\u003e On macOS consider to set keyboard repeat to the fastest values via console:\n\u003e\n\u003e ```console\n\u003e defaults write -g InitialKeyRepeat -int 10 # normal minimum is 15 (225 ms)\n\u003e defaults write -g KeyRepeat -int 1 # normal minimum is 2 (30 ms)\n\u003e ```\n\u003e\n\u003e [Source](https://apple.stackexchange.com/questions/10467/how-to-increase-keyboard-key-repeat-rate-on-os-x)\n\nSee [https://macos-defaults.com/](https://macos-defaults.com/) for more options\nthat we can control using the `default` command.\n\n## Installation\n\nThese files use \"symlink\" strategy, and it worked for many years on both macOS\nand Linux. `setup.sh` manages creation of the symlinks to various directories\nor directly to some files in the user home, so it is safe in most cases.\n\nClone the repo, link:\n\n```console\ngit clone https://github.com/cr0t/dotfiles.git ~/.dotfiles\n~/.dotfiles/setup.sh link\n```\n\nEnjoy!\n\n\u003e To clean up the links, run `~/.dotfiles/setup.sh clean`.\n\n### Brew Apps, Utilities, and Co.\n\nIn case of fresh machine installation, consider to run `brew bundle --no-lock`\ncommand in the ~/.dotfiles directory to install command line apps, utilities,\nand desktop applications.\n\nSee [`Brewfile`](Brewfile) for the apps.\n\n\u003e [!tip]\n\u003e\n\u003e Some of the apps (e.g., `chromedriver`) don't have all the signatures as\n\u003e modern macOS versions require. Right click and \"Open\" trick on the executable\n\u003e doesn't work anymore. We have to explicitly (and manually) let the macOS know\n\u003e that it's safe to run these binaries, for example like this:\n\u003e\n\u003e ```shell\n\u003e xattr -d com.apple.quarantine $(which chromedriver)\n\u003e ```\n\nAfter installation, (considering you're on the macOS) configure Karabiner elements to\nuse CapsLock as CTRL on all keyboards.\n\n\u003e [!note]\n\u003e\n\u003e ...note to self: consider to include `~/.config/karabiner` in the dotfiles.\n\n### Docker CLI and Colima\n\nAs we do not really need to use Docker Desktop (especially, because its license\nmight cost money in some cases), we use free CLI version. However, it cannot\nwork out-of-box and needs some _love_, or actually, **runtime**, for which we\nuse [Colima](https://github.com/abiosoft/colima). All of the packages we need\nare in the [`Brewfile`](Brewfile), but we need a manual touch to do the magic.\n\nSave this as `~/.docker/config.json`:\n\n```json\n{\n  \"auths\": {},\n  \"cliPluginsExtraDirs\": [\n    \"/opt/homebrew/lib/docker/cli-plugins\"\n  ],\n  \"credsStore\": \"osxkeychain\",\n  \"currentContext\": \"colima\"\n}\n```\n\nBefore running Docker-commands, run `colima start` and wait for VM to set up.\n\n\u003e [!tip]\n\u003e\n\u003e Don't forget to sign in to GitHub Registry (to push images there) by running:\n\u003e\n\u003e `docker login --username cr0t ghcr.io`\n\u003e\n\u003e Use a token with 'write:packages' scope as a password. You can generate one\n\u003e [here](https://github.com/settings/tokens).\n\nThis setup is based on this [blog post](https://dev.to/elliotalexander/how-to-use-docker-without-docker-desktop-on-macos-217m).\n\n## Neovim/Vim\n\nCheck [Neovim as asdf's plugin](#extra-neovim-as-asdfs-plugin) notes on how to\ninstall up-to-date version of Neovim in Ubuntu, for example.\n\nFollow this checklist:\n\n- Nerd Fonts (MesloLGS)\n- Install ASDF plugins and Elixir, Erlang, Node.js, and Ruby _(to allow setting\nup all the LSPs defined in Mason)_\n\n\u003e [!note]\n\u003e\n\u003e Please, refer to the [docs/NVIM.md](docs/NVIM.md) for details.\n\n## Configure `asdf`\n\nInstall all the plugins we will need:\n\n```console\nasdf plugin add erlang\nasdf plugin add elixir\nasdf plugin add nodejs\nasdf plugin add ruby\nasdf plugin add zig\n```\n\n…and the languages themselves:\n\n```console\nenv KERL_BUILD_DOCS=yes KERL_CONFIGURE_OPTIONS=\"--without-javac\" asdf install erlang 27.3\nasdf install elixir 1.18.3-otp-27\nasdf install nodejs 22.14.0\nasdf install ruby 3.4.2\nasdf install zig 0.14.0\n```\n\n\u003e [!note]\n\u003e\n\u003e These options for Erlang installation command will ensure building the docs,\n\u003e so we can use `h :rand.uniform` (and similar) commands during IEx sessions.\n\nNow we can set globally available (for the user, of course) languages versions:\n\n```console\necho \"erlang 27.3\" \u003e\u003e ~/.tool-versions\necho \"elixir 1.18.3-otp-27\" \u003e\u003e ~/.tool-versions\necho \"nodejs 22.14.0\" \u003e\u003e ~/.tool-versions\necho \"ruby 3.4.2\" \u003e\u003e ~/.tool-versions\necho \"zig 0.14.0\" \u003e\u003e ~/.tool-versions\n```\n\n### Extra: Neovim as `asdf`'s plugin\n\nConsider installing Neovim via `asdf` plugin.\n\nIn Ubuntu, for example, it allows installing stable version 0.8+ (apt's version\nis only ~0.7 at the moment of writing).\n\n```console\nasdf plugin add neovim\nasdf install neovim 0.10.0\nasdf set --home neovim stable\n```\n\n## Setup `.ssh`\n\nDon't forget to create the `~/.ssh` folder and set proper permissions:\n\n```console\nchmod 700 ~/.ssh\nchmod -R go= ~/.ssh\nchmod -w ~/.ssh/id_rsa*\nchmod -w ~/.ssh/id_ed*\n```\n\nSee examples and more information in the [`docs/SSH.md`](docs/SSH.md) file.\n\n## Directory `littles`\n\nContains a set of my tiny scripts, a variety of helpers, snippets, etc. Most of\nthem are pretty much for my personal needs. Read the source and, if you need,\ninstall them manually to the bin directory; or make them available in your\n`PATH` env variable, like this:\n\n```bash\nexport PATH=\"$PATH:~/.dotfiles/littles\"\n```\n\n\u003e **Local `littles`**\n\u003e\n\u003e By default, we set up `$PATH` to check `~/.local/bin` directory too. If you\n\u003e need to have some scripts available only on some particular machine (like\n\u003e temp scripts for your current projects) which you do not want to commit to\n\u003e this repo, put these scripts there.\n\n## Set Local Environment Variables\n\n`fish`'s alternative to `.bashrc` is located at `~/.config/fish/config.fish`.\nWe do not overwrite this file by these dotfiles, so it's totally local to a\nmachine.\n\nTo define a new variable we do something like that in this file:\n\n```fish\nif status is-interactive\n    set -x GITLAB_TOKEN 'glpat-***'\n    set -x KUBECONFIG \"$HOME/.kube/config-company:$HOME/.kube/config-homelab\"\n    set -x HOMEBREW_NO_ENV_HINTS 1\n    set -x EDITOR nvim\nend\n```\n\n## Extra\n\nCheck [`docs/EXTRA.md`](docs/EXTRA.md) for more notes about these dotfiles, or\n[`docs/KUBERNETES.md`](docs/KUBERNETES.md) for my personal k8s cheat sheet.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcr0t%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcr0t%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcr0t%2Fdotfiles/lists"}