/laptop

Configuration used to bootstrap and manage my development laptop

Primary LanguagePerlMIT LicenseMIT

Laptop

Build Status License

This is the configuration I use to bootstrap and maintain my development machines. I have automated the bulk of this over the years and it's helped me maintain a reproducible development machine.

Look through my osx-bootstrapping repository for a previous incantation of this setup.

Travis CI

You will also notice that this repository is linked into Travis CI and builds are kicked off automatically on PRs and such.

The idea here is that if this successfully builds in Travis, there's a reasonable chance it will build when it comes time to bootstrap my laptop again.

Manual Preparation

  • Ensure that the Fn keys at the top act as actual Function keys by default, and not their Lenovo counterparts. This will need to be done in the bios.
  • Ensure that VTx virtualization has been enabled. This will also need to be done in the bios.

Bootstrap the Dell T1700 from scratch

  1. Boot up the Dell T1700 with the netboot.xyz USB key in place. Ensure that an ethernet cable is connected.
  2. At the boot screen, hit F12 and select USB Storage Device.
  3. Install Ubuntu 16.04. When prompted, supply http://cdn.rawgit.com/marvinpinto/laptop/master/ubuntu-mp-desktop-preseed.cfg as the preseed URL.
  4. After the reboot, hit Ctrl + Alt + F1 to get to terminal.
  5. Run the following curl/bash incantation to get everything going:
    export ANSIBLE_VAULT_PASSWORD=sekrit
    bash -xec "$(curl -L https://raw.githubusercontent.com/marvinpinto/laptop/master/bootstrap.sh)"
  6. Reboot the machine after everything installs correctly.
  7. Follow the instructions to restore the GPG keys.
  8. Follow the instructions to restore all the data files.
  9. Follow the instructions to restore all the base project directories.
  10. Follow the instructions to initialize the 1password CLI.
  11. Configure wicd-curses to connect to the WiFi network.
  12. Reboot the machine one last time.

Bootstrap the Lenovo X1 Carbon from scratch

To be updated..

Restoring GPG keys

Configure the yubikey to work on the new machine:

$ gpg --card-edit
gpg/card> fetch
gpg/card> quit

Mark the GPG key as ultimately trusted:

$ gpg --edit-key 52654E6EB0BB564B
gpg> trust
Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y
gpg> quit

Restoring files

Use the rclone wrapper to copy/sync all the data files:

$ acd-backup "down"

Initialize the 1password CLI

$ bootstrap-op

Restoring project directories

Use the git wrapper script to restore all the base project directories:

$ bootstrap-projects

Updating a user config file

Make any changes as needed and then run make dotfiles to apply them locally.

Adding or removing a system application

Similar to updating a config file, adding/removing system applications (and their configuration) will involve tweaking the ansible roles linked to this repository.

Make the changes as needed and then run:

make system