{"id":13835714,"url":"https://github.com/z0rc/dotfiles","last_synced_at":"2025-07-10T10:30:53.913Z","repository":{"id":1843348,"uuid":"2767925","full_name":"z0rc/dotfiles","owner":"z0rc","description":"Personal configuration for zsh, vim, tmux and other tools","archived":false,"fork":false,"pushed_at":"2024-10-24T15:31:38.000Z","size":4785,"stargazers_count":60,"open_issues_count":0,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-10-24T20:09:55.972Z","etag":null,"topics":["dotfiles","tmux-configuration","tmux-plugins","vim-plugins","vimrc","xdg","zsh-plugins","zshrc"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"HubPress/hubpress.io","license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/z0rc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2011-11-13T19:37:21.000Z","updated_at":"2024-10-24T15:31:42.000Z","dependencies_parsed_at":"2023-01-14T11:01:00.883Z","dependency_job_id":"ef848280-6dca-442d-8387-e67a0bdefefd","html_url":"https://github.com/z0rc/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/z0rc%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0rc%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0rc%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0rc%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/z0rc","download_url":"https://codeload.github.com/z0rc/dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225632943,"owners_count":17499890,"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","tmux-configuration","tmux-plugins","vim-plugins","vimrc","xdg","zsh-plugins","zshrc"],"created_at":"2024-08-04T14:01:10.583Z","updated_at":"2025-07-10T10:30:53.899Z","avatar_url":"https://github.com/z0rc.png","language":"Shell","readme":"# Zero Home Presence Dotfiles\n\n## License\n\n[WTFPL](COPYING)\n\n## There are many like it, but this one is mine\n\nThis repository contains tools and configurations I use in the shell. It\nincludes no graphical configurations, making it usable on servers and personal\nworkstations. It has been battle-tested on macOS and various Linux\ndistributions, including Debian, Ubuntu, CentOS, and even WSL.\n\nI'm a big fan of the [XDG Base Directory\nSpecification](http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html)\nand organize my dotfiles in a way that they don't clutter the `$HOME`\ndirectory. I have reduced the files required in `$HOME` to a single `.zshenv`;\neverything else goes under standard XDG paths or is launched via aliases.\nAdditionally, if you have root permissions, you can install dotfiles with [zero\nhome presence](#zero-home-presence).\n\n## Features\n\n* Extensive Zsh [configuration](zsh/rc.d) and [plugins](zsh/plugins), including:\n  * [powerlevel10k](https://github.com/romkatv/powerlevel10k) prompt\n  * [additional completions](https://github.com/zsh-users/zsh-completions)\n  * [async autosuggestions plugin](https://github.com/zsh-users/zsh-autosuggestions)\n  * [syntax highlighting plugin](https://github.com/zsh-users/zsh-syntax-highlighting)\n  * [autoenv plugin](https://github.com/Tarrasch/zsh-autoenv)\n  * [autopair plugin](https://github.com/hlissner/zsh-autopair)\n  * [clean Zsh implementation of `z`](https://github.com/agkozak/zsh-z)\n* Vim [configuration](vim/vimrc) and [plugins](vim/pack)\n* Neovim [configuration](nvim/init.lua) and [plugins](nvim/plugins)\n* Tmux [configuration](tmux/tmux.conf) and [plugins](tmux/plugins)\n* Other configurations:\n  * [Midnight Commander](configs/mc.ini)\n  * [ranger](configs/ranger)\n  * [quilt](configs/quiltrc)\n  * [Git](configs/gitconfig)\n  * [htop](configs/htoprc)\n* Handy [utilities](tools), including:\n  * [fzf](https://github.com/junegunn/fzf)\n  * [spark](https://github.com/holman/spark) to draw bar charts right in the console\n  * [diff-so-fancy](https://github.com/so-fancy/diff-so-fancy) for a much better git diff layout\n  * [git-extras](https://github.com/tj/git-extras) additional helpers for Git\n* [Environment wrappers](env-wrappers) for multiple programming languages:\n  * [goenv](https://github.com/syndbg/goenv)\n  * [jenv](https://github.com/jenv/jenv)\n  * [luaenv](https://github.com/cehoffman/luaenv)\n  * [nodenv](https://github.com/nodenv/nodenv)\n  * [phpenv](https://github.com/phpenv/phpenv)\n  * [plenv](https://github.com/tokuhirom/plenv)\n  * [pyenv](https://github.com/yyuu/pyenv)\n  * [rbenv](https://github.com/rbenv/rbenv)\n\n## Installation\n\n\u003e [!WARNING]\n\u003e I'm in process on switching to Neovim. Vim configuration isn't maintained\n\u003e anymore, might be removed in future.\n\n### Requirements\n\n* `zsh` version 5.9 or newer is strongly recommended\n* `git` all external components are added as git submodules\n\n### Recommended\n\n* `make` (optional: required to install git helpers)\n* `perl` (optional: used by diff-so-fancy)\n* [`fd`](https://github.com/sharkdp/fd) (optional: will be used in fzf by\n  default, if present)\n* [`rg`](https://github.com/BurntSushi/ripgrep) or\n  [`ag`](https://github.com/ggreer/the_silver_searcher) (optional: will be used\n  in fzf by default, if present)\n* [`bat`](https://github.com/sharkdp/bat) (optional: will be used in fzf by\n  default, if present)\n\n### Location\n\nDotfiles can be installed in any directory, but probably somewhere under\n`$HOME`. Personally, I use `$HOME/.local/dotfiles`. The installation is simple:\n\n```shell\ngit clone https://github.com/z0rc/dotfiles.git \"$HOME/.local/dotfiles\"\n$HOME/.local/dotfiles/deploy.zsh\nchsh -s /bin/zsh\n```\n\nThe [deployment script](deploy.zsh) helps set up all required symlinks after\nthe initial clone. It also adds a cron job to pull updates every midnight and\nserves as a post-merge git hook, so you don't have to worry about updating\nsubmodules after a successful pull.\n\n## Zero Home Presence\n\nIt's possible to install dotfiles without creating a `~/.zshenv` symlink. To do\nso, set the environment variable `ZDOTDIR` to `\u003cinstallation dir\u003e/zsh`, e.g.,\n`$HOME/.local/dotfiles/zsh`. This variable should be set very early in the login\nprocess, before zsh starts sourcing the user's `.zshenv`. One possible option is\nto add:\n\n```sh\nexport ZDOTDIR=\"$HOME/.local/dotfiles/zsh\"\n```\n\ninto `/etc/zsh/zshenv`. Alternatively, you can set it with a PAM environment\nmodule.\n\n## Neovim Version\n\nNeovim configuration is tested with latest released Neovim version only. At the\nmoment of writing it's version 0.11.0.\n\n## Vim Version\n\nVim 9.1 or higher is required to support the XDG Base Directory Specification.\nTo use all bundled vim plugins, install vim with Python and Ruby support\nbuilt-in.\n\n## Configuration\n\n### Git Configuration\n\nUpdate `~/.config/git/local/user` with your email and name. It should look like\nthis:\n\n```ini\n[user]\n    email = jdoe@example.com\n    name = John Doe\n```\n\nYou can also add additional configurations in `~/.config/git/local/stuff`.\n\n### Zsh Configuration\n\nNote that Zsh configuration skips every global configuration file except\n`/etc/zsh/zshenv`.\n\nYou can add your local configuration into `$ZDOTDIR/env.d/9[0-9]_*` and\n`$ZDOTDIR/rc.d/9[0-9]_*`. The difference is that `env.d` is sourced always,\nwhile `rc.d` is sourced only in interactive sessions.\n\nAdditionally, `$ZDOTDIR/.zlogin` and `$ZDOTDIR/.zlogout` are available for\nmodifications, though they are missing by default.\n\n### Neovim Configuration\n\nLocal configuration can be added to:\n\n* `$DOTFILES/nvim/init/0[1-9]_*` (like `01_local.lua`) to load after default\n  options, but before any plugin.\n* `$DOTFILES/nvim/init/9[0-9]_*` (like `99_local.vim`) to load after plugins.\n\n### Vim Configuration\n\nAdd your local configuration to `$DOTFILES/vim/vimrc.local`.\n\n### Local Paths\n\nLocal binaries can be placed in `$HOME/.local/bin`; it's added to `PATH` by\ndefault. Man pages can be placed in `$XDG_DATA_HOME/man`.\n\n### Lazy \\*env\n\nPyenv and similar wrappers are lazy-loaded, meaning they won't be initialized\nat shell start. Activation occurs on the first execution. Check the output of\n`type -f pyenv` in the shell and the\n[implementation](zsh/rc.d/11_many_env.zsh). Because of this, files like\n`.python-version` won't work as expected; it's recommended to use `autoenv.zsh`\nto explicitly activate the needed environment.\n\n### Ignore Config Files Changes Locally\n\nMidnight Commander is quite volatile in terms of writing to its configuration\nfile. Running `mc` with different screen sizes results in updating the panel\nsize value in `mc.ini`. The same goes for `htop`.\n\nTo ignore local changes to configuration files, you can do:\n\n```sh\ngit update-index --assume-unchanged configs/mc.ini\n```\n\nTo restore git tracking of those files, use:\n\n```\ngit update-index --no-assume-unchanged configs/mc.ini\n```\n","funding_links":[],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz0rc%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fz0rc%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz0rc%2Fdotfiles/lists"}