{"id":16345282,"url":"https://github.com/inscapist/dotfiles","last_synced_at":"2025-10-17T04:17:45.392Z","repository":{"id":129899632,"uuid":"228770482","full_name":"inscapist/dotfiles","owner":"inscapist","description":"My dotfiles - Emacs centric OSX Big Sur","archived":false,"fork":false,"pushed_at":"2021-11-15T04:58:24.000Z","size":101374,"stargazers_count":31,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-12T00:31:09.446Z","etag":null,"topics":["doom-emacs","dotfiles","emacs","gccemacs","latex","lsp-mode","macos","org-mode","skhd","tiling-window-manager","tmux","tmux-conf","yabai","zinit","zsh","zsh-configs"],"latest_commit_sha":null,"homepage":"","language":"Vim script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inscapist.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":"2019-12-18T06:09:41.000Z","updated_at":"2024-07-09T15:03:32.000Z","dependencies_parsed_at":"2023-04-25T21:31:29.147Z","dependency_job_id":null,"html_url":"https://github.com/inscapist/dotfiles","commit_stats":null,"previous_names":["inscapist/dotfiles"],"tags_count":16,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inscapist%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inscapist%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inscapist%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inscapist%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inscapist","download_url":"https://codeload.github.com/inscapist/dotfiles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221810212,"owners_count":16884066,"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":["doom-emacs","dotfiles","emacs","gccemacs","latex","lsp-mode","macos","org-mode","skhd","tiling-window-manager","tmux","tmux-conf","yabai","zinit","zsh","zsh-configs"],"created_at":"2024-10-11T00:30:37.795Z","updated_at":"2025-10-17T04:17:45.315Z","avatar_url":"https://github.com/inscapist.png","language":"Vim script","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n[![zsh](https://img.shields.io/badge/Shell-zsh-yellow.svg)](.config/zsh)\n\n\u003cbr/\u003e\n\n\u003e “ We shape our tools, and thereafter our tools shape us. ”\n\u003e\n\u003e - distorted from original quote, by Marshall McLuhan\n\n\u003cbr/\u003e\n\nThis is my dotfiles.\nFeel free to open an issue if you need clarification to my configs.\n\n## What languages has been tested?\n\n- LaTex\n- React/Typescript with LSP\n- Jsx support with rjsx-mode\n- Haskell with LSP\n- Python with pyright and poetry\n- Elixir\n- Clojure (WIP)\n\n## What's in the box?\n\n- Somewhat heavily configurated [Emacs config](.doom.d) based on [Doom](https://github.com/hlissner/doom-emacs)\n  - Org-Roam (aka Roam Research on Emacs)\n  - Elfeed (RSS feed reader)\n  - Working example of [Org Agenda](.doom.d/+org.el) configuration\n  - Opinionated [keybindings](.doom.d/+bindings.el). J and K would scroll, S would save buffer\n- Simple and quick [Neovim config](.config/nvim)\n- A working tiling window manager configuration for Mac (with [yabai](.yabairc))\n- Minimal mouse dependency with [skhd](.skhdrc)\n- Embedded [floating window](.config/nvim/modules/floating-window) in Vim, see [screenshot](gallery/screenshot-vim-modal.png)\n- Seamless integration between [tmux](.tmux.conf), [vim](bin/isvim2) and [alacritty](.config/alacritty)\n- [Shows](bin/whats-playing) currently played Spotify song\n- Customized command prompt with [starship](.config/starship.toml)\n- Modularized [zsh config](.config/zsh) with the demonstration of [Zinit](https://github.com/zdharma/zinit) async syntax\n- An earthy theme ported from [Miramare](https://github.com/franbach/miramare)\n- Highly customizable Prose linter/checker using [Vale](https://github.com/errata-ai/vale)\n\n### Still prefer VsCode?\n\nSee here:\nhttps://gist.github.com/sagittaros/a632a853e6e3f78c64f1b4c017217b30\n\n## Ask me anything\n\nSend me a PR to let me know what issues you find. I am hoping to turn this into a reproducible bundle, but I might overlooked some hardcoded variables.\n\n## Installation\n\n```sh\ngit clone https://github.com/sagittaros/dotfiles.git\ncd dotfiles\n./install.sh\n```\n\n### Neovim\n\nFor first time access, run the following commands in order:\n\n```\n:PlugInstall\n:UpdateRemotePlugins\n:checkhealth\n```\n\n### Zsh\n\nI use [Zinit](https://github.com/zdharma/zinit) as ZSH's plugin manager. My `.zshrc` is [here](.config/zsh/.zshrc).\n`$ZDOTDIR` is set in `$HOME/.zshenv`, so that zsh configs are self-contained.\n\n- Sensitive environment variables should not be version controlled, they are placed in `$ZDOTDIR/secrets.zsh`.\n- Add additional zsh scripts to the bottom of `$ZDOTDIR/.zshrc`\n\n### Install Emacs\n\nPick any distro that you like.\n\n1. [Emacs Mac Port](https://github.com/railwaycat/homebrew-emacsmacport)\n2. [Emacs Plus](https://github.com/d12frosted/homebrew-emacs-plus)\n3. [Emacs OSX](https://github.com/sagittaros/emacs-osx)\n\n### Install doom emacs\n\nhttps://github.com/hlissner/doom-emacs\n\n```sh\ngit clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d\n~/.emacs.d/bin/doom install\n```\n\nafter installation, run `doom doctor` to determine missing packages\n\n### Install tiling window manager (Yabai and Skhd)\n\nFollow the following steps to install it, require reboots and messing with `csrutil`\n\n1. Enable `Displays have separate Spaces` under System Preferences -\u003e Mission Control\n2. Follow the instruction to disable SIP [here](https://github.com/koekeishiya/yabai/wiki/Disabling-System-Integrity-Protection)\n3. Install [Yabai](\u003chttps://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release)\u003e)\n4. Install [Skhd](https://github.com/koekeishiya/skhd)\n5. yabai and skhd should be running in `brew services list`\n6. if it doesn't work, check the error by running `tail -f /usr/local/var/log/yabai/yabai.err.log`\n\n### Install additional packages\n\n`basicPackages` includes a number of packages, refer [.config/nixpkgs/config.nix](.config/nixpkgs/config.nix)\n\nFind packages at https://search.nixos.org/packages\n\n- `nix-env -iA nixpkgs.\u003cpackage-name\u003e` installs a package with exact match\n- `nix-env -q` shows installed packages\n- `nix-env --uninstall \u003cinstalled-package\u003e` uninstalls package\n\n# Extras\n\n```sh\n# Essential libraries with brew\nbrew install cliclick starship yabai shkd gh coreutils fontconfig ranger\nbrew install vale # modern proselint\n\n# Fzf history search\nbrew install fzf\n$(brew --prefix)/opt/fzf/install\n\n# Install emacs 28\nbrew install emacs-head@28 --with-cocoa --with-native-comp --with-native-full-aot --with-modern-icon-doom-cacodemon\n\n# install Nix and cachix, follow the instructions\ncurl -L https://nixos.org/nix/install | sh\n\nnix-channel --update\n\n# install nix packages\nnix-env -iA nixpkgs.basicPackages\n\n# rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\n# haskell\ncurl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh\n\n# golang\nnix-env -iA nixpkgs.go\ngo get -u github.com/motemen/gore/cmd/gore\ngo get -u github.com/stamblerre/gocode\ngo get -u golang.org/x/tools/cmd/godoc\ngo get -u golang.org/x/tools/cmd/goimports\ngo get -u golang.org/x/tools/cmd/gorename\ngo get -u golang.org/x/tools/cmd/guru\ngo get -u github.com/cweill/gotests/...\ngo get -u github.com/fatih/gomodifytags\n\n# python and pips\nnix-env -iA nixpkgs.python38 # or python39\ncurl https://bootstrap.pypa.io/get-pip.py | python\npip install black pyflakes isort nose pytest pipenv pipx\npipx install grip # for markdown preview\n\n# others via yarn\nyarn global add marked\nyarn global add stylelint prettier js-beautify\nyarn global add pyright\n\n# required by org +roam\nnix-env -iA nixpkgs.sqlite # it is required for org-roam to work properly\n\n# LATEX and some fonts (See latex keybindings at the bottom of this doc)\nbrew install --cask mactex\nbrew install --cask skim # preview app\nbrew install latexindent\nbrew install --cask font-gentium-plus\nbrew install --cask font-tex-gyre-pagella\nbrew install --cask font-tex-gyre-pagella-math\n\n# Cabal setup (I don't use stack)\ncabal install implicit-hie # gen-hie \u003e hie.yaml (required for haskell-language-server)\ncabal install cabal-fmt\ncabal install stylish-haskell\ncabal install hoogle\n```\n\n## Configuration\n\n### Emacs Font Smoothing\n\n```sh\n# default = -int 1\ndefaults write org.gnu.Emacs AppleFontSmoothing -int 0\n```\n\n## Keybindings\n\n### Tmux + Nvim, in Alacritty\n\n```\nCmd + H: Move to left tmux tab\nCmd + L: Move to right tmux tab\nCmd + K: Clear buffer\nCmd + n: New tab\nCmd + w: Kill tab\nCmd + e: Rename tab\nCmd + s: Rename session\nCmd + Enter: Toggle Full Screen\n\n` + o: View all open tmux windows\n` + \\: Split tmux pane to the right\n` + -: Split tmux pane to the bottom\n\nCtrl + HJKL: Move between panes (even across neovim/tmux)\n```\n\nFor more, refer:\n\n- [tmux.conf](https://github.com/sagittaros/dotfiles/blob/master/.tmux.conf)\n- [alacritty.conf](https://github.com/sagittaros/dotfiles/blob/8bcd9ceb35b02d1d484aafe2adea17e42477ad19/.config/alacritty/alacritty.yml#L108)\n\n#### ZSH\n\n```shell\n# `i` to enter vim mode\n# ESC to quit vim mode\n\nbindkey -v\nbindkey '^R' fzf-history-widget # ctrl+r to search history with fzf\n\n# emacs style 0\nbindkey '^A' beginning-of-line\nbindkey '^E' end-of-line\nbindkey '^K' kill-line\nbindkey '^W' backward-kill-word\n\n# open a fzf-found file\nbindkey -s '^o' 'nvim $(fzf)\\n'\n```\n\n### Emacs\n\n```emacs-lisp\n(map! :nv \"S\" #'save-buffer\n      :nv \"F\" #'avy-goto-char-timer\n      :nv \"f\" #'avy-goto-char-in-line\n      :nv \"J\" #'evil-scroll-down\n      :nv \"K\" #'evil-scroll-up\n      :nv \"gx\" #'browse-url\n      :nv \"rr\" #'evil-ex-nohighlight\n      :nv \"rb\" #'revert-bufferm\n      :nv \"rc\" #'lsp-workspace-restart)\n\n;; Easier navigation\n(map! :ne \"C-h\"   #'evil-window-left\n      :ne \"C-l\"   #'evil-window-right\n      :ne \"C-j\"   #'evil-window-down\n      :ne \"C-k\"   #'evil-window-up\n      :ne \"s-h\"   #'+workspace/switch-left\n      :ne \"s-l\"   #'+workspace/switch-right\n      :ne \"s-n\"   #'+workspace/new\n      :ne \"s-w\"   #'+workspace/close-window-or-workspace\n      :ne \"s-r\"   #'+workspace/rename)\n\n;; Easier window split\n(map! :leader\n      \"\\\\\" #'evil-window-vsplit\n      \"-\" #'evil-window-split)\n\n;; Ace window\n(map! :leader \"w w\" #'ace-window)\n```\n\n[More here](https://github.com/sagittaros/dotfiles/blob/master/.doom.d/+bindings.el)\n\n### [Neo]vim\n\n```vim-snippet\n# simple glucose\nnnoremap \u003csilent\u003e rr :noh\u003ccr\u003e\nnnoremap \u003csilent\u003e re :e!\u003ccr\u003e\nnnoremap \u003csilent\u003e rw \u003cC-w\u003e=\nnnoremap \u003csilent\u003e rf :set foldmethod=manual\u003cCR\u003e zE\ninoremap \u003csilent\u003e jj \u003cEsc\u003e\nnnoremap j gj\nnnoremap k gk\nvnoremap B ^\nvnoremap E $\nnnoremap B ^\nnnoremap E $\nnmap f \u003cPlug\u003e(easymotion-sl)\nnmap F \u003cPlug\u003e(easymotion-s2)\n\n# split screen\nnnoremap \u003csilent\u003e ss :sp\u003cCR\u003e\nnnoremap \u003csilent\u003e vv :vsp\u003cCR\u003e\nnnoremap \u003csilent\u003e qq \u003cC-w\u003eq\n\n# toggle embedded LazyGit\nnnoremap \u003csilent\u003e \u003cspace\u003elg :\u003cC-u\u003ecall ToggleLazyGit()\u003cCR\u003e\n\n# quick scroll\nnnoremap \u003csilent\u003e K :call ScrollQuarter('up')\u003cCR\u003e\nnnoremap \u003csilent\u003e J :call ScrollQuarter('down')\u003cCR\u003e\n```\n\n[More here](https://github.com/sagittaros/dotfiles/blob/master/.config/nvim/modules/keymaps.vim)\n\n### LaTex workflow\n\nTo compile the document, `C-c C-c` and select `LaTex` in the menu.\nTo preview LaTex while editing, `C-c C-v`. I use \"Skim.app\" for previewing\n\n## Some Reference and Reading Materials\n\n- [How to learn Nix](https://ianthehenry.com/posts/how-to-learn-nix/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finscapist%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finscapist%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finscapist%2Fdotfiles/lists"}