Giter Club home page Giter Club logo

dotfiles's Introduction

dotfiles

My personal dotfiles

TL;DR

Run this in the terminal. It will setup homebrew and emacs and install dependencies for you.

./setup.sh

Code

Setup script

Safety first

set -euxo pipefail

get the secrets

# I forgot the password! ':)
# eval "$(gpg --decrypt secrets.sh.gpg)"

Fundamentals

Install HomeBrew

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

Install Emacs

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

Install GNU Stow

if ! command -v stow >/dev/null; then
    echo "Installing GNU Stow"
    brew install stow
fi

Link files

stow -t $HOME home_links

Other Setup

Install Doom

if [[ ! -e ~/dotemacs/doom ]]; then
    echo "Installing Doom Emacs";
    git clone --depth 1 https://github.com/doomemacs/doomemacs ~/dotemacs/doom;
fi

Install LazyVim

if [[ ! -e ~/.config/nvim ]]; then
    echo "Installing LazyVim";
    git clone https://github.com/LazyVim/starter ~/.config/nvim;
fi

Instal Intellimacs

if [[ ! -e ~/.intellimacs ]]; then
    echo "Installing Intellimacs";
    git clone https://github.com/MarcoIeni/intellimacs ~/.intellimacs;
fi

Enable repeat keys

defaults write -g ApplePressAndHoldEnabled -bool false

Install dependencies

./setup.rb

Dependencies

Homebrew Managed Dependencies

Taps

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

Formulas

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
  ;; [email protected]
  ;; 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
  ;; [email protected]
  ;; 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

Casks

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

Install

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}"` }

ASDF dependencies

Plugins

requested_asdf_plugins = <<-HEREDOC.gsub(/;.*$/, '').strip.split(/\s+/)
  kotlin
  kscript
  java
  nodejs
  ruby
  rust
HEREDOC

Install

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

luarocks dependencies

Plugins

requested_luarocks_plugins = <<-HEREDOC.gsub(/;.*$/, '').strip.split(/\s+/)
  fennel
HEREDOC

Install

installed_luarocks_plugins = `luarocks list --porcelain`
requested_luarocks_plugins
  .reject { |plugin| installed_luarocks_plugins.include? plugin }
  .each { |plugin| `luarocks install #{plugin}` }

setup

backups

zplug packages

───────┬────────────────────────────────────────────────────────────────────────────────────────────── │ 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” ───────┴──────────────────────────────────────────────────────────────────────────────────────────────

intellimacs

https://github.com/MarcoIeni/intellimacs

spacevim

#=============================================================================

#=============================================================================

[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”

tmux

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’

dotfiles's People

Contributors

mkhoeini avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.