#!/bin/bash # Debian containers only PACKAGES="vim git dbus " REPO=https://github.com/SonnyBA/dotfiles.git run() { systemd-nspawn -D $CONTAINER_PATH $@ } add_ssh() { sed -i 's/^#Port .*/Port '"$PORT"'/' $CONTAINER_PATH/etc/ssh/sshd_config sed -i 's/^#PermitRootLogin .*/PermitRootLogin yes/' $CONTAINER_PATH/etc/ssh/sshd_config # Restart ssh in order to load changes run systemctl restart ssh touch $CONTAINER_PATH/root/.bash_profile cat $CONTAINER_PATH/root/.bash_profile < $ENV source $ENV for key in $KEYS; do ssh-add ~/.ssh/$key done echo 'Agent started' else source $ENV echo 'Agent started already, good to go' fi EOF } dotfiles() { run git clone $REPO $CONTAINER_PATH/root/dotfiles run $CONTAINER_PATH/root/dotfiles/initialize_script } read -e -p "Enter the path of the container (including container root): " CONTAINER_PATH read -p "Enter debian release channel: " CHANNEL read -e -p "Enter (private) ssh key for git (absolute path): " KEY read -p "Start a ssh server? [y/n]: " SSH_SERVER if [ "$SSH_SERVER" == "y" ];then read -p "Enter ssh listening port: " PORT PACKAGES+=" ssh " fi echo "Current packages: $PACKAGES" read -p "Enter additional packages (space separated) to install or leave blank: " EXTRA PACKAGES+=$EXTRA # Seperate packages with a comma for debootstrap's include flag PACKAGES=$(echo $PACKAGES | sed 's/\ /,/g;s/,$//') read -p "Add dotfiles? [y/n]: " DOTFILES echo "Creating container.." debootstrap --include=$PACKAGES $CHANNEL $CONTAINER_PATH mkdir $CONTAINER_PATH/root/.bin/ echo "Copying key.." mkdir $CONTAINER_PATH/root/.ssh cp $KEY $KEY.pub $CONTAINER_PATH/root/.ssh/ if [ "$SSH_SERVER" == "y" ] ;then add_ssh $CONTAINER_PATH $PORT fi if [ "$DOTFILES" == "y" ] ;then dotfiles $CONTAINER_PATH fi echo "Starting container first time, enter root pass" run passwd