diff --git a/.gitignore b/.gitignore index ea99acf..cc35c0f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ private_dotfiles private_dotfiles/** +installed-prefs *.swp *~ *.bak diff --git a/dotfiles/profile b/dotfiles/profile index f42df6a..6b9ad55 100644 --- a/dotfiles/profile +++ b/dotfiles/profile @@ -14,7 +14,7 @@ fi # Paths and preferences export PATH="$HOME/bin:/sbin:/usr/sbin:$PATH" -export PYTHONPATH="$HOME/.python" +export PYTHONPATH="$HOME/.python:$PYTHONPATH" export GOPATH="$HOME/.go" export VISUAL=vim export EDITOR=vim @@ -23,7 +23,8 @@ export DEBFULLNAME="David Tomaschik" export LESS="-MR" EXTRA_PATHS=("$HOME/.gce/google-cloud-sdk/bin" "$HOME/bin/genymotion" - "$HOME/bin/genymotion/tools" "$HOME/bin/go_appengine" ) + "$HOME/bin/genymotion/tools" "$HOME/bin/google_appengine" + "$HOME/bin/go_appengine" ) for p in "${EXTRA_PATHS[@]}" ; do if [ -d "$p" ] ; then export PATH="$PATH:$p" diff --git a/install.sh b/install.sh index eeb0759..cdfa69b 100755 --- a/install.sh +++ b/install.sh @@ -3,26 +3,6 @@ set nounset set errexit -BASEDIR=${BASEDIR:-$HOME/.skel} -MINIMAL=${MINIMAL:-0} -INSTALL_KEYS=${INSTALL_KEYS:-1} -INSTALL_PKGS=${INSTALL_PKGS:-$((1 - ${MINIMAL}))} - -if [[ ! -d $BASEDIR ]] ; then - echo "Please install to $BASEDIR!" 1>&2 - exit 1 -fi - -if which dpkg-query > /dev/null ; then - HAVE_X=`dpkg-query -s xserver-xorg | grep -c 'Status.*installed'` -else - HAVE_X=0 -fi - -IS_KALI=`grep -ci kali /etc/os-release 2>/dev/null` -ARCH=`uname -m` - - function prerequisites { # Prerequisites require git if ! which git > /dev/null ; then @@ -110,7 +90,16 @@ function install_ssh_keys { echo 'Installing SSH keys...' >&2 local AK="${HOME}/.ssh/authorized_keys" local key - for key in ${BASEDIR}/keys/ssh/* ; do + local keydir + if (( ${TRUST_ALL_KEYS} )) ; then + keydir=${BASEDIR}/keys/ssh + else + keydir=${BASEDIR}/keys/ssh/trusted + fi + for key in ${keydir}/* ; do + if [[ ! -f ${key} ]] ; then + continue + fi if ssh_key_already_installed "${key}" ; then echo "Key `basename ${key}` already installed..." >&2 continue @@ -166,8 +155,9 @@ function run_as_root { } function install_pkg_set { - if [[ ! -f ${1} ]] ; then return 0 ; fi - run_as_root apt-get install -y `cat ${BASEDIR}/${1}` + local pkg_file=${BASEDIR}/${1} + if [[ ! -f ${pkg_file} ]] ; then return 0 ; fi + run_as_root apt-get install -y `cat ${pkg_file}` } function install_apt_pkgs { @@ -192,6 +182,54 @@ function install_chrome { ( echo "Could not install chrome." >&2 && return 1 ) } +function read_saved_prefs { + # Can't use basedir here as we don't have it yet + local pref_file=`dirname $0`/installed-prefs + if [ -f ${pref_file} ] ; then + echo "Loading saved skel preferences from ${pref_file}" >&2 + source ${pref_file} + fi +} + +function save_prefs { + local pref_file=${BASEDIR}/installed-prefs + (echo_pref BASEDIR + echo_pref MINIMAL + echo_pref INSTALL_KEYS + echo_pref TRUST_ALL_KEYS + echo_pref INSTALL_PKGS) > $pref_file +} + +function echo_pref { + echo "$1=\${$1:-${!1}}" +} + + +# Setup variables +read_saved_prefs + +# Defaults if not passed in or saved +BASEDIR=${BASEDIR:-$HOME/.skel} +MINIMAL=${MINIMAL:-0} +INSTALL_KEYS=${INSTALL_KEYS:-1} +TRUST_ALL_KEYS=${TRUST_ALL_KEYS:-0} +INSTALL_PKGS=${INSTALL_PKGS:-$((1 - ${MINIMAL}))} + +# Check prerequisites +if [[ ! -d $BASEDIR ]] ; then + echo "Please install to $BASEDIR!" 1>&2 + exit 1 +fi + +if which dpkg-query > /dev/null ; then + HAVE_X=`dpkg-query -s xserver-xorg 2>/dev/null | grep -c 'Status.*installed'` +else + HAVE_X=0 +fi + +IS_KALI=`grep -ci kali /etc/os-release 2>/dev/null` +ARCH=`uname -m` + (( $MINIMAL )) || prerequisites (( $INSTALL_PKGS )) && is_deb_system && install_apt_pkgs @@ -201,3 +239,4 @@ test -d "${BASEDIR}/private_dotfiles" && \ install_basic_dir "${BASEDIR}/bin" "${HOME}/bin" (( $MINIMAL )) || postinstall (( $INSTALL_KEYS )) && install_keys +save_prefs diff --git a/keys/ssh/id_rsa_glaptop.pub b/keys/ssh/id_rsa_glaptop.pub new file mode 100644 index 0000000..af9b7d0 --- /dev/null +++ b/keys/ssh/id_rsa_glaptop.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8vQiJn9J2KjNIwX427Zq0gpvD1XdR0j+3gY1DTG1yGU808a001YCw0UTQzaSfRZ0ixWyOiFiZ0UcyZnJlN/dQeIKvxWeIW6T3kjpkjzLiBJbloHT0CvqJoz/VAPuBKH9sVKabZlmufqM3B43XDCDS8UGcxUmHxSFSh4hsqurP+ywI8QsoLz1epiFeUQCqsLG5LZIpthAYDOXtxp6cVoKgosi+zJm7sHG/pIof//WMW1xFCArEQfiWXa3Mv3Ir+geKej3lmWPMZNyGpGVtH9w0VHmzPX6OY02CelUoqe/yQDqZ0SjVKm0WZOHStAep0sxVR7/zHvS36Wk0eSptuenR davidtomaschik@glaptop diff --git a/keys/ssh/trusted/id_ecdsa_human.pub b/keys/ssh/trusted/id_ecdsa_human.pub new file mode 120000 index 0000000..96efa95 --- /dev/null +++ b/keys/ssh/trusted/id_ecdsa_human.pub @@ -0,0 +1 @@ +../id_ecdsa_human.pub \ No newline at end of file diff --git a/keys/ssh/trusted/id_rsa_human.pub b/keys/ssh/trusted/id_rsa_human.pub new file mode 120000 index 0000000..c535aae --- /dev/null +++ b/keys/ssh/trusted/id_rsa_human.pub @@ -0,0 +1 @@ +../id_rsa_human.pub \ No newline at end of file diff --git a/packages b/packages index 958eb81..b5c4bfd 100644 --- a/packages +++ b/packages @@ -12,10 +12,13 @@ gnupg-agent gnupg-curl iftop iptraf +ipython +ipython3 kpartx ldap-utils ltrace lvm2 +mosh ngrep nmap opensc