--- - hosts: localhost tasks: - name: Install homebrew include_role: name: geerlingguy.mac.homebrew - name: Make sure homebrew bin is in path ansible.builtin.lineinfile: path: /etc/paths state: present line: '/opt/homebrew/bin' become: true become_user: root - name: 'add custom homebrew repos' community.general.homebrew_tap: name: [ adoptopenjdk/openjdk, fishtown-analytics/dbt, heroku/brew, homebrew/cask-versions, thoughtbot/formulae, weaveworks/tap, ] - name: Install core packages via brew casks community.general.homebrew_cask: name: "{{ item }}" ignore_errors: yes with_items: - 1password - android-sdk - android-studio - datagrip - docker - dropbox - figma - google-chrome - google-cloud-sdk - iterm2 - kindle - ngrok - slack - sublime-text - telegram - visual-studio-code - vlc - zoom - tuple - name: "Install homebrew packages" community.general.homebrew: name: [ 'autoconf', 'automake', 'aws-iam-authenticator', 'awscli', 'bfg', 'coreutils', 'curl', 'dbt@0.18.0', 'direnv', 'dnsmasq', 'fzf', 'gnu-time', 'gpg', 'heroku', 'htop', 'imagemagick@6', 'kubectx', 'kubernetes-cli', 'kubernetes-helm', 'libtool', 'libxslt', 'libyaml', 'mas', 'openssl' , 'pkg-config', 'postgresql', 'rcm', 'readline', 'redis', 'sqlite3', 'tmux', 'unixodbc', 'unzip', 'vim', 'watchman', 'xz', 'yarn', 'zlib', 'zsh', ] state: present update_homebrew: yes - name: "Install from Mac app store" shell: mas install {{ item }} with_items: - 497799835 # xcode - name: Get the path to ZSH become: false local_action: command which zsh register: zsh_path - name: "Ensure homebrew zsh is in allowed shells" lineinfile: path: /etc/shells line: "{{ zsh_path.stdout }}" become: true - name: Install Oh My ZSH shell: sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" args: creates: "/Users/{{ lookup('env', 'USER') }}/.oh-my-zsh" - name: Set ZSH as the default shell shell: chsh -s $(which zsh) {{ lookup('env', 'USER') }} become: true - name: "Create a default ZSH configuration" template: src: templates/.zshrc.j2 dest: /Users/{{ lookup('env', 'USER') }}/.zshrc owner: "{{ lookup('env', 'USER') }}" force: yes - name: Create a default VSCode configuration template: src: templates/vscode-settings.json.j2 dest: /Users/{{ lookup('env', 'USER') }}/Library/Application Support/Code/User/settings.json owner: "{{ lookup('env', 'USER') }}" force: yes - name: Create a default VSCode keuybinding configuration template: src: templates/vscode-keybindings.json.j2 dest: /Users/{{ lookup('env', 'USER') }}/Library/Application Support/Code/User/keybindings.json owner: "{{ lookup('env', 'USER') }}" force: yes # Add something which ensures path is set here - name: Install VSCode extensions shell: code --install-extension {{ item }} with_items: - apollographql.vscode-apollo - bradlc.vscode-tailwindcss - castwide.solargraph - clinyong.vscode-css-modules - eamodio.gitlens - jakebecker.elixir-ls - kaiwood.endwise - karunamurti.haml - ms-vscode-remote.vscode-remote-extensionpack - ms-vscode.vscode-typescript-tslint-plugin - msjsdiag.debugger-for-chrome - rebornix.ruby - richie5um2.vscode-sort-json - Tyriar.sort-lines - vscodevim.vim - wholroyd.jinja - wingrunr21.vscode-ruby - xabikos.javascriptsnippets - streetsidesoftware.code-spell-checker - fabiospampinato.vscode-todo-plus - git: repo: https://github.com/asdf-vm/asdf.git dest: "/Users/{{ lookup('env', 'USER') }}/.asdf" version: v0.8.1 - name: "Create a default asdf configuration" template: src: templates/.asdfrc.j2 dest: /Users/{{ lookup('env', 'USER') }}/.asdfrc owner: "{{ lookup('env', 'USER') }}" force: yes - name: "Install asdf plugins" shell: | source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh asdf plugin-add {{ item }} || exit 0 with_items: - ruby - elixir - nodejs - python - erlang - name: "Install Default Python" shell: | source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh asdf install python 3.10.0 asdf global python 3.10.0 pip3 install ansible asdf reshim python - name: "Install Default Ruby" shell: | source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh asdf install ruby 3.0.2 asdf global ruby 3.0.2 gem install bundler gem install cocoapods gem install rubocop gem install solargraph - name: "Install default node" shell: | source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh bash /Users/{{ lookup('env', 'USER') }}/.asdf/plugins/nodejs/bin/import-release-team-keyring asdf install nodejs 16.4.2 asdf global nodejs 16.4.2 - name: "Install default erlang" shell: | source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh asdf install erlang 24.0.2 asdf global erlang 24.0.2 - name: "Install default elixir" shell: | source /Users/{{ lookup('env', 'USER') }}/.asdf/asdf.sh asdf install elixir 1.12.3-otp-24 asdf global elixir 1.12.3-otp-24 mix local.hex --force - name: Install yarn packages shell: yarn global add {{ item }} with_items: - react-native-cli - create-react-app - apollo - generator-generator - yo - name: re-generate bins now we've installed some yarn packages shell: asdf reshim nodejs