Skip to content

Instantly share code, notes, and snippets.

@bdmorin
Forked from dwallraff/bootstrap.sh
Last active July 12, 2022 17:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bdmorin/54e15b22a57eea69be8b880fa2569225 to your computer and use it in GitHub Desktop.
Save bdmorin/54e15b22a57eea69be8b880fa2569225 to your computer and use it in GitHub Desktop.
Crostini penguin bootstrap script -- curl -sL dwallraff.com/bootstrap | bash
#! /usr/bin/env bash
#-- Dave Wallraff
# -- bdmorin@gmail.com
### bootstrap crostini container
# curl -sL https://gist.githubusercontent.com/bdmorin/54e15b22a57eea69be8b880fa2569225/raw/6517ceb92a750597875c92ad35f227eb0a3747e1/crostini-bootstrap.sh | bash
# Do all this in ansible, duh
# wrap in a function for curl|bash
do_stuff() {
######
## Add other repos and tools
######
DEBIAN_VER="$(grep VERSION= /etc/os-release | awk -F "[()]" '{print $2}')"
export DEBIAN_VER
ARCH="$(uname -m)"
export ARCH
# vs-code
wget -O- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
echo "deb https://packages.microsoft.com/repos/vscode stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
# signal
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
sudo mv signal-desktop-keyring.gpg /usr/share/keyrings/
echo 'deb [arch=$ARCH signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list
# helm
# wget -O- https://baltocdn.com/helm/signing.asc | sudo apt-key add -
# echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
# docker
#wget -O- https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#echo "deb [arch=$ARCH] https://download.docker.com/linux/debian $DEBIAN_VER stable" | sudo tee /etc/apt/sources.list.d/docker.list
# 1Password
curl -sS https://downloads.1password.com/linux/keys/1password.asc | sudo gpg --dearmor --output /usr/share/keyrings/1password-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/1password-archive-keyring.gpg] https://downloads.1password.com/linux/debian/$(dpkg --print-architecture) stable main" | sudo tee /etc/apt/sources.list.d/1password.list
sudo mkdir -p /etc/debsig/policies/AC2D62742012EA22/
curl -sS https://downloads.1password.com/linux/debian/debsig/1password.pol | sudo tee /etc/debsig/policies/AC2D62742012EA22/1password.pol
sudo mkdir -p /usr/share/debsig/keyrings/AC2D62742012EA22
curl -sS https://downloads.1password.com/linux/keys/1password.asc | sudo gpg --dearmor --output /usr/share/debsig/keyrings/AC2D62742012EA22/debsig.gpg
######
## Install tools
######
export DEBIAN_FRONTEND=noninteractive
#https://www.linuxuprising.com/2019/06/fix-missing-gpg-key-apt-repository.html
#sudo apt update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' | while read -r key; do if ! [[ ${keys[*]} =~ $key ]]; then sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys "$key"; keys+=("$key"); fi; done
sudo apt update --fix-missing -y
sudo apt dist-upgrade -y
# apt install the things
# docker-ce=18.03.1~ce-0~debian \
# helm \
sudo apt install -y \
1password-cli \
apt-transport-https \
build-essential \
bzip2 \
ca-certificates \
code \
conntrack \
coreutils \
curl \
dnsutils \
file \
git \
gnome-keyring \
gnupg2 \
hping3 \
httpie \
hugo \
iperf \
iputils-ping \
iputils-tracepath \
jq \
less \
libkrb5-3 \
libsecret-1-0 \
lsof \
man \
mosh \
mtr \
netcat \
nmap \
openssl \
python3 \
python3-pip \
signal-desktop \
software-properties-common \
tcpdump \
tmate \
traceroute \
unzip \
vim \
wget \
whois \
zlib1g
######
## Software not in repos
######
# golang
# cd /usr/local && sudo wget -O go.tar.gz "https://dl.google.com/go/$(curl https://go.dev/VERSION?m=text).linux-$ARCH.tar.gz" \
# && sudo tar -C /usr/local -xzf go.tar.gz && sudo rm go.tar.gz
# shell check
cd /usr/local/bin && sudo wget -O shellcheck.tar.xz \
"$(curl -s https://api.github.com/repos/koalaman/shellcheck/releases/latest \
| jq --raw-output '.assets[] | .browser_download_url' | grep --color=never linux.x86)" && sudo xz -d shellcheck.tar.xz \
&& sudo tar xf shellcheck.tar --wildcards --strip-components 1 shellcheck*/shellcheck && sudo rm shellcheck.tar \
&& sudo chmod +x shellcheck
# rmapi (remarkable api)
#cd /usr/local/bin && sudo wget -O rmapi.tar.gz \
# "$(curl -s https://api.github.com/repos/juruen/rmapi/releases/latest \
# | jq --raw-output '.assets[] | .browser_download_url' | grep --color=never linux)" \
# && sudo tar xzf rmapi.tar.gz && sudo chmod +x rmapi
# reStream (remarkable streaming)
#cd /usr/local/bin && sudo wget -O reStream \
# "$(curl -s https://api.github.com/repos/rien/reStream/releases/latest \
# | jq --raw-output '.assets[] | .browser_download_url' | grep --color=never .sh)" \
# && sudo chmod +x reStream
#cd ~ && wget -O /tmp/restream.arm.static \
# "$(curl -s https://api.github.com/repos/rien/reStream/releases/latest \
# | jq --raw-output '.assets[] | .browser_download_url' | grep --color=never .arm.)"
# calibre
#wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin
# docker-compose
#sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o \
# /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
# cleanup
sudo apt update && sudo apt upgrade -y
sudo apt autoremove
sudo sh -c 'echo "" > /etc/motd'
#sudo rm /etc/update-motd.d/10-uname
######
## Clone my stuffs
######
#git clone https://github.com/dwallraff/dotfiles ~/code/dotfiles
#cd ~/code/dotfiles || return
#git remote set-url origin git@github.com:dwallraff/dotfiles.git
#cd ~ || return
######
## Link stuffs up
######
#mkdir -p ~/.ssh/configs
#mkdir -p ~/.gnupg
#mkdir -p ~/code/kohls
#mkdir -p /usr/local/go/work/src
#chmod 700 ~/.gnupg
#ln -sf ~/code/dotfiles/bashrc ~/.bashrc
#ln -sf ~/code/dotfiles/vimrc ~/.vimrc
#ln -sf ~/code/dotfiles/screenrc ~/.screenrc
#ln -sf ~/code/dotfiles/gitconfig ~/.gitconfig
#ln -sf ~/code/dotfiles/gitconfig_kohls ~/code/kohls/.gitconfig
#ln -sf ~/code/dotfiles/gpg-agent.conf ~/.gnupg/gpg-agent.conf
#ln -sf ~/code/dotfiles/authorized_keys ~/.ssh/authorized_keys
#ln -sf ~/code/dotfiles/ssh_config ~/.ssh/config
#ln -sf ~/code/dotfiles/ssh_config_includes ~/.ssh/configs
#ln -sf /mnt/chromeos/MyFiles/ ~/MyFiles
# Add public key to keychain
#gpg --recv 86E3A6538517BCC6F7140CF926E38F79A25C6B83
#echo -e "5\ny\n" | gpg --command-fd 0 --expert --edit-key 86E3A6538517BCC6F7140CF926E38F79A25C6B83 trust
#####
## Start crostini SSH server
#####
#sudo mv /etc/ssh/sshd_not_to_be_run /etc/ssh/sshd_to_be_run
#sudo sed -i '/#PasswordAuthentication yes/ c\PasswordAuthentication no' /etc/ssh/sshd_config
#sudo systemctl restart ssh
######
## Add docker patch for Crostini
## https://www.reddit.com/r/Crostini/comments/9jabhq/docker_now_working/
## Fix for docker perms issue
## https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue/51362528#51362528
######
#sudo cp ~/code/dotfiles/docker_on_crostini/runc-chromeos /usr/local/sbin/runc-chromeos
#sudo chmod +x /usr/local/sbin/runc-chromeos
#sudo cp ~/code/dotfiles/docker_on_crostini/daemon.json /etc/docker/daemon.json
#sudo service docker restart
#sudo chmod 666 /var/run/docker.sock
}
do_stuff
######
## Afterwords
######
# Termina Color Scheme backup
#cat << 'EOF' > ~/termina_config_backup.json
#{
# "magic": "nassh-prefs",
# "version": 1,
# "nassh": {
# "profile-ids": [
# {
# "id": "4998",
# "json": {
# "description": "localhost",
# "username": "dwallraff",
# "hostname": "penguin.linux.test",
# "port": 22,
# "nassh-options": "--ssh-agent=gsc",
# "argstr": "-A"
# }
# },
# {
# "id": "1026",
# "json": {
# "description": "pi-hole",
# "username": "pi",
# "hostname": "192.168.86.32",
# "port": 22
# }
# }
# ],
# "welcome/notes-version": 137,
# "welcome/show-count": 10
# },
# "hterm": {
# "default": {
# "audible-bell-sound": "",
# "background-color": "#fdf6e3",
# "cursor-color": "rgba(101, 123, 131, 0.5)",
# "color-palette-overrides": [
# "#073642",
# "#dc322f",
# "#859900",
# "#b58900",
# "#268bd2",
# "#d33682",
# "#2aa198",
# "#eee8d5",
# "#002b36",
# "#cb4b16",
# "#586e75",
# "#657b83",
# "#839496",
# "#6c71c4",
# "#93a1a1",
# "#fdf6e3"
# ],
# "use-default-window-copy": true,
# "ctrl-c-copy": true,
# "ctrl-v-paste": true,
# "enable-bold": true,
# "enable-bold-as-bright": false,
# "environment": {
# "TERM": "xterm-16color"
# },
# "font-family": "\"Source Code Pro\", monospace",
# "font-size": 14,
# "font-smoothing": "subpixel-antialiased",
# "foreground-color": "#657b83",
# "keybindings-os-defaults": true,
# "pass-ctrl-n": true,
# "pass-ctrl-t": true,
# "pass-ctrl-tab": true,
# "pass-ctrl-w": true,
# "user-css": "http://fonts.googleapis.com/css?family=Source+Code+Pro"
# }
# }
#}
#EOF
#
#cat << 'EOF' > ~/reMarkable.txt
### For new chromebook/remarkable setup
#Get the ssh keys from 1password
#Connect reMarkable to chromebook
#ssh-copy-id -i remarkable.pub root@10.11.99.1
#scp /tmp/restream.arm.static remarkable:/home/root/restream
#ssh remarkable 'chmod +x /home/root/restream'
#EOF
#cat << 'EOF' > ~/README.txt
#If this is a completely new install:
#
# ## Restore settings to Termina
#-----
#
#- Right-click Secure Shell app icon
# - Select options
# - Restore backup
# - Select termina_config_backup.json
#
#- Create shortcut
# - triple dot -> More tools -> Create shortcut -> New window
#EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment