diff --git a/.zshrc b/.zshrc index 65f0a1a..a86a844 100644 --- a/.zshrc +++ b/.zshrc @@ -1,7 +1,7 @@ source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh source /nix/var/nix/profiles/default/etc/profile.d/nix.sh -export BAT_THEME="Solarized (light)" +export BAT_THEME="Monokai Extended Origin" export MANPAGER="sh -c 'col -bx | bat -l man -p'" LESS="-R"; export LESS @@ -65,8 +65,8 @@ _fzf_comprun() { export LS_COLORS="su=0:ca=0:*~=0;38;2;102;102;102:mh=0:do=0;38;2;0;0;0;48;2;255;106;193:pi=0;38;2;0;0;0;48;2;64;120;242:tw=0:sg=0:ln=0;38;2;255;106;193:ex=1;38;2;228;86;73:ow=0:mi=0;38;2;0;0;0;48;2;228;86;73:cd=0;38;2;255;106;193;48;2;51;51;51:rs=0:fi=0:bd=0;38;2;1;132;188;48;2;51;51;51:st=0:or=0;38;2;0;0;0;48;2;228;86;73:no=0:di=0;38;2;64;120;242:so=0;38;2;0;0;0;48;2;255;106;193:*.d=0;38;2;80;161;79:*.r=0;38;2;80;161;79:*.p=0;38;2;80;161;79:*.a=1;38;2;228;86;73:*.z=4;38;2;1;132;188:*.c=0;38;2;80;161;79:*.h=0;38;2;80;161;79:*.m=0;38;2;80;161;79:*.t=0;38;2;80;161;79:*.o=0;38;2;102;102;102:*.ex=0;38;2;80;161;79:*.nb=0;38;2;80;161;79:*.td=0;38;2;80;161;79:*.wv=0;38;2;255;106;193:*.ui=0;38;2;193;132;1:*.el=0;38;2;80;161;79:*.md=0;38;2;193;132;1:*.cr=0;38;2;80;161;79:*.mn=0;38;2;80;161;79:*.pm=0;38;2;80;161;79:*.ts=0;38;2;80;161;79:*css=0;38;2;80;161;79:*.di=0;38;2;80;161;79:*.go=0;38;2;80;161;79:*.fs=0;38;2;80;161;79:*.vb=0;38;2;80;161;79:*.rb=0;38;2;80;161;79:*.js=0;38;2;80;161;79:*.ps=0;38;2;228;86;73:*.lo=0;38;2;102;102;102:*.gz=4;38;2;1;132;188:*.py=0;38;2;80;161;79:*.hh=0;38;2;80;161;79:*.7z=4;38;2;1;132;188:*.cp=0;38;2;80;161;79:*.ml=0;38;2;80;161;79:*.kt=0;38;2;80;161;79:*.bz=4;38;2;1;132;188:*.la=0;38;2;102;102;102:*.sh=0;38;2;80;161;79:*.gv=0;38;2;80;161;79:*.ll=0;38;2;80;161;79:*.as=0;38;2;80;161;79:*.ko=1;38;2;228;86;73:*.bc=0;38;2;102;102;102:*.rm=0;38;2;255;106;193:*.jl=0;38;2;80;161;79:*.xz=4;38;2;1;132;188:*.so=1;38;2;228;86;73:*.hs=0;38;2;80;161;79:*.rs=0;38;2;80;161;79:*.cc=0;38;2;80;161;79:*.pp=0;38;2;80;161;79:*.cs=0;38;2;80;161;79:*.pl=0;38;2;80;161;79:*.hi=0;38;2;102;102;102:*.bmp=0;38;2;255;106;193:*TODO=1:*.tgz=4;38;2;1;132;188:*.zip=4;38;2;1;132;188:*.zsh=0;38;2;80;161;79:*.mp4=0;38;2;255;106;193:*.xcf=0;38;2;255;106;193:*.pbm=0;38;2;255;106;193:*.deb=4;38;2;1;132;188:*.inl=0;38;2;80;161;79:*.htc=0;38;2;80;161;79:*.inc=0;38;2;80;161;79:*.htm=0;38;2;193;132;1:*.tbz=4;38;2;1;132;188:*.epp=0;38;2;80;161;79:*.tml=0;38;2;193;132;1:*.cxx=0;38;2;80;161;79:*.ltx=0;38;2;80;161;79:*.ini=0;38;2;193;132;1:*.fls=0;38;2;102;102;102:*.tmp=0;38;2;102;102;102:*.bat=1;38;2;228;86;73:*.sbt=0;38;2;80;161;79:*.txt=0;38;2;193;132;1:*.iso=4;38;2;1;132;188:*.wmv=0;38;2;255;106;193:*.svg=0;38;2;255;106;193:*.swp=0;38;2;102;102;102:*.bag=4;38;2;1;132;188:*.ico=0;38;2;255;106;193:*.bak=0;38;2;102;102;102:*.sxi=0;38;2;228;86;73:*.pps=0;38;2;228;86;73:*.kts=0;38;2;80;161;79:*.mov=0;38;2;255;106;193:*.dmg=4;38;2;1;132;188:*.flv=0;38;2;255;106;193:*.blg=0;38;2;102;102;102:*.fon=0;38;2;255;106;193:*.rar=4;38;2;1;132;188:*.toc=0;38;2;102;102;102:*.rtf=0;38;2;228;86;73:*.log=0;38;2;102;102;102:*.yml=0;38;2;193;132;1:*.bin=4;38;2;1;132;188:*.ppt=0;38;2;228;86;73:*.hpp=0;38;2;80;161;79:*.idx=0;38;2;102;102;102:*.mir=0;38;2;80;161;79:*.pod=0;38;2;80;161;79:*.csx=0;38;2;80;161;79:*.hxx=0;38;2;80;161;79:*.pgm=0;38;2;255;106;193:*.tsx=0;38;2;80;161;79:*.odt=0;38;2;228;86;73:*.ipp=0;38;2;80;161;79:*.bz2=4;38;2;1;132;188:*.xml=0;38;2;193;132;1:*.ics=0;38;2;228;86;73:*.nix=0;38;2;193;132;1:*.pkg=4;38;2;1;132;188:*.dll=1;38;2;228;86;73:*.avi=0;38;2;255;106;193:*.fsi=0;38;2;80;161;79:*.jpg=0;38;2;255;106;193:*.m4a=0;38;2;255;106;193:*.otf=0;38;2;255;106;193:*.fsx=0;38;2;80;161;79:*.awk=0;38;2;80;161;79:*.eps=0;38;2;255;106;193:*.tar=4;38;2;1;132;188:*.swf=0;38;2;255;106;193:*.def=0;38;2;80;161;79:*.rpm=4;38;2;1;132;188:*.zst=4;38;2;1;132;188:*.bsh=0;38;2;80;161;79:*.sxw=0;38;2;228;86;73:*.vim=0;38;2;80;161;79:*.tcl=0;38;2;80;161;79:*.cgi=0;38;2;80;161;79:*.tex=0;38;2;80;161;79:*.pas=0;38;2;80;161;79:*.wma=0;38;2;255;106;193:*.csv=0;38;2;193;132;1:*.mpg=0;38;2;255;106;193:*.sql=0;38;2;80;161;79:*.dpr=0;38;2;80;161;79:*.mp3=0;38;2;255;106;193:*.png=0;38;2;255;106;193:*.ind=0;38;2;102;102;102:*.jar=4;38;2;1;132;188:*.apk=4;38;2;1;132;188:*.mkv=0;38;2;255;106;193:*.pyo=0;38;2;102;102;102:*.php=0;38;2;80;161;79:*.kex=0;38;2;228;86;73:*.ilg=0;38;2;102;102;102:*.bib=0;38;2;193;132;1:*.xlr=0;38;2;228;86;73:*.xls=0;38;2;228;86;73:*.h++=0;38;2;80;161;79:*.asa=0;38;2;80;161;79:*.pyc=0;38;2;102;102;102:*.mli=0;38;2;80;161;79:*.vob=0;38;2;255;106;193:*.pid=0;38;2;102;102;102:*.ppm=0;38;2;255;106;193:*.cpp=0;38;2;80;161;79:*.m4v=0;38;2;255;106;193:*.clj=0;38;2;80;161;79:*.gif=0;38;2;255;106;193:*.doc=0;38;2;228;86;73:*.com=1;38;2;228;86;73:*.vcd=4;38;2;1;132;188:*.exs=0;38;2;80;161;79:*.git=0;38;2;102;102;102:*.bst=0;38;2;193;132;1:*.pro=0;38;2;80;161;79:*.erl=0;38;2;80;161;79:*.img=4;38;2;1;132;188:*.aif=0;38;2;255;106;193:*.arj=4;38;2;1;132;188:*.rst=0;38;2;193;132;1:*.ttf=0;38;2;255;106;193:*.ods=0;38;2;228;86;73:*hgrc=0;38;2;80;161;79:*.aux=0;38;2;102;102;102:*.dox=0;38;2;80;161;79:*.fnt=0;38;2;255;106;193:*.bbl=0;38;2;102;102;102:*.psd=0;38;2;255;106;193:*.xmp=0;38;2;193;132;1:*.mid=0;38;2;255;106;193:*.ogg=0;38;2;255;106;193:*.bcf=0;38;2;102;102;102:*.cfg=0;38;2;193;132;1:*.exe=1;38;2;228;86;73:*.tif=0;38;2;255;106;193:*.dot=0;38;2;80;161;79:*.elm=0;38;2;80;161;79:*.pdf=0;38;2;228;86;73:*.odp=0;38;2;228;86;73:*.lua=0;38;2;80;161;79:*.c++=0;38;2;80;161;79:*.pyd=0;38;2;102;102;102:*.out=0;38;2;102;102;102:*.gvy=0;38;2;80;161;79:*.sty=0;38;2;102;102;102:*.ps1=0;38;2;80;161;79:*.wav=0;38;2;255;106;193:*.lisp=0;38;2;80;161;79:*.epub=0;38;2;228;86;73:*.flac=0;38;2;255;106;193:*.conf=0;38;2;193;132;1:*.toml=0;38;2;193;132;1:*.psd1=0;38;2;80;161;79:*.diff=0;38;2;80;161;79:*.opus=0;38;2;255;106;193:*.lock=0;38;2;102;102;102:*.tiff=0;38;2;255;106;193:*.json=0;38;2;193;132;1:*.fish=0;38;2;80;161;79:*.java=0;38;2;80;161;79:*.psm1=0;38;2;80;161;79:*.dart=0;38;2;80;161;79:*.xlsx=0;38;2;228;86;73:*.orig=0;38;2;102;102;102:*.webm=0;38;2;255;106;193:*.docx=0;38;2;228;86;73:*.jpeg=0;38;2;255;106;193:*.tbz2=4;38;2;1;132;188:*.yaml=0;38;2;193;132;1:*.less=0;38;2;80;161;79:*.purs=0;38;2;80;161;79:*.rlib=0;38;2;102;102;102:*.html=0;38;2;193;132;1:*.bash=0;38;2;80;161;79:*.h264=0;38;2;255;106;193:*.pptx=0;38;2;228;86;73:*.mpeg=0;38;2;255;106;193:*.hgrc=0;38;2;80;161;79:*.make=0;38;2;80;161;79:*.cabal=0;38;2;80;161;79:*.shtml=0;38;2;193;132;1:*README=0;38;2;250;250;250;48;2;193;132;1:*.class=0;38;2;102;102;102:*shadow=0;38;2;193;132;1:*.swift=0;38;2;80;161;79:*.xhtml=0;38;2;193;132;1:*.ipynb=0;38;2;80;161;79:*.cmake=0;38;2;80;161;79:*.cache=0;38;2;102;102;102:*passwd=0;38;2;193;132;1:*.mdown=0;38;2;193;132;1:*.dyn_o=0;38;2;102;102;102:*.scala=0;38;2;80;161;79:*.toast=4;38;2;1;132;188:*.patch=0;38;2;80;161;79:*TODO.md=1:*LICENSE=0;38;2;153;153;153:*.flake8=0;38;2;80;161;79:*.gradle=0;38;2;80;161;79:*.config=0;38;2;193;132;1:*.ignore=0;38;2;80;161;79:*.dyn_hi=0;38;2;102;102;102:*COPYING=0;38;2;153;153;153:*.matlab=0;38;2;80;161;79:*.groovy=0;38;2;80;161;79:*INSTALL=0;38;2;250;250;250;48;2;193;132;1:*setup.py=0;38;2;80;161;79:*TODO.txt=1:*Makefile=0;38;2;80;161;79:*.desktop=0;38;2;193;132;1:*.gemspec=0;38;2;80;161;79:*Doxyfile=0;38;2;80;161;79:*configure=0;38;2;80;161;79:*.DS_Store=0;38;2;102;102;102:*.rgignore=0;38;2;80;161;79:*README.md=0;38;2;250;250;250;48;2;193;132;1:*.fdignore=0;38;2;80;161;79:*.kdevelop=0;38;2;80;161;79:*.cmake.in=0;38;2;80;161;79:*COPYRIGHT=0;38;2;153;153;153:*.markdown=0;38;2;193;132;1:*CODEOWNERS=0;38;2;80;161;79:*.localized=0;38;2;102;102;102:*INSTALL.md=0;38;2;250;250;250;48;2;193;132;1:*Dockerfile=0;38;2;193;132;1:*.scons_opt=0;38;2;102;102;102:*README.txt=0;38;2;250;250;250;48;2;193;132;1:*SConscript=0;38;2;80;161;79:*.gitconfig=0;38;2;80;161;79:*SConstruct=0;38;2;80;161;79:*.gitignore=0;38;2;80;161;79:*.synctex.gz=0;38;2;102;102;102:*INSTALL.txt=0;38;2;250;250;250;48;2;193;132;1:*.gitmodules=0;38;2;80;161;79:*MANIFEST.in=0;38;2;80;161;79:*Makefile.am=0;38;2;80;161;79:*Makefile.in=0;38;2;102;102;102:*LICENSE-MIT=0;38;2;153;153;153:*.travis.yml=0;38;2;80;161;79:*appveyor.yml=0;38;2;80;161;79:*configure.ac=0;38;2;80;161;79:*.applescript=0;38;2;80;161;79:*CONTRIBUTORS=0;38;2;250;250;250;48;2;193;132;1:*.fdb_latexmk=0;38;2;102;102;102:*.clang-format=0;38;2;80;161;79:*CMakeLists.txt=0;38;2;80;161;79:*LICENSE-APACHE=0;38;2;153;153;153:*CMakeCache.txt=0;38;2;102;102;102:*.gitattributes=0;38;2;80;161;79:*CONTRIBUTORS.md=0;38;2;250;250;250;48;2;193;132;1:*requirements.txt=0;38;2;80;161;79:*CONTRIBUTORS.txt=0;38;2;250;250;250;48;2;193;132;1:*.sconsign.dblite=0;38;2;102;102;102:*package-lock.json=0;38;2;102;102;102:*.CFUserTextEncoding=0;38;2;102;102;102" -if which exa > /dev/null 2>&1 ; then - alias ls="exa --icons -F -g" +if command -v eza > /dev/null ; then + alias ls="eza --icons -F -g" else alias ls="ls -G" fi @@ -91,13 +91,25 @@ function ll { } alias http_server="python3 -m http.server" -alias z="$(which zoxide)" [ -d "$HOME/Library/Python/3.9/bin" ] && export PATH="$PATH:$HOME/Library/Python/3.9/bin" [ -d "$HOME/.local/bin" ] && export PATH="$PATH:$HOME/.local/bin" -[ -f "$HOME/.zshrc.local" ] && source "$HOME/.zshrc.local" -[ -f "$HOME/.zshrc.auto" ] && source "$HOME/.zshrc.auto" - FPATH="$HOME/.nix-profile/share/zsh/site-functions:${FPATH}" autoload -Uz compinit && compinit + +if command -v atuin > /dev/null ; then + eval "$(atuin init zsh --disable-up-arrow)" +fi +if command -v direnv > /dev/null ; then + eval "$(direnv hook zsh)" +fi +if command -v starship > /dev/null ; then + eval "$(starship init zsh)" +fi +if command -v zoxide > /dev/null ; then + alias z="$(which zoxide)" + eval "$(zoxide init zsh)" +fi + +[ -f "$HOME/.zshrc.local" ] && source "$HOME/.zshrc.local" diff --git a/install-cli-tools.sh b/install-cli-tools.sh new file mode 100755 index 0000000..c2e71dd --- /dev/null +++ b/install-cli-tools.sh @@ -0,0 +1,119 @@ +#!/bin/sh + +[ -n "${DEBUG-}" ] && set -x + +cd "$(dirname "$0")" || exit 1 + +shellcheck "$0" || exit 1 +shfmt -i 2 -d -s "$0" + +has_bin() { + [ -e "$HOME/.nix-profile/bin/$1" ] +} + +if ! pgrep nix-daemon >/dev/null 2>&1; then + curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install + # shellcheck disable=SC1091 + . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh + # shellcheck disable=SC1091 + . /nix/var/nix/profiles/default/etc/profile.d/nix.sh +else + echo "Attempting nix upgrade... may prompt for sudo password" + sudo nix upgrade-nix +fi + +PATH="$PATH:$HOME/.nix-profile/bin" + +has_bin "cachix" || nix profile install nixpkgs#cachix +if ! has_bin "devenv"; then + cachix use devenv + nix profile install --accept-flake-config github:cachix/devenv/latest +fi + +if [ ! -d "$HOME/.cargo" ]; then + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path --default-toolchain stable --profile complete -y +fi + +has_bin "atuin" || nix profile install nixpkgs#atuin +has_bin "bash" || nix profile install nixpkgs#bashInteractive +has_bin "bat" || nix profile install nixpkgs#bat +has_bin "bw" || nix profile install nixpkgs#bitwarden-cli +has_bin "broot" || nix profile install nixpkgs#broot +has_bin "cargo-dist" || nix profile install nixpkgs#cargo-dist +has_bin "cargo-flamegraph" || nix profile install nixpkgs#cargo-flamegraph +has_bin "cargo-release" || nix profile install nixpkgs#cargo-release +has_bin "cargo-udeps" || nix profile install nixpkgs#cargo-udeps +has_bin "cheat" || nix profile install nixpkgs#cheat +has_bin "chezmoi" || nix profile install nixpkgs#chezmoi +has_bin "croc" || nix profile install nixpkgs#croc +has_bin "curlie" || nix profile install nixpkgs#curlie +has_bin "delta" || nix profile install nixpkgs#delta +[ -e "$HOME/.cargo/bin/ddbug" ] || cargo install --git https://github.com/gimli-rs/ddbug +has_bin "difft" || nix profile install nixpkgs#difftastic +has_bin "direnv" || nix profile install nixpkgs#direnv +has_bin "dnsproxy" || nix profile install nixpkgs#dnsproxy +has_bin "dust" || nix profile install nixpkgs#du-dust +has_bin "eza" || nix profile install nixpkgs#eza +has_bin "fd" || nix profile install nixpkgs#fd +has_bin "flake-checker" || nix profile install github:DeterminateSystems/flake-checker +has_bin "flamegraph" || nix profile install nixpkgs#flamegraph +has_bin "fx" || nix profile install nixpkgs#fx +has_bin "fzf" || nix profile install nixpkgs#fzf +has_bin "git" || nix profile install nixpkgs#git +has_bin "git-gone" || nix profile install nixpkgs#git-gone +has_bin "goawk" || nix profile install nixpkgs#goawk +has_bin "grep" || nix profile install nixpkgs#gnugrep +has_bin "grex" || nix profile install nixpkgs#grex +has_bin "gron" || nix profile install nixpkgs#gron +has_bin "gum" || nix profile install nixpkgs#gum +has_bin "helix" || nix profile install nixpkgs#helix +has_bin "hexyl" || nix profile install nixpkgs#hexyl +has_bin "htop" || nix profile install nixpkgs#htop +has_bin "httpie" || nix profile install nixpkgs#httpie +has_bin "htmlq" || nix profile install nixpkgs#htmlq +has_bin "hyperfine" || nix profile install nixpkgs#hyperfine +has_bin "jc" || nix profile install nixpkgs#jc +has_bin "jiq" || nix profile install nixpkgs#jiq +has_bin "jo" || nix profile install nixpkgs#jo +has_bin "jq" || nix profile install nixpkgs#jq +has_bin "jqp" || nix profile install nixpkgs#jqp +has_bin "just" || nix profile install nixpkgs#just +has_bin "kibi" || nix profile install nixpkgs#kibi +has_bin "kondo" || nix profile install nixpkgs#kondo +has_bin "kubie" || nix profile install nixpkgs#kubie +has_bin "llama" || nix profile install nixpkgs#llama +has_bin "mdbook" || nix profile install nixpkgs#mdbook +has_bin "mosh" || nix profile install nixpkgs#mosh +has_bin "nix-bisect" || nix profile install nixpkgs#nix-bisect +# fails for some odd reason at the moment +#has_bin "nix-doc" || nix profile install nixpkgs#nix-doc +command -v "nix-doc" >/dev/null || cargo install nix-doc +has_bin "nix-init" || nix profile install nixpkgs#nix-init +has_bin "nix-search" || nix profile install github:peterldowns/nix-search-cli --refresh +has_bin "nurl" || nix profile install nixpkgs#nurl +has_bin "nvim" || nix profile install nixpkgs#neovim +has_bin "ouch" || nix profile install nixpkgs#ouch +has_bin "pstree" || nix profile install nixpkgs#pstree +#nix profile install nixpkgs#prettylist +has_bin "q" || nix profile install nixpkgs#q +has_bin "rg" || nix profile install nixpkgs#ripgrep +has_bin "rq" || nix profile install nixpkgs#rq +has_bin "rustfilt" || nix profile install nixpkgs#rustfilt +has_bin "sd" || nix profile install nixpkgs#sd +has_bin "shellcheck" || nix profile install nixpkgs#shellcheck +has_bin "shfmt" || nix profile install nixpkgs#shfmt +has_bin "spacer" || nix profile install nixpkgs#spacer +has_bin "starship" || nix profile install nixpkgs#starship +has_bin "terminal-notifier" || nix profile install nixpkgs#terminal-notifier +has_bin "tig" || nix profile install nixpkgs#tig +has_bin "tldr" || nix profile install nixpkgs#tealdeer +has_bin "tokei" || nix profile install nixpkgs#tokei +has_bin "upterm" || nix profile install nixpkgs#upterm +has_bin "vim" || nix profile install nixpkgs#vim +has_bin "watchexec" || nix profile install nixpkgs#watchexec +has_bin "xcp" || nix profile install nixpkgs#xcp +has_bin "xh" || nix profile install nixpkgs#xh +has_bin "xsv" || nix profile install nixpkgs#xsv +has_bin "zenith" || nix profile install nixpkgs#zenith +has_bin "zola" || nix profile install nixpkgs#zola +has_bin "zoxide" || nix profile install nixpkgs#zoxide diff --git a/install-mac-apps.sh b/install-mac-apps.sh new file mode 100755 index 0000000..1317cdb --- /dev/null +++ b/install-mac-apps.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +[ -n "${DEBUG-}" ] && set -x + +cd "$(dirname "$0")" || exit 1 + +shellcheck "$0" || exit 1 +shfmt -i 2 -d -s "$0" + +newest_wezterm_release() { + curl -s -H "Accept: application/vnd.github+json" -L https://api.github.com/repos/wez/wezterm/releases/latest | jq -r '.assets | map(select(.name | startswith("WezTerm-macos"))) | first.browser_download_url' +} +LATEST_WEZTERM=$(newest_wezterm_release) + +install_latest_wezterm() { + curl -Lo wezterm.zip "$LATEST_WEZTERM" + ouch d wezterm.zip + mv WezTerm-macos-*/WezTerm.app /Applications/ && rm -rf wezterm.zip WezTerm-macos-* +} + +if [ ! -e /Applications/WezTerm.app ]; then + install_latest_wezterm +else + current_wezterm=$(/Applications/WezTerm.app/Contents/MacOS/wezterm -V | awk '{print $2}') + if ! echo "$LATEST_WEZTERM" | grep "$current_wezterm" >/dev/null; then + install_latest_wezterm + fi +fi + +[ -d /usr/local/bin ] || sudo mkdir /usr/local/bin + +install_typst() { + echo "manually installing typst" + curl -sLO https://github.com/typst/typst/releases/download/22-03-21-2/typst-x86_64-apple-darwin.tar.gz + ouch d typst*.tar.gz + sudo install -m 755 typst*/typst /usr/local/bin/ + rm -rf ./typst* +} + +[ -e "/usr/local/bin/typst" ] || install_typst diff --git a/setup-mac.sh b/setup-mac.sh deleted file mode 100755 index 5351cb4..0000000 --- a/setup-mac.sh +++ /dev/null @@ -1,328 +0,0 @@ -#!/bin/sh - -[ -n "${DEBUG-}" ] && set -x - -cd "$(dirname "$0")" || exit 1 - -if ! pgrep nix-daemon >/dev/null 2>&1; then - sh <"$(curl -L https://nixos.org/nix/install)" -fi - -mkdir -p "$HOME/.config" - -mkdir -p "$HOME/.config/nix" -if [ ! -f "$HOME/.config/nix/nix.conf" ]; then - echo "experimental-features = nix-command flakes" >>"$HOME/.config/nix/nix.conf" - echo "trusted-users = root andrew" | sudo tee -a /etc/nix/nix.conf && sudo pkill nix-daemon - cachix use devenv - nix profile install --accept-flake-config github:cachix/devenv/latest -fi - -has_bin() { - [ -e "$HOME/.nix-profile/bin/$1" ] -} - -has_bin "atuin" || nix profile install nixpkgs#atuin -has_bin "bash" || nix profile install nixpkgs#bashInteractive -has_bin "bat" || nix profile install nixpkgs#bat -has_bin "bw" || nix profile install nixpkgs#bitwarden-cli -has_bin "broot" || nix profile install nixpkgs#broot -has_bin "cargo-dist" || nix profile install nixpkgs#cargo-dist -has_bin "cargo-flamegraph" || nix profile install nixpkgs#cargo-flamegraph -has_bin "cargo-release" || nix profile install nixpkgs#cargo-release -has_bin "cargo-udeps" || nix profile install nixpkgs#cargo-udeps -has_bin "cheat" || nix profile install nixpkgs#cheat -has_bin "chezmoi" || nix profile install nixpkgs#chezmoi -has_bin "croc" || nix profile install nixpkgs#croc -has_bin "curlie" || nix profile install nixpkgs#curlie -has_bin "delta" || nix profile install nixpkgs#delta -has_bin "difft" || nix profile install nixpkgs#difftastic -has_bin "direnv" || nix profile install nixpkgs#direnv -has_bin "dnsproxy" || nix profile install nixpkgs#dnsproxy -has_bin "dust" || nix profile install nixpkgs#du-dust -has_bin "exa" || nix profile install nixpkgs#exa -has_bin "fd" || nix profile install nixpkgs#fd -has_bin "flake-checker" || nix profile install github:DeterminateSystems/flake-checker -has_bin "flamegraph" || nix profile install nixpkgs#flamegraph -has_bin "fx" || nix profile install nixpkgs#fx -has_bin "fzf" || nix profile install nixpkgs#fzf -has_bin "git" || nix profile install nixpkgs#git -has_bin "git-gone" || nix profile install nixpkgs#git-gone -has_bin "goawk" || nix profile install nixpkgs#goawk -has_bin "grep" || nix profile install nixpkgs#gnugrep -has_bin "grex" || nix profile install nixpkgs#grex -has_bin "gron" || nix profile install nixpkgs#gron -has_bin "gum" || nix profile install nixpkgs#gum -has_bin "hexyl" || nix profile install nixpkgs#hexyl -has_bin "htop" || nix profile install nixpkgs#htop -has_bin "httpie" || nix profile install nixpkgs#httpie -has_bin "htmlq" || nix profile install nixpkgs#htmlq -has_bin "hyperfine" || nix profile install nixpkgs#hyperfine -has_bin "jc" || nix profile install nixpkgs#jc -has_bin "jiq" || nix profile install nixpkgs#jiq -has_bin "jq" || nix profile install nixpkgs#jq -has_bin "jqp" || nix profile install nixpkgs#jqp -has_bin "just" || nix profile install nixpkgs#just -has_bin "kibi" || nix profile install nixpkgs#kibi -has_bin "kondo" || nix profile install nixpkgs#kondo -has_bin "kubie" || nix profile install nixpkgs#kubie -has_bin "llama" || nix profile install nixpkgs#llama -has_bin "mdbook" || nix profile install nixpkgs#mdbook -has_bin "mosh" || nix profile install nixpkgs#mosh -has_bin "nix-bisect" || nix profile install nixpkgs#nix-bisect -# fails for some odd reason at the moment -#has_bin "nix-doc" || nix profile install nixpkgs#nix-doc -command -v "nix-doc" >/dev/null || cargo install nix-doc -has_bin "nix-init" || nix profile install nixpkgs#nix-init -has_bin "nix-search" || nix profile install github:peterldowns/nix-search-cli --refresh -has_bin "nurl" || nix profile install nixpkgs#nurl -has_bin "nvim" || nix profile install nixpkgs#neovim -has_bin "ouch" || nix profile install nixpkgs#ouch -has_bin "pstree" || nix profile install nixpkgs#pstree -#nix profile install nixpkgs#prettylist -has_bin "q" || nix profile install nixpkgs#q -has_bin "rg" || nix profile install nixpkgs#ripgrep -has_bin "rq" || jnix profile install nixpkgs#rq -has_bin "rustfilt" || nix profile install nixpkgs#rustfilt -has_bin "sd" || nix profile install nixpkgs#sd -has_bin "shellcheck" || nix profile install nixpkgs#shellcheck -has_bin "shfmt" || nix profile install nixpkgs#shfmt -has_bin "spacer" || nix profile install nixpkgs#spacer -has_bin "starship" || nix profile install nixpkgs#starship -has_bin "terminal-notifier" || nix profile install nixpkgs#terminal-notifier -has_bin "tig" || nix profile install nixpkgs#tig -has_bin "tldr" || nix profile install nixpkgs#tealdeer -has_bin "tokei" || nix profile install nixpkgs#tokei -has_bin "upterm" || nix profile install nixpkgs#upterm -has_bin "vim" || nix profile install nixpkgs#vim -has_bin "watchexec" || nix profile install nixpkgs#watchexec -has_bin "xcp" || nix profile install nixpkgs#xcp -has_bin "xh" || nix profile install nixpkgs#xh -has_bin "xsv" || nix profile install nixpkgs#xsv -has_bin "zenith" || nix profile install nixpkgs#zenith -has_bin "zola" || nix profile install nixpkgs#zola -has_bin "zoxide" || nix profile install nixpkgs#zoxide - -PATH="$PATH:$HOME/.nix-profile/bin" - -newest_wezterm_release() { - curl -s -H "Accept: application/vnd.github+json" -L https://api.github.com/repos/wez/wezterm/releases/latest | jq -r '.assets | map(select(.name | startswith("WezTerm-macos"))) | first.browser_download_url' -} -LATEST_WEZTERM=$(newest_wezterm_release) - -install_latest_wezterm() { - curl -Lo wezterm.zip "$LATEST_WEZTERM" - ouch d wezterm.zip - mv WezTerm-macos-*/WezTerm.app /Applications/ && rm -rf wezterm.zip WezTerm-macos-* -} - -if [ ! -e /Applications/WezTerm.app ]; then - install_latest_wezterm -else - current_wezterm=$(/Applications/WezTerm.app/Contents/MacOS/wezterm -V | awk '{print $2}') - if ! echo "$LATEST_WEZTERM" | grep "$current_wezterm" >/dev/null; then - install_latest_wezterm - fi -fi - -cat <"$HOME/.wezterm.lua" -local wezterm = require 'wezterm' -local config = {} - -if wezterm.config_builder then - config = wezterm.config_builder() -end - -config.font = wezterm.font_with_fallback({ - { family = 'Operator Mono', weight = 'Book' }, - 'Symbols Nerd Font' -}) -config.font_size = 22.0 -config.color_scheme = 'One Light (base16)' -config.window_background_opacity = 0.9 -config.initial_rows = 30 -config.initial_cols = 120 -config.use_fancy_tab_bar = false -config.mouse_bindings = { - { - event = { Up = { streak = 1, button = 'Left' } }, - mods = 'CTRL', - action = wezterm.action.OpenLinkAtMouseCursor, - }, -} -config.keys = { - -- Make Ctrl-b equivalent to Alt-b which many line editors interpret as backward-word - {key="b", mods="CTRL", action=wezterm.action{SendString="\x1bb"}}, - -- Make Ctrl-f equivalent to Alt-f which many line editors interpret as forward-word - {key="f", mods="CTRL", action=wezterm.action{SendString="\x1bf"}}, -} - -return config -EOF - -cat <"$HOME/.config/starship.toml" -[container] -disabled=true -EOF - -mkdir -p "$HOME/.config/helix/themes" -cat <"$HOME/.config/helix/config.toml" -theme = "mylight" - -[editor] -true-color = true -color-modes = true -idle-timeout = 75 -mouse = false -bufferline = "multiple" -auto-pairs = false - -[editor.indent-guides] -render = true - -[editor.cursor-shape] -insert = "bar" -normal = "block" -select = "underline" - -[editor.whitespace.render] -space = "all" -tab = "all" - -[keys.normal] -"$" = "goto_line_end" -"^" = "goto_line_start" -EOF - -cat <"$HOME/.config/helix/themes/mylight.toml" -inherits = "onelight" - -"comment" = { fg = "grey" } -"comment.line" = { fg = "grey" } -"comment.block" = { fg = "grey" } -"comment.block.documentation" = { fg = "grey" } -EOF - -cat <"$HOME/.gitconfig" -[push] - default = simple - -[user] - name = Andrew Coleman - email = penguincoder@gmail.com - -[advice] - detachedHead = false - -[core] - filemode = true - eol = lf - autocrlf = input - pager = delta - -[init] - defaultBranch = main - -[delta] - line-numbers = true - #line-numbers-zero-style = white - line-numbers-minus-style = bold red - line-numbers-plus-style = bold green - file-style = omit - hunk-header-style = file - syntax-theme = OneHalfLight - -[rebase] - autoStash = true - -[merge] - tool = vimdiff - conflictstyle = diff3 - prompt = false - -[pull] - rebase = true - -[color] - branch = auto - diff = auto - status = auto - ui = true - -[color "branch"] - current = yellow reverse - local = yellow - remote = green - -[color "diff"] - meta = yellow bold - frag = magenta bold - old = red bold - new = green bold - -[color "status"] - added = yellow - changed = green - untracked = red - -[alias] - logp = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short - lg = log --graph --date-order --first-parent \ - --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset' - lgb = log --graph --date-order --branches --first-parent \ - --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset' - lga = log --graph --date-order --all \ - --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset' - up = pull --rebase - branches-last-updated = branch -rv --sort=committerdate --format='%(HEAD) %(color:green)%(committerdate:relative)%(color:reset)\t%(color:magenta)%(authorname)%(color:reset)\t%(color:yellow)%(refname:short)%(color:reset)' -EOF - -if [ ! -d "$HOME/.cargo" ]; then - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path --default-toolchain stable --profile complete -y -fi - -cat <"$HOME/.tmux.conf" -set-option -g update-environment "SSH_AUTH_SOCK SSH_CONNECTION" -EOF - -cat <"$HOME/.vimrc" -" gratis https://swordandsignals.com/2020/12/13/5-lines-in-vimrc.html -set hlsearch " highlight all search results -set ignorecase " do case insensitive search -set incsearch " show incremental search results as you type -set number " display line number -set noswapfile " disable swap file -" can also be summarized as -set hls ic is nu noswf -" from https://www.guckes.net/vim/setup.html -set ai nocp ek hid ru sc vb wmnu noeb noet nosol -set bs=2 fo=cqrt ls=2 shm=at ww=<,>,h,l -set comments=b:#,:%,n:> -set list listchars=tab:>=,trail:- -set viminfo=%,'50,\"100,:100,n~/.viminfo -EOF - -install -m 640 ./.zshrc "$HOME/" - -AUTO_FILE="$HOME/.zshrc.auto" -{ - atuin init zsh --disable-up-arrow - direnv hook zsh - starship init zsh --print-full-init - zoxide init zsh -} >"$AUTO_FILE" - -[ -d /usr/local/bin ] || sudo mkdir /usr/local/bin - -install_typst() { - echo "manually installing typst" - curl -sLO https://github.com/typst/typst/releases/download/22-03-21-2/typst-x86_64-apple-darwin.tar.gz - ouch d typst*.tar.gz - sudo install -m 755 typst*/typst /usr/local/bin/ - rm -rf ./typst* -} - -[ -e "/usr/local/bin/typst" ] || install_typst - -shellcheck "$0" || exit 1 -shfmt -i 2 -d -s "$0" diff --git a/setup-shell-configs.sh b/setup-shell-configs.sh new file mode 100755 index 0000000..6dd2e8d --- /dev/null +++ b/setup-shell-configs.sh @@ -0,0 +1,170 @@ +#!/bin/sh + +[ -n "${DEBUG-}" ] && set -x + +cd "$(dirname "$0")" || exit 1 + +shellcheck "$0" || exit 1 +shfmt -i 2 -d -s "$0" + +mkdir -p "$HOME/.config" + +cat <"$HOME/.wezterm.lua" +local wezterm = require 'wezterm' +local config = {} + +if wezterm.config_builder then + config = wezterm.config_builder() +end + +config.font = wezterm.font_with_fallback({ + { family = 'Operator Mono', weight = 'Book' }, + 'Symbols Nerd Font' +}) +config.font_size = 22.0 +-- config.color_scheme = 'One Light (base16)' +config.color_scheme = 'Material Darker (base16)' +config.window_background_opacity = 0.9 +config.initial_rows = 30 +config.initial_cols = 120 +config.use_fancy_tab_bar = false +config.mouse_bindings = { + { + event = { Up = { streak = 1, button = 'Left' } }, + mods = 'CTRL', + action = wezterm.action.OpenLinkAtMouseCursor, + }, +} +config.keys = { + -- Make Ctrl-b equivalent to Alt-b which many line editors interpret as backward-word + {key="b", mods="CTRL", action=wezterm.action{SendString="\x1bb"}}, + -- Make Ctrl-f equivalent to Alt-f which many line editors interpret as forward-word + {key="f", mods="CTRL", action=wezterm.action{SendString="\x1bf"}}, +} + +return config +EOF + +cat <"$HOME/.config/starship.toml" +[container] +disabled=true +EOF + +mkdir -p "$HOME/.config/helix/themes" +cat <"$HOME/.config/helix/config.toml" +theme = "Molokai" + +[editor] +true-color = true +color-modes = true +idle-timeout = 75 +mouse = false +bufferline = "multiple" +auto-pairs = false + +[editor.indent-guides] +render = true + +[editor.cursor-shape] +insert = "bar" +normal = "block" +select = "underline" + +[editor.whitespace.render] +tab = "all" + +[editor.soft-wrap] +enable = true +EOF + +curl -sLo "$HOME/.config/themes.gitconfig" "https://raw.githubusercontent.com/dandavison/delta/main/themes.gitconfig" +cat <"$HOME/.gitconfig" +[include] + path = "~/.config/themes.gitconfig" + +[push] + default = simple + +[user] + name = Andrew Coleman + email = penguincoder@gmail.com + +[advice] + detachedHead = false + +[core] + filemode = true + eol = lf + autocrlf = input + pager = delta + +[init] + defaultBranch = main + +[delta] + line-numbers = true + file-style = omit + hunk-header-style = file + features = calochortus-lyallii + +[rebase] + autoStash = true + +[merge] + tool = vimdiff + conflictstyle = diff3 + prompt = false + +[pull] + rebase = true + +[color] + branch = auto + diff = auto + status = auto + ui = true + +[color "branch"] + current = yellow reverse + local = yellow + remote = green + +[color "status"] + added = yellow + changed = green + untracked = red + +[alias] + logp = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short + lg = log --graph --date-order --first-parent \ + --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset' + lgb = log --graph --date-order --branches --first-parent \ + --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset' + lga = log --graph --date-order --all \ + --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset' + up = pull --rebase + branches-last-updated = branch -rv --sort=committerdate --format='%(HEAD) %(color:green)%(committerdate:relative)%(color:reset)\t%(color:magenta)%(authorname)%(color:reset)\t%(color:yellow)%(refname:short)%(color:reset)' +EOF + +cat <"$HOME/.tmux.conf" +set-option -g update-environment "SSH_AUTH_SOCK SSH_CONNECTION" +EOF + +cat <"$HOME/.vimrc" +" gratis https://swordandsignals.com/2020/12/13/5-lines-in-vimrc.html +set hlsearch " highlight all search results +set ignorecase " do case insensitive search +set incsearch " show incremental search results as you type +set number " display line number +set noswapfile " disable swap file +" can also be summarized as +set hls ic is nu noswf +" from https://www.guckes.net/vim/setup.html +set ai nocp ek hid ru sc vb wmnu noeb noet nosol +set bs=2 fo=cqrt ls=2 shm=at ww=<,>,h,l +set comments=b:#,:%,n:> +set list listchars=tab:>=,trail:- +set viminfo=%,'50,\"100,:100,n~/.viminfo +EOF + +install -m 640 ./.zshrc "$HOME/"