hadees / dotfiles-1

:rocket: macOS development setup, powered by ansible

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

About

dotfiles on ansible fully automate configuration of Mac OS X development machine, inlcuding setting up non-dev apps and settings (check osx-host role).

Setup

Warning: Make sure you fork this repo and adjust it to your own preferences before even starting the setup.

  1. Install brew, git, pip, ansible.

  2. Clone this repo.

  3. Copy GPG key to location, specified in gpg_key_file variable.

  4. Run

    $ ansible-galaxy install -r requirements.yml
    $ ansible-playbook -i hosts playbooks/setup_dev_env.yml
    

    and provide ansible with the variables it asks for (ssh password, pass utility git origin).

  5. Add newly generated ssh keys to github/etc.

  6. Save passphrase[s] of newly generated ssh keys to your password manager (pass, in case of this repo).

Usage

After setup is done, you can execute only parts of the setup by specifying tag[s].

$ ansible-playbook -i hosts playbooks/setup_dev_env.yml -t <tags>

Tags:

  • brew [tasks] - setup brew taps, packages, cask apps
  • sdkman [tasks] - SDKMAN! is a tool for managing JDK environments and tools: java, scala, maven, etc.
  • git [tasks] - symlink git dotfiles, setup git hooks for dotfiles repo
  • gpg [tasks] - import gpg key
  • pip [tasks] - install pip packages
  • iterm2 [tasks] - setup iterm2 to use custom folder for preferences
  • node [tasks] - download and install nvm, node, npm packages
  • pass [tasks] - setup password manager
  • ssh-ident [tasks] - download and install ssh-ident
  • ssh [tasks] - create ssh keys based on specified ssh_keys variable data
  • vscode [tasks] - symlink vscode settings and install vscode extensions
  • zsh [tasks] - ensure zsh and oh-my-zsh are installed and symlinked
  • permissions - make sure the files have correct permissions
  • dock [tasks] - dock preferences
  • finder [tasks] - finder settings
  • systemuiserver [tasks] - systemuiserver(specifically, menu bar) settings (battery, clock, bluetooth)
  • mission-control [tasks] - mission control settings

Note: roles/<role>/vars/main.yml in each role is supposed to contain secret information. The format of the secret information is described in roles/<role>/vars/main.example.yml file. It's loaded automatically by ansible.

Thanks to

Inspired by lots of repositories and articles, but most importantly:

About

:rocket: macOS development setup, powered by ansible

License:MIT License


Languages

Language:Shell 97.8%Language:HTML 2.2%