{"id":15460939,"url":"https://github.com/johnnymo87/dotfiles","last_synced_at":"2026-03-09T13:44:19.270Z","repository":{"id":72028695,"uuid":"394666645","full_name":"johnnymo87/dotfiles","owner":"johnnymo87","description":"My bash, tmux, and vim dotfiles","archived":false,"fork":false,"pushed_at":"2025-02-24T02:59:06.000Z","size":120,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-15T23:12:10.553Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Vim Script","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/johnnymo87.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":"2021-08-10T13:34:38.000Z","updated_at":"2025-02-24T02:59:09.000Z","dependencies_parsed_at":"2023-11-26T18:26:22.780Z","dependency_job_id":"c39803ad-ff70-4a7a-b052-fcef92827f6a","html_url":"https://github.com/johnnymo87/dotfiles","commit_stats":{"total_commits":95,"total_committers":4,"mean_commits":23.75,"dds":"0.052631578947368474","last_synced_commit":"a9d04369566f727ebecbcb1372f83b5895cf461b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnnymo87%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnnymo87%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnnymo87%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnnymo87%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnnymo87","download_url":"https://codeload.github.com/johnnymo87/dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249167448,"owners_count":21223506,"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":[],"created_at":"2024-10-01T23:40:20.377Z","updated_at":"2026-03-09T13:44:14.249Z","avatar_url":"https://github.com/johnnymo87.png","language":"Vim Script","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotfiles\n[My old dotfiles ran vim in docker](https://github.com/johnnymo87/dev-box), but now I'm going with the traditional route of installing everything locally.\n\nMy dotfiles mostly deal with three things: vim, tmux, and bash. See [the \"Adding new things\" section](adding-new-things) for more detail about how I manage the files for these things.\n\n## Installation\nUse the OS's recommended package manager to install or update everything mentioned below.\n\n1. If on a mac, [install homebrew](https://brew.sh/) for use as a package manager.\n\n1. Upgrade to the latest version of bash.\n\n1. Install git if it doesn't already exist.\n\n1. [Generate a new SSH key for GitHub](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) and then [add it to GitHub](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).\n\n1. Because this repository uses git submodules, clone it recusively: `git clone --recurse-submodules git@github.com:johnnymo87/dotfiles.git`. Then `cd dotfiles`.\n\n1. Symlink the necessary files to `~`.\n   ```\n   for x in .bash_profile .bashrc .bashrc.d .config/nvim .gitconfig .gitignore_global .tmux.conf .tmux; do ln -sf $(pwd)/$x ~/$x; done\n   ```\n\n1. Install tmux.\n\n1. Install vim.\n\n1. Install ripgrep for faster grepping with [ag.vim](https://github.com/rking/ag.vim).\n\n1. Finish installing [YouCompleteMe](https://github.com/ycm-core/YouCompleteMe).\n   * Install prerequisites, follow [the instructions specific to your operating system](https://github.com/ycm-core/YouCompleteMe)\n   * Compile YouCompleteMe\n     ```\n     cd .vim/pack/foo/start/YouCompleteMe\n     git pull --recurse-submodules origin master\n     python3 install.py --all --verbose\n     ```\n\n1. Install [direnv](https://github.com/direnv/direnv) or delete `.bashrc.d/direnv.bashrc`.\n\n1. Install [pyenv](https://github.com/pyenv/pyenv) or delete `.bashrc.d/py.bashrc`.\n   * For data science things, consider installing [miniconda](https://docs.conda.io/en/latest/miniconda.html) as well. After installing, run `conda init`. This will modify some general rc files (e.g. `.bash_profile`). Relocate these changes to `.bashrc.d/conda.private.bashrc`. (This configuration is shell- and installation-specific, so we don't check it into version control.)\n\n1. Install [rbenv](https://github.com/rbenv/rbenv) or delete `.bashrc.d/rb.bashrc`.\n\n1. Install rust or delete `.bashrc.d/rust.bashrc`.\n   ```\n   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n   ```\n1. For Elixir:\n   * [Install asdf](https://asdf-vm.com/guide/getting-started.html).\n   * Install Elixir with asdf.\n     ```\n     asdf plugin add elixir\n     asdf install elixir latest\n     ```\n   * Install Erlang with asdf.\n     ```\n     asdf plugin add erlang\n     asdf install erlang latest\n     ```\n   * Install mix.\n     ```\n     mix local.hex\n     ```\n\n1. For a prettier shell prompt, install one of these [Nerd Fonts](https://www.nerdfonts.com/font-downloads) and [Starship](https://starship.rs/).\n   * E.g. I'm currently using `font-fira-code-nerd-font`.\n\n## Adding new things\n### For vim\nI use Vim's built-in package management, see `:help packages`. I submodule all vim plugins in `.vim/pack/foo/start/`. So to add a new vim plugin, do:\n```\ngit submodule add \u003cgit@github ...\u003e .vim/pack/foo/start/my-new-vim-plugin\n```\nTo initialize existing submodules (for example, if new ones appear after getting a fresh checkout from `origin`):\n```\ngit submodule update --init --recursive\n```\n\n### For tmux\nI use [`tpm`](https://github.com/tmux-plugins/tpm) for tmux plugins. So to add a new plugin, simply add a `set -g @plugin '...'` reference to the top of the `.tmux.conf` file, and press `prefix` + \u003ckbd\u003eI\u003c/kbd\u003e (capital i, as in **I**nstall) to fetch the plugin.\n\n### For bash\nNew `*.bashrc` files need to be in the `.bashrc.d` directory, and need to be executable, so do `chmod +x .bashrc.d/*.bashrc` after adding a new one.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnnymo87%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnnymo87%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnnymo87%2Fdotfiles/lists"}