125 lines
1.6 KiB
Bash
Executable File
125 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
set -o pipefail
|
|
|
|
if (( $# != 1 )); then
|
|
echo "usage: docker-install.bash UID" >&2
|
|
exit 1
|
|
fi
|
|
|
|
uid="$1"
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
apt-get install -y curl gnupg lsb-release
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
|
curl -sS https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
|
|
|
|
tee -a /etc/apt/sources.list.d/custom.list >/dev/null <<"EOF"
|
|
deb https://deb.nodesource.com/node_14.x focal main
|
|
deb https://dl.yarnpkg.com/debian/ stable main
|
|
deb-src https://deb.nodesource.com/node_14.x
|
|
EOF
|
|
|
|
packages="
|
|
|
|
# Needed for project infrastructure
|
|
bash
|
|
git
|
|
make
|
|
nodejs
|
|
yarn
|
|
|
|
# Handy utilities
|
|
bsdmainutils
|
|
curl
|
|
emacs-nox
|
|
git
|
|
lsof
|
|
make
|
|
man-db
|
|
nano
|
|
sudo
|
|
tmux
|
|
vim
|
|
wget
|
|
|
|
# Bash
|
|
bash
|
|
|
|
# C/C++
|
|
clang
|
|
|
|
# Clojure
|
|
clojure
|
|
|
|
# Emacs Lisp
|
|
emacs-nox
|
|
|
|
# Fish
|
|
fish
|
|
|
|
# Go
|
|
golang
|
|
|
|
# Haskell
|
|
cabal-install
|
|
ghc
|
|
|
|
# Java
|
|
default-jdk
|
|
|
|
# Julia
|
|
julia
|
|
|
|
# Lua
|
|
lua5.3
|
|
|
|
# Node.js
|
|
nodejs
|
|
yarn
|
|
|
|
# Python
|
|
python3
|
|
python3-pip
|
|
python3-venv
|
|
|
|
# Ruby
|
|
ruby
|
|
|
|
# Rust
|
|
rustc
|
|
|
|
# Vimscript
|
|
vim
|
|
|
|
# Zsh
|
|
zsh
|
|
|
|
"
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
apt-get install -y $(grep -v "^#" <<< "$packages")
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
cd /tmp
|
|
wget -nv https://github.com/watchexec/watchexec/releases/download/1.13.1/watchexec-1.13.1-x86_64-unknown-linux-gnu.deb
|
|
dpkg -i watchexec-*.deb
|
|
rm watchexec-*.deb
|
|
|
|
if (( "$uid" != 0 )); then
|
|
useradd --uid="$uid" --create-home --groups sudo docker
|
|
passwd -d docker
|
|
else
|
|
ln -s /root /home/docker
|
|
fi
|
|
|
|
touch /home/docker/.zshrc
|
|
chown docker:docker /home/docker/.zshrc
|
|
|
|
rm "$0"
|