My personal dotfiles
Run this in the terminal. It will setup homebrew and emacs and install dependencies for you.
./setup.sh
Safety first
set -euxo pipefail
get the secrets
# I forgot the password! ':)
# eval "$(gpg --decrypt secrets.sh.gpg)"
if ! command -v brew >/dev/null; then
echo "Installing HomeBrew"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
if ! command -v emacs >/dev/null; then
echo "Installing Emacs"
brew tap d12frosted/emacs-plus
brew install emacs-plus@30 --with-native-comp --with-modern-vscode-icon --with-xwidgets --with-imagemagick --with-poll --with-no-frame-refocus
fi
if ! command -v stow >/dev/null; then
echo "Installing GNU Stow"
brew install stow
fi
stow -t $HOME home_links
if [[ ! -e ~/dotemacs/doom ]]; then
echo "Installing Doom Emacs";
git clone --depth 1 https://github.com/doomemacs/doomemacs ~/dotemacs/doom;
fi
if [[ ! -e ~/.config/nvim ]]; then
echo "Installing LazyVim";
git clone https://github.com/LazyVim/starter ~/.config/nvim;
fi
if [[ ! -e ~/.intellimacs ]]; then
echo "Installing Intellimacs";
git clone https://github.com/MarcoIeni/intellimacs ~/.intellimacs;
fi
defaults write -g ApplePressAndHoldEnabled -bool false
./setup.rb
I didn’t need tap for now. But I will keep it as a reference:
kde-mac/kde https://invent.kde.org/packaging/homebrew-kde.git
tap_list = <<HEREDOC.gsub(/;.*$/, '').split("\n").map(&:strip).reject(&:empty?)
borkdude/brew ; babashka
;; bufbuild/buf
homebrew/cask-fonts
homebrew/cask-versions
mkhoeini/tap ; fortune-mod
oven-sh/bun ; bun.sh
remotemobprogramming/brew
;; spotify/public
;tnk-studio/tools ; lazykube
koekeishiya/formulae ; yabai
HEREDOC
formula_list = <<HEREDOC.gsub(/;.*$/, '').split("\n").map(&:strip).reject(&:empty?)
;; adns
antidote ; ZSH plugin manager.
;antigen ; ZSH plugin management. outdated. use antidote instead
;; aom
;; asciinema
asdf ; tools version management
;; assimp
babashka ; clojure cli scripting
bat ; better cat alternative
;; bdw-gc
;; berkeley-db
;; bison
;; black
;; boost
bottom ; better top util
;; brotli
bun ; node.js alternative
;; burklee
;; bzip2
;; c-ares
;; ca-certificates
;; cjson
clojure
clojurescript
;; cmake
;; cmocka
;; concurrencykit
coreutils
cowsay ; terminal eye candy
;; ctags
curlie ; better curl alternative
;; dav1d
;; dbus
;; deno
;; desktop-file-utils
direnv
;; docbook
;; docbook-xsl
;; double-conversion
;; doxygen
dust ; better du alternative for measuring dir size
;; ebook-tools
;; edencommon
;; entr
eza ; better ls alternative
;; exiv2
;; extra-cmake-modules
;; fasd
;; fb303
;; fbthrift
fd ; better find util
;; ffmpeg
;; fizz
;; flac
;; flex
;; flyway
;; fmt
;; folly
;; fontconfig
fortune-mod ; beautiful quotes in the terminal. TODO include more quotes
;; freetype
;; frei0r
;; fribidi
;; fx
fzf ; fuzzy search util
;; fzy
;; gcc
;; gd
;; gdbm
;; gdk-pixbuf
;; gettext
;; gflags
;; gh
;; ghc
;; ghostscript
;; giflib
git ; version control system
git-delta ; show beautiful git diffs in terminal
git-gui ; gitx and git gui commands
;; glib
;; glog
glow ; Beautiful Terminal Markdown Renderer
;; gmp
;; gnu-getopt
gnu-sed ; standard sed util implementation
;; gnu-tar
;; gnupg
;; gnutls
;; go
;; gobject-introspection
;; gperf
;; gpgme
;; graphite2
;; graphviz
;; grpcurl
;; gts
;; guile
;; hades-cli
;; harfbuzz
;; highway
;; hmtools
;hub ; convenient github cli
;; hunspell
hyperfine ; terminal benchmark util
;; icu4c
ijq ; interactive jq for json manipulation
;; ilmbase
;; imagemagick
;; imath
;; ipython
;; isl
;; ispell
;; jansson
;; jasper
;; jbig2dec
;; jemalloc
;; jet
;; jlog
;; jpeg
;; jpeg-turbo
;; jpeg-xl
jq ; commandline json util
;just ; better make alternative
;; k6
;; kde-extra-cmake-modules
;; kf5-kdoctools
;; krb5
;; kubectl-site
;; kubectx
;; kubernetes-cli
;; lame
;lazygit ; git TUI
;; lazykube
;; leiningen
;; leptonica
;; libarchive
;; libass
;; libassuan
;; libavif
;; libb2
;; libbluray
;; libcanberra
;; libcbor
;; libcroco
;; libde265
;; libepoxy
;; libev
;; libevent
;; libffi
;; libfido2
;; libgccjit
;; libgcrypt
;; libgpg-error
;; libheif
;; libidn
;; libidn2
;; libksba
;; liblinear
;; liblqr
;; libmng
;; libmpc
;; libmtp
;; libnghttp2
;; libogg
;; libomp
;; libpng
;; libproxy
;; libpthread-stubs
;; libraw
;; librist
;; librsvg
;; libsamplerate
;; libsndfile
;; libsodium
;; libsoxr
;; libssh
;; libssh2
;; libtasn1
;; libtermkey
;; libtiff
;; libtool
;; libunistring
;; libusb
;; libusb-compat
;; libuv
;; libvidstab
;; libvmaf
;; libvorbis
;; libvpx
;; libvterm
;; libx11
;; libxau
;; libxcb
;; libxdmcp
;; libxext
;; libxml2
;; libxrender
;; libxslt
;; libyaml
;; libzip
;; little-cms2
;; llvm
lolcat ; make terminal quotes colorful
;; lua
;; lua@5.3
;; luajit
;; luajit-openresty
luarocks ; package management for lua
;; luv
;; lz4
;; lzo
;; m4
;; make
maven ; java package manager
;; mbedtls
;; md4c
;; mitmproxy
mob ; mob cli for mobbing
;; mosh
;; mpdecimal
;; mpfr
;; msgpack
;; mysql
;; ncurses
neovide ; GUI for neovim
neovim ; better vim alternative
;; netpbm
;; nettle
;; nghttp2
;; ninja
;; nmap
;; npth
;; nspr
;; nss
;; oha
;; onefetch
;; oniguruma
;; opencore-amr
;; openexr
;; openjpeg
;; openslp
;; openssl@1.1
;; opus
;; p11-kit
p7zip ; 7zip compression with new extentions
;; pandoc
;; pango
;; parallel
;; pcre
;; pcre2
;; perl
;; pgweb
;; pinentry
;; pixman
;; pkg-config
ponysay ; cowsay alternative
;; poppler
;; postgresql
;; postgresql@13
;; postgresql@14
;; prettyping
procs ; better ps alternative
;; protobuf
;; pygments
;ranger ; terminal file manager
;; rav1e
;; readline
;; recode
ripgrep ; cli search util
rlwrap ; readline cli util
;; rtmpdump
;; rubberband
;; rust
;; sbt
;; scala
;; scc
;; scio
;; sdl2
;; shared-mime-info
;; shellcheck
;; showkey
;; six
;; snappy
;; speedtest-cli
;; speex
;; spgrpcurl
;; spotify-disco
;; spotify-nameless-cli
;; sqlite
;; srt
;starship ; zsh prompt. instead use powerlevel10k
stow ; symlink management
;; styx-cli
;; taglib
;; tcl-tk
;; tesseract
;; texinfo
;; theora
;; tree-sitter
triangle ; Convert images to triangulation art
;; ttyplot
;; unbound
;; unibilium
;; unixodbc
;; utf8proc
;; v2ray
;; wakatime-cli
;; wangle
watchexec ; run commands on file change
;; watchman
;; webp
;; websocat
;; wget
;; x264
;; x265
xdg-ninja ; Config dotfiles to be in XDG folders - TODO apply suggestions
;; xmlto
;; xorgproto
;; xvid
;; xz
yabai
;; z
;; z3
zellij ; better tmux alternative
;; zeromq
;; zimg
;; zlib
zoxide ; better cd alternative. z command
zsh
;; zstd
HEREDOC
cask_list = <<HEREDOC.gsub(/;.*$/, '').split("\n").map(&:strip).reject(&:empty?)
alacritty ; terminal emulator
;blurred ; dim background apps windows
;browserosaurus ; select which browser
;chromium
coconutbattery ; battery info util
;; corretto
;; corretto8
diffusionbee ; Stable Diffusion mac image tool
docker ; docker desktop. Uses correct arch
;; edex-ui
firefox
flux ; set color temp at evening
;; font-code-new-roman-nerd-font
;; font-dejavu-sans-mono-nerd-font
font-droid-sans-mono-nerd-font
;; font-fira-code-nerd-font
;; font-firacode-nerd-font
;; font-hack-nerd-font
;; font-hasklig
;; font-hasklig-nerd-font
font-iosevka-nerd-font
font-jetbrains-mono-nerd-font
font-juliamono
;; font-lilex
;; font-monoid-nerd-font
;; font-noto-nerd-font
font-roboto-mono-nerd-font ; used for alacritty
;; font-victor-mono-nerd-font
;; github-beta
;; google-chrome
google-cloud-sdk ; cli for google cloud
hammerspoon ; desktop automation tool
hiddenbar ; make taskbar icons hidden
iina ; greate video player
intellij-idea-ce
itsycal ; calendar menubar
;; kitty
;; lapce ; Rust based GUI editor
logseq ; personal knowledge management
;; meetingbar
;; noisebuddy
;; noisy
;onething ; TODO doesn't exist - focus on one thing at a time
;; qutebrowser
;rancher ; Docker Desktop replacement
;rectangle ; Window management with keyboard
;; retinizer
;; spotify
;; swiftdefaultappsprefpane
telegram
;; telegram-desktop ; electron based
;; todoist
tomatobar ; pomodoro menubar
tribler ; torrent download client
;vimac ; TODO doesn't exist - mac vim mode hints overlay
vimr ; another vim GUI
visual-studio-code
;; xbar ; menubar super app
HEREDOC
installed_taps = `brew tap`
tap_list
.reject { |tap| installed_taps.include? tap }
.each { |tap| `brew tap "#{tap}"` }
installed_formulas = `brew list --formula`
formula_list
.reject { |formula| installed_formulas.include? formula }
.each { |formula| `brew install "#{formula}"` }
installed_casks = `brew list --cask`
cask_list
.reject { |cask| installed_casks.include? cask }
.each { |cask| `brew install --cask "#{cask}"` }
requested_asdf_plugins = <<-HEREDOC.gsub(/;.*$/, '').strip.split(/\s+/)
kotlin
kscript
java
nodejs
ruby
rust
HEREDOC
installed_asdf_plugins = `asdf plugin list`
requested_asdf_plugins
.reject { |plugin| installed_asdf_plugins.include? plugin }
.each do |plugin|
`asdf plugin add "#{plugin}"`
`asdf install "#{plugin}" latest`
end
requested_luarocks_plugins = <<-HEREDOC.gsub(/;.*$/, '').strip.split(/\s+/)
fennel
HEREDOC
installed_luarocks_plugins = `luarocks list --porcelain`
requested_luarocks_plugins
.reject { |plugin| installed_luarocks_plugins.include? plugin }
.each { |plugin| `luarocks install #{plugin}` }
- [ ] Setup https://gitlab.com/mtekman/org-tanglesync.el for diffing on tangling
───────┬────────────────────────────────────────────────────────────────────────────────────────────── │ File: .zplug.tmp/packages.zsh ───────┼────────────────────────────────────────────────────────────────────────────────────────────── 1 │ zplug “zsh-users/zsh-autosuggestions” 2 │ zplug “bhilburn/powerlevel9k”, use:powerlevel9k.zsh-theme 3 │ zplug “plugins/gitfast”, from:oh-my-zsh 4 │ zplug “plugins/httpie”, from:oh-my-zsh 5 │ zplug “plugins/lol”, from:oh-my-zsh 6 │ zplug “plugins/git-extras”, from:oh-my-zsh 7 │ zplug “plugins/osx”, from:oh-my-zsh 8 │ zplug “plugins/gitignore”, from:oh-my-zsh 9 │ zplug “plugins/github”, from:oh-my-zsh 10 │ zplug “plugins/docker”, from:oh-my-zsh 11 │ zplug “plugins/z”, from:oh-my-zsh 12 │ zplug “plugins/fasd”, from:oh-my-zsh 13 │ zplug “plugins/vi-mode”, from:oh-my-zsh 14 │ zplug “plugins/tmux”, from:oh-my-zsh 15 │ zplug “plugins/kubectl”, from:oh-my-zsh 16 │ zplug “plugins/colored-man-pages”, from:oh-my-zsh 17 │ zplug “zsh-users/zsh-syntax-highlighting”, defer:2 18 │ zplug “plugins/history-substring-search”, from:oh-my-zsh, defer:2 19 │ # zplug “b4b4r07/enhancd”, use:init.sh 20 │ # zplug “denysdovhan/spaceship-prompt”, use:spaceship.zsh, as:theme 21 │ zplug “zpm-zsh/colors” 22 │ zplug “zdharma/zsh-diff-so-fancy”, as:command, use:bin/git-dsf 23 │ zplug “wfxr/forgit”, defer:1 24 │ zplug “leophys/zsh-plugin-fzf-finder” 25 │ zplug “aperezdc/zsh-fzy” 26 │ zplug “oldratlee/hacker-quotes” 27 │ zplug “zsh-users/zaw”, use:zaw.zsh 28 │ zplug “scmbreeze/scm_breeze” 29 │ zplug “psprint/zsh-navigation-tools” ───────┴──────────────────────────────────────────────────────────────────────────────────────────────
https://github.com/MarcoIeni/intellimacs
#=============================================================================
#=============================================================================
[options]
colorscheme = “moonlight” colorscheme_bg = “dark”
enable_guicolors = true
statusline_separator = “arrow” statusline_inactive_separator = “arrow” buffer_index_type = 4 enable_tabline_filetype_icon = true enable_statusline_mode = false
enable_neomake = false enable_ale = true lint_on_the_fly = true bootstrap_before = “myspacevim#before” bootstrap_after = “myspacevim#after” filemanager = “nerdtree” enable_vimfiler_welcome = false enable_vimfiler_gitstatus = true disabled_plugins = [“vim-signify”] lsp_engine = “coc”
layers name = ‘autocomplete’ auto-completion-return-key-behavior = “complete” auto-completion-tab-key-behavior = “smart”
layers name = “checkers”
layers name = “fzf”
layers name = ‘edit’ textobj = [‘indent’, ‘line’, ‘entire’]
layers name = ‘git’ git-plugin = ‘gina’
layers name = ‘lang#dockerfile’
layers name = ‘lang#elixir’
layers name = ‘lang#graphql’
layers name = ‘lang#html’
layers name = ‘lang#javascript’
layers name = ‘lang#markdown’
layers name = “lang#python”
layers name = ‘lang#ruby’ repl_command = “pry”
layers name = “lang#typescript”
layers name = ‘lsp’ filetypes = [ “javascript”, “typescript”, “css” ]
layers name = ‘shell’ default_position = ‘float’ default_height = 30
layers name = ‘sudo’
layers name = ‘tmux’
layers name = ‘VersionControl’
custom_plugins name = “tpope/vim-vinegar”
custom_plugins name = “mhartington/oceanic-next”
custom_plugins name = “fenetikm/falcon”
custom_plugins name = “airblade/vim-gitgutter”
custom_plugins name = “jsfaint/coc-neoinclude”
custom_plugins name = “neoclide/coc-sources”
custom_plugins name = “tpope/vim-obsession”
custom_plugins name = “tpope/vim-projectionist”
custom_plugins name = “mgedmin/python-imports.vim”
custom_plugins name = “ludovicchabant/vim-gutentags”
custom_plugins name = “leafgarland/typescript-vim”
custom_plugins name = “peitalin/vim-jsx-typescript”
custom_plugins name = “mbbill/undotree”
custom_plugins name = “Olical/aniseed”
custom_plugins name = “Olical/nvim-local-fennel”
custom_plugins name = “bakpakin/fennel.vim”
custom_plugins name = “Olical/conjure”
custom_plugins name = “eraserhd/parinfer-rust”
custom_plugins name = “NoahTheDuke/vim-just”
custom_plugins name = “dracula/vim”
custom_plugins name = “shaunsingh/moonlight.nvim”
set -g @plugin ‘tmux-plugins/tpm’ set -g @plugin ‘tmux-plugins/tmux-sensible’ set -g @plugin ‘tmux-plugins/tmux-resurrect’ set -g @plugin ‘tmux-plugins/tmux-continuum’ set -g @plugin ‘tmux-plugins/tmux-open’ set -g @plugin ‘tmux-plugins/tmux-yank’ set -g @plugin ‘tmux-plugins/tmux-pain-control’ set -g @plugin ‘tmux-plugins/tmux-sessionist’ set -g @plugin ‘tmux-plugins/tmux-copycat’ set -g @plugin ‘tmux-plugins/tmux-cpu’ set -g @plugin ‘tmux-plugins/tmux-prefix-highlight’ set -g @plugin ‘tmux-plugins/tmux-online-status’ set -g @plugin ‘tmux-plugins/tmux-net-speed’ set -g @plugin ‘tmux-plugins/tmux-battery’ set -g @plugin ‘christoomey/vim-tmux-navigator’
set -g @plugin ‘arcticicestudio/nord-tmux’
set -g @resurrect-strategy-vim ‘session’ set -g @resurrect-strategy-nvim ‘session’ set -g @resurrect-capture-pane-contents ‘on’ set -g @resurrect-save-shell-history ‘on’ set -g @continuum-restore ‘on’
set -g @plugin ‘arcticicestudio/nord-tmux’
set -g default-terminal screen-256color
bind-key ^D detach-client
bind-key v split-window -h bind-key ^V split-window -h bind-key s split-window bind-key ^S split-window
bind e setw synchronize-panes on bind E setw synchronize-panes off
set-option -g base-index 1 set-window-option -g pane-base-index 1
set-option -g mouse on
run -b ‘~/.tmux/plugins/tpm/tpm’