This is the tool I use to set up my Ubuntu workstations at home.
- Enter wireless password.
sudo apt-get update && sudo apt-get -y install xclip git 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 email@example.com:mblair/setup.git
git clone firstname.lastname@example.org:mblair/personal.git
git clone email@example.com:mblair/ruby_the_hard_way.git
- Change the password in
time ./setup.sh 2>&1 | tee /home/matt/output
- Change power & screen saver settings.
git config --global github.token <token>
- 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_hostssince 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).
ssh-copy-id shortnamefor 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)
- Set up an APT mirror at home, like this, so
apt-get dist-upgradedoesn'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 || dieso 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.
emailer.pymention time taken and attach a log of the output. Remove the
- Nicer error handling (see
emailer.pymention 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
- 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
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
- Versions with a VERSION file.
- Changelog, or something like
git commit -vthat 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.
HACKINGfile 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.
MIT. See LICENSE for details.