{"id":20167651,"url":"https://github.com/iomz/dotfiles","last_synced_at":"2026-05-01T23:31:31.626Z","repository":{"id":167410440,"uuid":"641996188","full_name":"iomz/dotfiles","owner":"iomz","description":"My dotfiles","archived":false,"fork":false,"pushed_at":"2025-11-10T02:23:42.000Z","size":285,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-10T04:16:55.670Z","etag":null,"topics":["chezmoi","fzf","neovim","tmux","zinit","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iomz.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-17T15:38:56.000Z","updated_at":"2025-11-10T02:23:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"fcab495a-26a4-4d90-b24a-dd388603325b","html_url":"https://github.com/iomz/dotfiles","commit_stats":null,"previous_names":["iomz/dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iomz/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iomz%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iomz%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iomz%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iomz%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iomz","download_url":"https://codeload.github.com/iomz/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iomz%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32517087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["chezmoi","fzf","neovim","tmux","zinit","zsh"],"created_at":"2024-11-14T00:54:38.191Z","updated_at":"2026-05-01T23:31:31.615Z","avatar_url":"https://github.com/iomz.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Linux](https://img.shields.io/static/v1?style=for-the-badge\u0026message=Linux\u0026color=222222\u0026logo=Linux\u0026logoColor=FCC624\u0026label=)\n![macOS](https://img.shields.io/static/v1?style=for-the-badge\u0026message=macOS\u0026color=000000\u0026logo=macOS\u0026logoColor=FFFFFF\u0026label=)\n![Neovim](https://img.shields.io/static/v1?style=for-the-badge\u0026message=Neovim\u0026color=57A143\u0026logo=Neovim\u0026logoColor=FFFFFF\u0026label=)\n![Zsh](https://img.shields.io/static/v1?style=for-the-badge\u0026message=Zsh\u0026color=224466\u0026logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NzIiIGhlaWdodD0iNjcyIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjY3MiIgaGVpZ2h0PSI2NjAiIGZpbGw9Im5vbmUiIHZpZXdCb3g9Ijg5IDc2IDY3MiA2NzIiPjxnIHN0cm9rZT0iI2YxNWEyNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBzdHJva2Utd2lkdGg9IjMyLjE0NyIgZD0iTTQwMyAyMzAgMTA0LjUgNTg1LjUiLz48Y2lyY2xlIGN4PSIxODAuMjE2IiBjeT0iMzA5LjcxNiIgcj0iNjEuNjE0IiBzdHJva2Utd2lkdGg9IjUwLjIwNCIvPjxjaXJjbGUgY3g9IjMyNi4yNjUiIGN5PSI1MDUuOTciIHI9IjYxLjYxNCIgc3Ryb2tlLXdpZHRoPSI1MC4yMDQiLz48cGF0aCBzdHJva2Utd2lkdGg9IjMyLjE0NyIgZD0iTTczOS42NDUgNTc2LjYxSDUyNi40ODYiLz48L2c+PC9zdmc+PHN0eWxlPkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6bGlnaHQpezpyb290e2ZpbHRlcjpub25lfX08L3N0eWxlPjwvc3ZnPg==\u0026logoColor=FFFFFF\u0026label=)\n\ndotfiles powered by [chezmoi](https://www.chezmoi.io/)\n\n---\n\n\u003c!--toc:start--\u003e\n\n- [Synopsis](#synopsis)\n- [Font](#font)\n- [Notes](#notes)\n  - [Zsh: order of executions](#zsh-order-of-executions)\n  - [Zsh: diagnosing the slow start](#zsh-diagnosing-the-slow-start)\n  - [Zsh: manage binaries with zinit and z-a-linkbin](#zsh-manage-binaries-with-zinit-and-z-a-linkbin)\n\n\u003c!--toc:end--\u003e\n\n## Synopsis\n\n```bash\nsh -c \"$(curl -fsLS get.chezmoi.io)\" -- init --apply iomz\n```\n\nGo, Lua, NodeJS, and Python runtimes used by Neovim are managed by asdf (asdf itself is installed at the first time zsh starts), and it is not automated by Zinit.\n\nOther runtime (e.g, Deno and Rust) is taken cared in`~/.zshenv`.\n\n1. Installation of the dependencies (automatically done via `run_once_install_packages.sh.tmpl`\n\n2. Install Go, Lua (with LuaRocks), NodeJS, and Python via asdf\n\n```zsh\nfor i in golang lua nodejs python; do\n    IFS=\",\"; set -- $i;\n    lang=$1; repo=$2;\n    asdf plugin add $lang $repo \u0026\u0026 \\\n        asdf install $lang latest \u0026\u0026 \\\n        asdf set -u $lang latest;\ndone\n```\n\n3. Install the neovim modules\n\n```zsh\npip install --upgrade pip \u0026\u0026 pip install neovim\nnpm i -g neovim\n```\n\n4. (Optional) Install other stuff\n\n```zsh\nfor i in pnpm poetry; do\n    IFS=\",\"; set -- $i;\n    lang=$1; repo=$2;\n    asdf plugin add $lang $repo \u0026\u0026 \\\n        asdf install $lang latest \u0026\u0026 \\\n        asdf set -u $lang latest;\ndone\n```\n\n## Font\n\nI am borrowing MesloLGS Nerd Font from [romkatv/powerlevel10k](https://github.com/romkatv/powerlevel10k#fonts) to be installed on macOS.\n\nJust enter the following in Zsh (the script is a reduced version of [this](https://github.com/romkatv/powerlevel10k/blob/master/internal/wizard.zsh)):\n\n```zsh\ninstall-meslo-nerd-font\n```\n\n## Notes\n\n### Neovim: force reinstall the executable linked from $ZPFX (\"polaris\")\n\nA nightly version of `nvim` binary is installed by Zinit; however, the `nightly` tag won't change for new commits in the repository.\nTo update a nightly version of the installed nvim, simply remove the plugin directory and reopen zsh to force install it again.\n\n```zsh\nrm -fr ${XDG_DATA_HOME}/zinit/plugins/neovim---neovim\n```\n\n### Zinit: missing completion link\n\nAfter `zinit update`, some completions may get broken (check with `zinit completions`).\nIf any, clean up the broken links by\n\n```zsh\nzinit cclean\n```\n\n### Zsh: order of executions\n\nFirst of all, `$HOME/.profile` contains the local option like `${TINY_CHEZMOI}` while `~/.profile` is only loaded when running zsh in sh compatibility mode.\nIf `TINY_CHEZMOI=1`, then it doesn't load the heavy setup (nvim, cargo, deno (zeno), and so forth).\n\nThe setup loads in the order of\n\n```\n$HOME/.zshenv → $HOME/.config/zsh/.zshrc → $ZDOTDIR/rc.d/**\n```\n\nwhile the default is\n\n```\n.zshenv → .zprofile → .zshrc → .zlogin → .zlogout\n```\n\n1. `.zshenv` is always sourced.\n   It often contains exported variables that should be available to other programs.\n   For example, `$PATH`, `$EDITOR`, and `$PAGER` are often set in `.zshenv`.\n   Also, you can set `$ZDOTDIR` in `.zshenv` to specify an alternative location for the rest of your zsh configuration.\n2. `.zprofile` is for login shells.\n   It is basically the same as `.zlogin` except that it's sourced before `.zshrc` whereas `.zlogin` is sourced after `.zshrc`.\n   According to the zsh documentation, \"`.zprofile` is meant as an alternative to `.zlogin` for ksh fans; the two are not intended to be used together, although this could certainly be done if desired.\"\n3. `.zshrc` is for interactive shells.\n   You set options for the interactive shell there with the setopt and unsetopt commands.\n   You can also load shell modules, set your history options, change your prompt, set up zle and completion, et cetera.\n   You also set any variables that are only used in the interactive shell (e.g. `$LS_COLORS`).\n4. `.zlogin` is for login shells.\n   It is sourced on the start of a login shell but after `.zshrc`, if the shell is also interactive.\n   This file is often used to start X using startx.\n   Some systems start X on boot, so this file is not always very useful.\n5. `.zlogout` is sometimes used to clear and reset the terminal.\n   It is called when exiting, not when opening.\n\nIt reads `.zprofile`, as well as `.zshrc` for interactive and `.zlogin` for login shells.\n\ncf. [What should/shouldn't go in .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?](https://unix.stackexchange.com/questions/71253/what-should-shouldnt-go-in-zshenv-zshrc-zlogin-zprofile-zlogout)\n\n### Zsh: diagnosing the slow start\n\nSometimes there are \"bugs\" hard to identify during the startup process, and they might cause inconsistent behaviors that are hard to be logged.\n\nIn addition to the `$ZPROF` environmental value set before starting zsh, also make use of `${ENABLE_ZPROFTIME}`.\n\nWhen you start zsh with `${ENABLE_ZPROFTIME}`, it writes out a log to `/tmp/zproftime.XXXX` and can be examined with the autoloaded function (for example):\n\n```console\nzproftime-sort /tmp/zproftime.* | head\n```\n\ncf. [How to profile your zsh startup time by Benjamin Esham](https://esham.io/2018/02/zsh-profiling)\n\n### Zsh: manage binaries with zinit and z-a-linkbin\n\n[Zinit](https://github.com/zdharma-continuum/zinit) automatically downloads some binaries and creates links in `$ZPFX/bin` (i.e., `~/.local/share/zinit/polaris/bin`) with the [zinit-annex-binary-symlink](https://github.com/zdharma-continuum/zinit-annex-binary-symlink).\n\nSee the config file at https://github.com/iomz/dotfiles/blob/main/dot_config/zsh/rc.d/03-polaris.zsh\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiomz%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiomz%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiomz%2Fdotfiles/lists"}