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
-
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)
-
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 withversions.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.
- 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 thetime
from thesetup.sh
invocation. - Nicer error handling (see
test.sh
), haveemailer.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
andimplode
, orbrew 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 affecttotem-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.
MIT. See LICENSE for details.