dotfiles

My personal home directory config files
git clone https://erai.gay/code/dotfiles/
Log | Files | Refs | LICENSE

install.sh (1160B)


      1 #!/bin/bash
      2 
      3 set -ue
      4 
      5 files=(
      6 	bash_logout
      7 	bash_profile
      8 	bashrc
      9 	inputrc
     10 	gdbinit
     11 	gitconfig
     12 	gitignore
     13 	pythonrc
     14 	tmux.conf
     15 	wgetrc
     16 	Xresources
     17 	xmodmap
     18 	gnupg/gpg-agent.conf
     19 	gnupg/sshcontrol
     20 	ssh/authorized_keys
     21 	ssh/config
     22 	"ssh/known_hosts 0022"
     23 	ssh/rc
     24 	bin/post
     25 	bin/watch.sh
     26 	vim/ftdetect/omiltem.vim
     27 	vim/ftplugin/omiltem.vim
     28 	vim/indent/omiltem.vim
     29 	vim/syntax/omiltem.vim
     30 	vim/plugin/postwrite.vim
     31 	vim/plugin/sensible.vim
     32 	vim/plugin/sudo.vim
     33 	vim/plugin/writegood.vim
     34 	vim/vimrc
     35 )
     36 
     37 if ! [ -p "${HOME}/.post" ]; then
     38 	rm -f "${HOME}/.post" && mkfifo "${HOME}/.post"
     39 fi
     40 
     41 (umask 0077 && mkdir -p "${HOME}/.cache/vim" "${HOME}/.cache/vim/swap" "${HOME}/.cache/vim/undo")
     42 (umask 0077 && mkdir -p "${HOME}/.gnupg")
     43 chmod go-rx "${HOME}/.gnupg" "${HOME}/.cache/vim"
     44 
     45 gpg --import gnupg/keys/*.asc
     46 gpg --import-ownertrust < gnupg/otrust.txt
     47 
     48 for line in "${files[@]}"; do
     49 	read src mask <<< "${line}"
     50 	if [ -z "${mask}" ]; then
     51 		mask="0222"
     52 	fi
     53 
     54 	dest="${HOME}/.${src}"
     55 	mkdir -p "$(dirname "${dest}")"
     56 
     57 	tmp=$(mktemp -u -p "${HOME}" .tmp.XXXXXXXXXX)
     58 	(umask "${mask}" && cp "${src}" "${tmp}")
     59 	mv -T --no-copy -f "${tmp}" "${dest}" || rm "${tmp}"
     60 done