acourtneybrown / dotfiles

0 stars 0 forks source link

Bootstrap & Dotfiles

This repo borrows heavily from MikeMcQuaid/strap (and associated app) along with mathiasbynens/dottfiles. In addition, it relies on deadc0de6/dotdrop to manage the dotfiles.

Flags affecting run

Setup

macOS

On macOS, it may be necessary to run xcode-select --install if the git command is not initially available on the Mac.

When first setting up a (new?) machine, run the os-setup script.

Run the bootstrap script to install the dotfiles into the relevant location(s).

Ultimately, both of these files should be idempotent and thus can be used to re-run to update as needed.

*Note: During an initial installation run, you may see complaints about `_env_install` dotdrop actions failing, but those are not consequential.**

Linux

The os-setup script currently works for Debian-based Linux distros, including Ubuntu & Raspbian.

It may be necessary to install git (sudo apt install git) in order to clone the repo for installation.

General flow

git clone <this repo> .dotfiles
cd .dotfiles

# export DOTFILES_SKIP_UPDATES=y if avoiding system updates

./script/os-setup

# some manual interaction initially

# log into 1Password app
# enable SSH agent in 1Password
# enable cli integration in 1Password

./script/bootstrap # optional dotdrop profiles to add for machine, like "personal"

Windows

In an Powershell Administrator window:

irm https://raw.githubusercontent.com/acourtneybrown/dotfiles/master/script/win-admin-setup.ps1 | iex

In a Powershell windows (non-Administrator):

irm https://raw.githubusercontent.com/acourtneybrown/dotfiles/master/script/win-user-setup.ps1 | iex

Operations performed

script/os-setup

On Mac

  1. [optional] install OS updates
  2. run macos script
  3. install xcode tools

On Linux

  1. [optional] install OS updates
  2. Ensure en_US.UTF-8 locale is available & installed

Items in italics require manual intervention currently.

script/bootstrap

Optionally takes any additional dotdrop profiles to add to the newly created machine profile (eg: personal).

  1. install homebrew/linuxbrew
  2. add profile & included profiles to dotdrop config
  3. for each profile, run the profile-specific installation
  4. dotdrop install
  5. for each profile, run the profile-specific after-installation

profile::<profile> & profile::<profile>_after

General approach for these functions:

  1. install brew bundle (Brewfile.<profile>)
  2. install Python-based tools (& multiple versions of Python)
  3. install any OS-specific packages via native (non-homebrew) package manager