/setup

Tool to set up my Ubuntu workstations.

Primary LanguageShellMIT LicenseMIT

Setup

This is the tool I use to set up my Ubuntu workstations at home.

USAGE

  • Enter wireless password.

  • sudo apt-get update && sudo apt-get -y install xclip git byobu

  • byobu

  • ssh-keygen -q -b 4096 -t rsa -N [passphrase] -f /home/matt/id_rsa

  • cat ~/.ssh/id_rsa.pub | xclip -selection clipboard

  • Add the SSH key to GitHub.

  • git clone git@github.com:mblair/setup.git

  • git clone git@github.com:mblair/personal.git

  • git clone git@github.com:mblair/ruby_the_hard_way.git

  • cd setup

  • sudo su

  • Change the password in emailer.py

  • time ./setup.sh 2>&1 | tee /home/matt/output

  • Change power & screen saver settings.

  • git config --global github.token <token>

  • Restart.

  • Open Firefox, download and install Dropbox.

  • Set chromium-browser settings: sync, download location, fonts.

  • Configure gnome-terminal & Nautilus.

  • Configure the rest of the system settings.

  • Remove the first entries (GitHub) from ~/.ssh/known_hosts since they were added before HashKnownHosts was turned off.

  • Hit 'Install Drivers' to get the restricted drivers tray icon to go away on your laptop (boo Broadcom).

  • Install this

  • ssh-copy-id shortname for all of my servers.

  • Build thumbnails.

  • Install Virtualbox Extension Pack, guest OSs & Guest Additions.

  • Configure Rhythmbox (may no longer be necessary).

  • Configure Deluge (download location, ports, bandwidth) (may no longer be necessary)

TODO

  • Set up an APT mirror at home, like this, so apt-get dist-upgrade doesn't take so long.

  • Try building deluge yourself, since the version in the deluge-team ppa doesn't have a launcher.

  • Create a Debian archive for git/python/vim/pidgin/etc, like Debra, using these two resources, so you only have to build packages once per release.

  • Easy updates based on versions.sh (upgrade/downgrade/outdated). Upgrade uninstalls the old packages, grab the new source, compile, build, install. Downgrade does the same, needs an explicit version. Outdated compares installed versions with versions.sh. Upgrade without a package upgrades all.

  • Automate the screen bootstrapping, possibly with techniques from here.

  • An automatic installer, like oh-my-zsh and RVM. Have it bootstrap Git via a Gist or a standalone script in this repo, then clone this repo (via https, since you can't add your public key without your API key being available somehow) and get going.

  • Figure out restart functionality, like so.

  • Figure out why installing Python from source is breaking Rhythmbox.

  • Possibly switch to Clementine.

  • Put GnuPG instructions in here.

No longer important:

  • Refactor so you can run arbitrary setup scripts and still use the main versions.sh/functions.sh. So 'movein' (all of what setup currently performs) would become a recipe of sorts, demoted to the same level as 'gitweb' or 'nginx'.
  • Make the name of the added user configurable.
  • Nicer directory structure (packages go in a separate folder)
  • Use Roundup. This looks awesome.
  • Organize stuff into functions, not just files. Then you can source everything, and run func || die so your error handler knows where shit hit the fan.
  • Man pages using ronn once you've got some useful flags that require explanation.
  • Makefile like this or a Rakefile like this. Probably a Makefile, since you won't have to jump through hoops just to get it to run.
  • Source documentation with Shocco. Expand flags in the source so you have less documentation to write (just explain short ones that don't have a long form).
  • Bash completion, based on Homebrew's.
  • Nested READMEs. I didn't realize this was possible.
  • Check out Aruba for testing. Here's another example. And here is a video. And a blog post.
  • Test changes with vagrant before committing.
  • Set up a Jenkins instance to test changes locally via Vagrant before you push to GitHub, as well as any pull requests before merging them.
  • Have emailer.py mention time taken and attach a log of the output. Remove the time from the setup.sh invocation.
  • Nicer error handling (see test.sh), have emailer.py mention what section failed.
  • Fix these: grep -Pinr "^[\t]*if[^=]*=[^=]" *, making them all use double equals. Bash accepts singles but they look scary.
  • Easy way to upgrade/uninstall setup itself (like RVM's get head and implode, or brew update)
  • Make the timezone configurable.
  • File where you can declare what's installed, not just 'movein' or 'nginx'; how about both?
  • See what gstreamer packages are installed by the Ubuntu desktop installer's non-free option, and see if removing the others from desktop.sh will affect totem-video-thumbnailer, since you use VLC anyway.
  • Make sure you mention that this needs to be run as root, and that it updates your system (and therefore should be run on a fresh box).
  • Better SSH security like so
  • Nice installation messages like railsready and RVM.
  • Figure out a Vim version string that doesn't cause apt to want to update it. Probably 2:blah.
  • Versions with a VERSION file.
  • Changelog, or something like git commit -v that shows you a diff since the last tag and lets you write a changelog. I'm not sure commit messages make the most sense for a changelog.
  • A HACKING file that talks about internals, once they're ready to be talked about.
  • Add a progress bar.
  • Create a Yum repository, possibly. Here's a tutorial, I think.
  • Make this work with Arch, but only customization (dotfiles, whatever else) since Arch stays current and is source-based. Plus FPM doesn't do Arch.
  • Gentoo support. Maybe.
  • Figure out how to profile this, possibly like so.

LICENSE

MIT. See LICENSE for details.