diff --git a/apply-dotfiles b/apply-dotfiles index da6a81f..88a87ba 100755 --- a/apply-dotfiles +++ b/apply-dotfiles @@ -1,13 +1,26 @@ -#!/usr/bin/env nix-shell -#! nix-shell -p stow -i bash +#!/usr/bin/env bash -stow bash -stow sh -stow readline +apply_dotfile() { + directory_to_stow="${1}" + stow --adopt -S -t "${HOME}" "${directory_to_stow}" +} -stow vim +# Adopt will change the files in stow to match existing files. +# We don't want this, we just want to handle existing files gracefully. +# We simply adopt all the files and then at the end restore our git repo to undo changes +restore_from_adoption() { + git restore . +} -stow ruby -stow python +apply_dotfile bash +apply_dotfile sh +apply_dotfile readline -stow ssh +apply_dotfile vim + +apply_dotfile ruby +apply_dotfile python + +apply_dotfile ssh + +restore_from_adoption diff --git a/apply-secret-dotfiles b/apply-secret-dotfiles index 0e0d441..f9c5c6c 100755 --- a/apply-secret-dotfiles +++ b/apply-secret-dotfiles @@ -1,5 +1,4 @@ -#!/usr/bin/env nix-shell -#! nix-shell -p stow envsubst -i bash +#!/usr/bin/env bash envsubst -i taskwarrior/.taskrc.envsubst.template -o taskwarrior/.taskrc stow taskwarrior diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..d4d8483 --- /dev/null +++ b/install.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +echo "CURRENT LOCATION: $PWD" + +echo "Installing dotfiles..." +if [ -f /etc/os-release ]; then + echo "Idenitfying OS to install GNU stow..." + if grep -q -i debian /etc/os-release; then + echo "You've got Debian!"; + sudo apt update; + sudo apt install -y stow; + elif grep -q -i rhel /etc/os-release || grep -q -i fedora /etc/os-release; then + echo "You've got RedHat (or maybe Fedora)! Which is unsupported right now sorry!"; + # sudo yum install -y stow; + # sudo yum clean all; + exit 1 + elif grep -q -i alpine /etc/os-release; then + echo "You've got Alpine! Which is unsupported right now sorry!"; + exit 1; + # apk add --no-cache jq curl; + else + echo "ERROR: Unable to identify OS!" 1>&2; + exit 1; + fi; +else + echo "ERROR: Unable to find '/etc/os-release' information!" 1>&2; + exit 1; +fi + +# Apply the dotfiles with stow +echo "RUNNING APPLY DOTFILES" +./apply-dotfiles +echo "RAN APPLY DOTFILES" diff --git a/nix-install b/nix-install new file mode 100755 index 0000000..6d5069f --- /dev/null +++ b/nix-install @@ -0,0 +1,7 @@ +#!/usr/bin/env nix-shell +#! nix-shell -p stow envsubst -i bash + +# Uses nix shell to setup the dotfiles +./apply-dotfiles +# Secret dotfiles need interactivity anyways, not worrying about this for now +# ./apply-secret-dotfiles