UbuntuSetup

From DrewWiki
Jump to navigation Jump to search

Install Main Apps

#!/bin/bash
set -x
set -e

date

# passwordless sudo for my local box
if ! sudo grep drew /etc/sudoers; then
  sudo sh -c 'echo "drew ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers'
fi

# gsettings peronalizations
if [[ ! $(gsettings get org.gnome.desktop.interface clock-format) == "'12h'" ]]; then
  # set 12 hour time
  gsettings set org.gnome.desktop.interface clock-format 12h

  # set natural scrolling, GUI under 'Settings > Mouse'
  gsettings set org.gnome.desktop.peripherals.mouse natural-scroll true
  gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false

  # switch windows, not applications. GUI under 'Settings > Keyboard'
  gsettings set org.gnome.desktop.wm.keybindings switch-applications "[]"
  gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward "[]"
  gsettings set org.gnome.desktop.wm.keybindings switch-windows "['<Alt>Tab']"
  gsettings set org.gnome.desktop.wm.keybindings switch-windows-backward  "['<Alt><Shift>Tab']"

  # set gnome-terminal colors
  # gsettings list-recursively  "org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$profile/"
  # gsettings set "org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$profile/" login-shell true
  settings=("use-theme-colors false" "login-shell true" "default-show-menubar false" "foreground-color \
  'rgb(255,255,255)'" "background-transparency-percent 6" "background-color 'rgb(0,0,0)'" \
  "use-theme-transparency false" "scrollback-unlimited true" "use-transparent-background true")
  profile=$(gsettings get org.gnome.Terminal.ProfilesList default)
  profile=${profile:1:-1} # remove leading and trailing single quotes
  for i in "${settings[@]}"; do
    gsettings set "org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$profile/" $i
  done

  # remove clutter
  if [ -d Documents/ ]; then
    rmdir Documents/ Music/ Public/ Templates/ Videos/
    rm examples.desktop
  fi
fi

## disable popularity-contest
#sudo dpkg-reconfigure popularity-contest # disable

# oracle 8 add java repo
if [ ! -f /etc/apt/sources.list.d/webupd8team-ubuntu-java-artful.list ]; then
  sudo add-apt-repository -y ppa:webupd8team/java
  echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections
  echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections
fi

wait_apt() {
while true;
  sudo fuser /var/{lib/{dpkg,apt/lists},cache/apt/archives}/lock >/dev/null 2>&1; do
  echo "waiting for apt lock"
  sleep 1
done
}

# update all repos, upgrade, unless it's been 60 mins
#if ! find -H /var/lib/apt/lists -maxdepth 0 -mmin -60; then
  wait_apt; sudo apt-get -qy update && sudo apt-get -qy dist-upgrade
#fi

# install etckeeper and initialize it
if [ ! -d /etc/.git ]; then
  wait_apt; sudo apt-get install -qy etckeeper

  # set github here
  git config --global user.name "Drew Holt"
  git config --global user.email "[email protected]"

  sudo etckeeper init
fi

# install local installers already gathered
if [ ! -d /mnt/hdd ]; then
  sudo mkdir /mnt/hdd
  sudo mount /dev/vg_hdd/lv_hdd /mnt/hdd
  cd /mnt/hdd/iso_installers/ubuntu-installers
  wait_apt; sudo apt-get install -qy ./atom-amd64.deb ./google-chrome-stable_current_amd64.deb \
    ./insync_1.4.4.37065-artful_amd64.deb ./slack-desktop-3.1.0-amd64.deb \
    ./vagrant_2.0.3_x86_64.deb ./virtualbox-5.2_5.2.8-121009_Ubuntu_zesty_amd64.deb \
    ./skypeforlinux-64.deb ./keybase_amd64.deb ./chefdk_2.4.17-1_amd64.deb
fi

# for wireshark mscorefonts postfix prompts
echo wireshark-common wireshark-common/install-setuid boolean true | sudo debconf-set-selections
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
echo postfix postfix/mailname string drew-8570w.local | sudo debconf-set-selections
echo postfix postfix/main_mailer_type string 'Local only' | sudo debconf-set-selections

# install all the software
wait_apt;
DEBIAN_FRONTEND=noninteractive `#no prompting` sudo apt-get install -qy \
keepass2 synergy gnome-tweak-tool chrome-gnome-shell `#tools` \
vim vim-scripts vim-runtime vim-doc curl xd `#systools` \
lm-sensors p7zip-full exfat-utils exfat-fuse libimage-exiftool-perl `#systools` \
ubuntu-restricted-extras gimp audacity vlc vlc-plugin-fluidsynth ffmpeg atomicparsley `#media` \
openjdk-8-jdk icedtea-8-plugin `#java` \
openssh-server fail2ban `#daemon` \
openvpn network-manager-openconnect-gnome network-manager-openvpn-gnome `#network-client` \
rdesktop freerdp2-x11 xtightvncviewer sshpass qbittorrent wireshark `#netutil` \
nmap nikto chkrootkit wavemon namebench apache2-utils mailutils `#netutils` \
virtualenv python2.7-examples python-pip `#python` \
build-essential `#build-tools` \
shellcheck sqlitebrowser yamllint highlight gawk `#dev-tools` \
lynis pandoc apt-transport-https `#misc` \
xchat pidgin `#chatapps` \
oracle-java8-installer `#oraclejava8` \
ansible `#automation`

# Set good vim
sudo update-alternatives --set editor /usr/bin/vim.basic

# set env and aliases
if ! grep rdesktop "$HOME"/.bashrc; then
  cat <<EOF >> $HOME/.bashrc
  export PATH="$HOME/.local/bin:$PATH"
  alias xclip='xclip -selection clipboard'
  alias rdesktop='rdesktop -g 1280x720 -r clipboard:CLIPBOARD -r disk:share=/home/drew'
  alias get_ip='_get_ip() { VBoxManage guestproperty get "$1" "/VirtualBox/GuestInfo/Net/1/V4/IP";}; _get_ip'
EOF
fi

# install youtube-dl
if [ ! -f "$HOME"/.local/bin/youtube-dl ]; then
  pip install youtube-dl
fi

# install awscli
if [ ! -f "$HOME"/.local/bin/aws ]; then
  pip install awscli
fi

# configure lm_sensors
if ! lsmod | grep coretemp; then
  sudo sensors-detect --auto
fi

# rvm install
if [ ! -d "$HOME"/.rvm ]; then
  gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
  \curl -sSL https://get.rvm.io | bash -s stable --ruby
fi

# virtualbox extras pack
if ! echo $(vboxmanage list extpacks) | grep 1; then
  location="/mnt/hdd/iso_installers/ubuntu-installers/"
  echo y | sudo VBoxManage extpack install "$location"/Oracle_VM_VirtualBox_Extension_Pack-5.2.8.vbox-extpack
fi

# atom plugins
apm_pkgs=(atom-beautify autocomplete-python busy-signal django-templates intentions linter linter-ui-default script script-runner teletype)

for i in "${apm_pkgs[@]}"; do
  if [ ! -d $HOME/.atom/packages/$i ]; then
    apm install $i
  fi
done

# vagrant plugins
if ! vagrant plugin list | grep berkshelf; then
  vagrant plugin install vagrant-berkshelf
  vagrant plugin install berkshelf
fi

# nvm install
if [ ! -d "$HOME"/.nvm ]; then
  curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
fi

date

Local Installers and config needed

run_keybase
insync start ### do some magic here so we don't have to resync 200GB of google drive
  • Chrome [3]
  • Atom (apm in script) [4]
  • VirtualBox (in script) [5]
  • Vagrant (plugins in script) [6]
  • Slack [7]
  • Skype [8]
  • Docker (re-add to script) [9]
  • Orackle 8 (in script) [10]
  • rvm (in script) requires /bin/bash --login or fixed shell Ubuntu RVM Instructions
  • awscli (in script) [11]
  • nvm (in script) requires /bin/bash --login or fixed shell (in script) [12]
  • ChefDK (in script) [13]

When needed

drew@drew-8570w:~$ snap list
Name                  Version                  Rev   Developer      Notes
core                  16-2.29.4.2              3604  canonical      core
drive                 current                  22    fireeye        -
juju                  2.3.1                    3106  canonical      classic
kubectl               1.9.0                    266   canonical      classic

Configure misc

Configure SSH keys

Create new ones or replenish from vault.

Configure GPG keys

Pull from vault, set git config

gpg --import drewholt-private-2018.03.01.key
git config --global user.signingkey 7A27C99359698874

Set gnome-screenshot default save directory

?

Set default downloads directory to Desktop

command for firefoxx, chrome, qbit, skype, slack, hangouts, etc

Gnome Tweak Tool

Install extension then use Tweak tool to configure.

Dash to Dock

  • Dash to Dock [20]
  • TopIcons-plus [21] - for Insync, Slack, Skype icons
  • OpenWeather [22]
  • Grown-up notifications [23]

Extensions installed into:

$ ~/.local/share/gnome-shell/extensions
* restart GNOME Shell (Alt+F2, r, Enter) and enable the extension through gnome-tweak-tool.

Maybe Snaps

drew@drew-8570w:~$ snap list
picard                1.4.2                    2     pachulo        -
spotify               1.0.70.399.g5ffabd56-26  5     spotify        -
sqlitebrowser-casept  3.9.1                    2     casept         -
vault                 v0.9.0                   236   snapcrafters   -
vscode                1.19.1-1513676564        22    flexiondotorg  classic