mirror of
https://github.com/correl/dotfiles.git
synced 2024-12-18 11:06:17 +00:00
Add provisioning scripts
This commit is contained in:
parent
6750387219
commit
d699950ad3
11 changed files with 176 additions and 0 deletions
14
Dockerfile
Normal file
14
Dockerfile
Normal file
|
@ -0,0 +1,14 @@
|
|||
FROM ubuntu
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y sudo locales
|
||||
|
||||
RUN localedef -i en_US -f UTF-8 en_US.UTF-8 \
|
||||
&& useradd -m -s /bin/bash correl \
|
||||
&& echo 'correl ALL=(ALL) NOPASSWD:ALL' >>/etc/sudoers
|
||||
|
||||
USER correl
|
||||
WORKDIR /home/correl
|
||||
COPY . /home/correl/dotfiles
|
||||
RUN DEBUG=1 /home/correl/dotfiles/provision.sh
|
||||
CMD ["/bin/bash", "/home/correl/dotfiles/provision.sh"]
|
29
provision.sh
Executable file
29
provision.sh
Executable file
|
@ -0,0 +1,29 @@
|
|||
#!/bin/bash
|
||||
set +e
|
||||
|
||||
function _run {
|
||||
local msg=$1
|
||||
shift
|
||||
if [ -z "$DEBUG" ]; then
|
||||
echo -n "$msg..."
|
||||
$@ 2>&1 >/dev/null
|
||||
else
|
||||
echo "$msg..."
|
||||
$@
|
||||
fi
|
||||
echo "done."
|
||||
}
|
||||
|
||||
function _recipe {
|
||||
source ${HOME}/dotfiles/recipes/$1
|
||||
}
|
||||
|
||||
USER=${USER:-$(whoami)}
|
||||
_PLATFORM=$(uname -s | awk '{print tolower($1)}')
|
||||
|
||||
for recipe in base $@; do
|
||||
_recipe $recipe
|
||||
done
|
||||
|
||||
echo "Finished, restarting shell."
|
||||
exec $SHELL
|
15
recipes/apt
Normal file
15
recipes/apt
Normal file
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ -z "$__apt_updated" ]; then
|
||||
_run "Update APT cache" sudo apt-get update
|
||||
__apt_updated=yes
|
||||
fi
|
||||
|
||||
function _apt {
|
||||
local pkg=$1
|
||||
if ! dpkg -s $pkg >/dev/null 2>&1; then
|
||||
_run "[apt] Install $pkg" sudo apt-get install -y $1
|
||||
else
|
||||
echo "[apt] $pkg is already installed, skipping."
|
||||
fi
|
||||
}
|
6
recipes/base
Normal file
6
recipes/base
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
set +e
|
||||
|
||||
_recipe brew
|
||||
_recipe git
|
||||
_recipe zsh
|
35
recipes/brew
Normal file
35
recipes/brew
Normal file
|
@ -0,0 +1,35 @@
|
|||
#!/bin/bash
|
||||
set +e
|
||||
|
||||
function __install_brew {
|
||||
case "$(uname -s)" in
|
||||
Darwin)
|
||||
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
;;
|
||||
*)
|
||||
_recipe apt
|
||||
|
||||
for pkg in build-essential curl file git python-setuptools; do
|
||||
_apt $pkg
|
||||
done
|
||||
[ -d ~/.linuxbrew ] || git clone -q https://github.com/Linuxbrew/brew.git ~/.linuxbrew
|
||||
PATH="$HOME/.linuxbrew/bin:$HOME/.linuxbrew/sbin:$PATH"
|
||||
test -r ~/.bash_profile && echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.bash_profile
|
||||
echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.profile
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function _brew {
|
||||
local pkg=$1
|
||||
if ! brew ls $pkg >/dev/null 2>&1; then
|
||||
_run "[brew] Install $pkg" brew install $@
|
||||
else
|
||||
echo "[brew] $pkg is already installed, skipping."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
if ! which brew >/dev/null; then
|
||||
_run "Install brew" __install_brew
|
||||
fi
|
5
recipes/elm
Normal file
5
recipes/elm
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
_recipe nvm
|
||||
_npm elm-oracle
|
||||
_npm elm-format
|
13
recipes/emacs
Normal file
13
recipes/emacs
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
set +e
|
||||
|
||||
_recipe brew
|
||||
|
||||
case $_PLATFORM in
|
||||
darwin)
|
||||
_brew emacs --with-cocoa --with-librsvg --with-imagemagick@6
|
||||
;;
|
||||
linux)
|
||||
_brew emacs --with-librsvg --with-imagemagick@6
|
||||
;;
|
||||
esac
|
5
recipes/git
Normal file
5
recipes/git
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
set +e
|
||||
|
||||
_recipe brew
|
||||
_brew git
|
3
recipes/haskell
Normal file
3
recipes/haskell
Normal file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
_brew haskell-stack
|
22
recipes/nvm
Normal file
22
recipes/nvm
Normal file
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
set +e
|
||||
|
||||
function __install_nvm {
|
||||
curl -s -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh >/dev/null | bash
|
||||
source ~/.nvm/nvm.sh
|
||||
nvm install node 2>/dev/null
|
||||
nvm alias default node
|
||||
}
|
||||
|
||||
function _npm {
|
||||
local pkg=$1
|
||||
if ! npm list -g $pkg >/dev/null; then
|
||||
_run "[npm] Install $pkg" npm install --no-progress -g $@
|
||||
else
|
||||
echo "[npm] $pkg is already installed, skipping."
|
||||
fi
|
||||
}
|
||||
|
||||
if ! [ -f ~/.nvm/nvm.sh ]; then
|
||||
_run "Install nvm" __install_nvm
|
||||
fi
|
29
recipes/zsh
Normal file
29
recipes/zsh
Normal file
|
@ -0,0 +1,29 @@
|
|||
#!/bin/bash
|
||||
set +e
|
||||
|
||||
_recipe brew
|
||||
_brew zsh
|
||||
|
||||
__zsh_bin="$(which zsh)"
|
||||
__zsh_files=(.zshrc)
|
||||
|
||||
if ! grep "^$__zsh_bin\$" /etc/shells >/dev/null; then
|
||||
sudo sh -c "echo $__zsh_bin >> /etc/shells"
|
||||
fi
|
||||
case "$(uname -s)" in
|
||||
Darwin)
|
||||
__shell=$(dscl . -read /Users/${USER} UserShell | awk '{print $2}')
|
||||
;;
|
||||
*)
|
||||
__shell=$(getent passwd $USER | cut -d: -f7)
|
||||
;;
|
||||
esac
|
||||
if [ "$__shell" != "$__zsh_bin" ]; then
|
||||
echo "Install $__zsh_bin as default shell (currently $__shell)"
|
||||
sudo chsh -s $__zsh_bin ${USER}
|
||||
fi
|
||||
export SHELL=$__zsh_bin
|
||||
|
||||
if ! [ -f ${HOME}/.zshrc ]; then
|
||||
_run "Install .zshrc" ln -s ${HOME}/dotfiles/.zshrc ${HOME}/.zshrc
|
||||
fi
|
Loading…
Reference in a new issue