UbuntuSetup: Difference between revisions

From DrewWiki
Jump to navigation Jump to search
(add 12hr format, guard to wait for active apt, deb-conf-set-selections)
Line 4: Line 4:
set -x
set -x
set -e
set -e
START=$(date +%s)


date
date
Line 38: Line 36:
   profile=${profile:1:-1} # remove leading and trailing single quotes
   profile=${profile:1:-1} # remove leading and trailing single quotes
   for i in "${settings[@]}"; do
   for i in "${settings[@]}"; do
     gsettings set "org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$profile/" $i
     gsettings set "org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$profile/" "$i"
   done
   done


Line 58: Line 56:
fi
fi


# update all repos, upgrade, 3600 set to 0 when debugging
wait_apt() {
#if ! find -H /var/lib/apt/lists -maxdepth 0 -mmin -10; then
while true;
   sudo apt-get update
  sudo fuser /var/{lib/{dpkg,apt/lists},cache/apt/archives}/lock >/dev/null 2>&1; do
  sudo apt-get -y dist-upgrade
  echo "waiting for apt lock"
#fi
  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
# install etckeeper and initialize it
if [ ! -d /etc/.git ]; then
if [ ! -d /etc/.git ]; then
   sudo apt-get install -y etckeeper
   wait_apt; sudo apt-get install -qy etckeeper


   # set github here
   # set github here
Line 80: Line 85:
   sudo mount /dev/vg_hdd/lv_hdd /mnt/hdd
   sudo mount /dev/vg_hdd/lv_hdd /mnt/hdd
   cd /mnt/hdd/iso_installers/ubuntu-installers
   cd /mnt/hdd/iso_installers/ubuntu-installers
   sudo apt-get install -y ./atom-amd64.deb ./google-chrome-stable_current_amd64.deb \
   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 \
     ./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 \
     ./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
     ./skypeforlinux-64.deb ./keybase_amd64.deb ./chefdk_2.4.17-1_amd64.deb
fi
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
# install all the software
DEBIAN_FRONTEND=noninteractive `#no prompting` sudo apt-get install -y \
wait_apt;
DEBIAN_FRONTEND=noninteractive `#no prompting` sudo apt-get install -qy \
keepass2 synergy gnome-tweak-tool chrome-gnome-shell `#tools` \
keepass2 synergy gnome-tweak-tool chrome-gnome-shell `#tools` \
vim vim-scripts vim-runtime vim-doc curl xd `#systools` \
vim vim-scripts vim-runtime vim-doc curl xd `#systools` \
Line 109: Line 121:


# set env and aliases
# set env and aliases
if ! grep rdesktop $HOME/.bashrc; then
if ! grep rdesktop "$HOME"/.bashrc; then
   cat <<EOF >> $HOME/.bashrc
   cat <<EOF >> $HOME/.bashrc
   export PATH="$HOME/.local/bin:$PATH"
   export PATH="$HOME/.local/bin:$PATH"
Line 119: Line 131:


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


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


# rvm install
# rvm install
if [ ! -d $HOME/.rvm ]; then
if [ ! -d "$HOME"/.rvm ]; then
   gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
   gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
   \curl -sSL https://get.rvm.io | bash -s stable --ruby
   \curl -sSL https://get.rvm.io | bash -s stable --ruby
Line 141: Line 153:
# virtualbox extras pack
# virtualbox extras pack
if ! echo $(vboxmanage list extpacks) | grep 1; then
if ! echo $(vboxmanage list extpacks) | grep 1; then
   $location="/mnt/hdd/iso_installers/ubuntu-installers/"
   location="/mnt/hdd/iso_installers/ubuntu-installers/"
   echo y | sudo VBoxManage extpack install $location/Oracle_VM_VirtualBox_Extension_Pack-5.2.8.vbox-extpack
   echo y | sudo VBoxManage extpack install "$location"/Oracle_VM_VirtualBox_Extension_Pack-5.2.8.vbox-extpack
fi
fi


Line 157: Line 169:


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


date
date
END=$(date +%s)
DIFF=$(echo "$END - $START" | bc)
</syntaxhighlight>
</syntaxhighlight>



Revision as of 23:00, 29 March 2018

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" "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
if ! apm list | grep teletype; then
  apm install atom-beautify linter-flake8 linter-pep8 autocomplete-python django-templates script-runner teletype
fi

# 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 [4]
  • VirtualBox [5]
  • Vagrant [6]
  • Slack [7]
  • Skype [8]
  • Docker (in script) [9]
  • Orackle 8 (in script)
  • rvm (in script) requires /bin/bash --login or fixed shell Ubuntu RVM Instructions
  • awscli (in script) [10]
  • nvm (in script) requires /bin/bash --login or fixed shell (in script) [11]
  1. ChefDK (in script) [12]

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

Replenish from vault.

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 [19]
  • TopIcons-plus [20] - for Insync, Slack, Skype icons
  • OpenWeather [21]
  • Grown-up notifications [22]

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