From bc4190b21dd7d387b393e449834d714db21e45e9 Mon Sep 17 00:00:00 2001 From: Minn Soe Date: Wed, 25 Sep 2024 15:58:51 +0100 Subject: [PATCH] feat: clean up and update all playbook tasks --- playbook.yml | 49 ++++++-------- roles/desktop/tasks/main.yml | 87 +++++-------------------- roles/development/tasks/main.yml | 8 --- roles/dotfiles/tasks/main.yml | 13 ---- roles/dotfiles/vars/main.yml | 3 - roles/editors/tasks/main.yml | 41 ------------ roles/emacs/tasks/main.yml | 18 +++++ roles/entertainment/tasks/main.yml | 17 ----- roles/file/tasks/main.yml | 14 ---- roles/fonts/tasks/main.yml | 8 +++ roles/go-dev/tasks/main.yml | 40 ------------ roles/golang/tasks/main.yml | 14 ++++ roles/hardware/tasks/main.yml | 10 --- roles/misc/tasks/main.yml | 10 --- roles/multimedia/tasks/main.yml | 15 +++++ roles/node-dev/defaults/main.yml | 8 --- roles/node-dev/tasks/main.yml | 30 --------- roles/node/tasks/main.yml | 9 +++ roles/productivity/tasks/main.yml | 31 --------- roles/python-dev/tasks/macos.yml | 8 --- roles/python-dev/tasks/main.yml | 9 --- roles/python/tasks/main.yml | 8 +++ roles/shell-utils/tasks/main.yml | 38 ----------- roles/system-utils/tasks/common.yml | 14 ---- roles/system-utils/tasks/macos.yml | 20 ------ roles/system-utils/tasks/main.yml | 19 ++++-- roles/user-utils/tasks/main.yml | 62 ++++++++++++++++++ roles/version-control/tasks/main.yml | 21 ------ roles/visual-studio-code/tasks/main.yml | 6 ++ roles/web/tasks/main.yml | 26 -------- roles/zsh/defaults/main.yml | 8 --- roles/zsh/tasks/configure.yml | 14 ---- roles/zsh/tasks/install.yml | 32 --------- roles/zsh/tasks/main.yml | 31 +++++++-- 34 files changed, 212 insertions(+), 529 deletions(-) delete mode 100644 roles/development/tasks/main.yml delete mode 100644 roles/dotfiles/tasks/main.yml delete mode 100644 roles/dotfiles/vars/main.yml delete mode 100644 roles/editors/tasks/main.yml create mode 100644 roles/emacs/tasks/main.yml delete mode 100644 roles/entertainment/tasks/main.yml delete mode 100644 roles/file/tasks/main.yml create mode 100644 roles/fonts/tasks/main.yml delete mode 100644 roles/go-dev/tasks/main.yml create mode 100644 roles/golang/tasks/main.yml delete mode 100644 roles/hardware/tasks/main.yml delete mode 100644 roles/misc/tasks/main.yml create mode 100644 roles/multimedia/tasks/main.yml delete mode 100644 roles/node-dev/defaults/main.yml delete mode 100644 roles/node-dev/tasks/main.yml create mode 100644 roles/node/tasks/main.yml delete mode 100644 roles/productivity/tasks/main.yml delete mode 100644 roles/python-dev/tasks/macos.yml delete mode 100644 roles/python-dev/tasks/main.yml create mode 100644 roles/python/tasks/main.yml delete mode 100644 roles/shell-utils/tasks/main.yml delete mode 100644 roles/system-utils/tasks/common.yml delete mode 100644 roles/system-utils/tasks/macos.yml create mode 100644 roles/user-utils/tasks/main.yml delete mode 100644 roles/version-control/tasks/main.yml create mode 100644 roles/visual-studio-code/tasks/main.yml delete mode 100644 roles/web/tasks/main.yml delete mode 100644 roles/zsh/defaults/main.yml delete mode 100644 roles/zsh/tasks/configure.yml delete mode 100644 roles/zsh/tasks/install.yml diff --git a/playbook.yml b/playbook.yml index f5685f3..8f3678c 100644 --- a/playbook.yml +++ b/playbook.yml @@ -4,39 +4,28 @@ connection: local vars: - use_dotfiles: true + is_darwin: "{{ ansible_os_family|lower == 'darwin' }}" roles: + - role: desktop + tags: [desktop] + - role: emacs + tags: [emacs, editors, development] + - role: fonts + tags: [fonts] + - role: golang + tags: [go, golang, development] + - role: multimedia + tags: [multimedia] + - role: node + tags: [node, nodejs, development] + - role: python + tags: [python, development] - role: system-utils tags: [system] - - role: editors - tags: [editors, development] - - role: development - tags: [development] - - role: misc - tags: [misc, macos] + - role: user-utils + tags: [user-utils, development] + - role: visual-studio-code + tags: [visual-studio-code, vscode, editors, development] - role: zsh tags: [zsh, shell] - - role: go-dev - tags: [go, golang, development] - - role: node-dev - tags: [node, development] - - role: python-dev - tags: [python, development] - - role: shell-utils - tags: [shell, shell-utils, development] - - role: desktop - tags: [desktop, macos] - - role: version-control - tags: [vcs] - - role: file - tags: [file, development] - - role: entertainment - tags: [entertainment, macos] - - role: web - tags: [web, macos] - - role: productivity - tags: [productivity, macos] - - role: hardware - tags: [hardware, drivers, macos] - diff --git a/roles/desktop/tasks/main.yml b/roles/desktop/tasks/main.yml index 5a8096b..bd9be7e 100644 --- a/roles/desktop/tasks/main.yml +++ b/roles/desktop/tasks/main.yml @@ -1,75 +1,18 @@ --- -- name: Set macOS dock settings - community.general.osx_defaults: - domain: com.apple.dock - key: "{{ item.key }}" - type: "{{ item.type }}" - value: "{{ item.value }}" +- name: Ensure desktop utility casks installed + community.general.homebrew_cask: + name: + # app launcher + - alfred + # terminal emulator + - alacritty state: present - loop: - - key: orientation - type: string - value: left - - key: autohide - type: int - value: 1 - - key: largesize - type: float - value: 42 - - key: magnification - type: int - value: 1 - - key: tilesize - type: float - value: 32 - register: dock_updated - when: ansible_os_family|lower == 'darwin' - tags: - - dock + when: is_darwin -- name: Kill macOS dock - command: killall Dock - become: yes - when: dock_updated is defined and dock_updated.changed - -- name: Set macOS Interface Dark Mode - community.general.osx_defaults: - domain: NSGlobalDomain - key: AppleInterfaceStyle - type: string - value: Dark - when: ansible_os_family|lower == 'darwin' - tags: - - dark - -- name: Show all extensions in finder - community.general.osx_defaults: - domain: NSGlobalDomain - key: AppleShowAllExtensions - type: bool - value: yes - register: finder_ext_update - when: ansible_os_family|lower == 'darwin' - tags: - - dark - -- name: Ensure finder grouping properties set - command: "plutil -replace {{ item.key }} -{{ item.type }} '{{ item.value }}' ~/Library/Preferences/com.apple.finder.plist" - loop: - - key: "DesktopViewSettings.GroupBy" - type: "string" - value: "Kind" - - key: "FXPreferredGroupBy" - type: "string" - value: "Kind" - - key: "DesktopViewSettings.IconViewSettings.arrangeBy" - type: "string" - value: "dateAdded" - register: finder_update - when: ansible_os_family|lower == 'darwin' - tags: - - finder - -- name: Kill macOS finder - command: killall Finder - when: (finder_ext_update is defined and finder_ext_update.changed) or (finder_update is defined and finder_update is succeeded) +- name: Ensure productivity casks installed + community.general.homebrew_cask: + name: + - todoist + - fantastical + state: present + when: is_darwin diff --git a/roles/development/tasks/main.yml b/roles/development/tasks/main.yml deleted file mode 100644 index edfaabe..0000000 --- a/roles/development/tasks/main.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -- name: Install misc development base packages - homebrew: - name: - - rbenv - - rustup-init - state: present - update_homebrew: yes diff --git a/roles/dotfiles/tasks/main.yml b/roles/dotfiles/tasks/main.yml deleted file mode 100644 index 0f4e790..0000000 --- a/roles/dotfiles/tasks/main.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -- name: Clone dotfiles repository - git: - repo: 'https://github.com/MinnSoe/dotfiles.git' - dest: ~/dotfiles - force: no - update: no - when: use_dotfiles - become: no - -- name: Symlink {{ app }} - shell: stow -d {{ dotfiles_path }} -t ~/ {{ app }} - when: use_dotfiles diff --git a/roles/dotfiles/vars/main.yml b/roles/dotfiles/vars/main.yml deleted file mode 100644 index 159e156..0000000 --- a/roles/dotfiles/vars/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -use_dotfiles: true -dotfiles_path: ~/dotfiles diff --git a/roles/editors/tasks/main.yml b/roles/editors/tasks/main.yml deleted file mode 100644 index d715590..0000000 --- a/roles/editors/tasks/main.yml +++ /dev/null @@ -1,41 +0,0 @@ ---- -- name: Tap into d12frosted/emacs-plus - homebrew_tap: tap=d12frosted/emacs-plus state=present - when: ansible_os_family|lower == 'darwin' - -- name: Tap into homebrew/cask-fonts - homebrew_tap: - name: homebrew/cask-fonts - state: present - when: ansible_os_family|lower == 'darwin' - -- name: Install emacs - homebrew: name=emacs-plus state=present - when: ansible_os_family|lower == 'darwin' - -- name: Setup emacs startup daemon - shell: brew services start d12frosted/emacs-plus/emacs-plus - when: ansible_os_family|lower == 'darwin' - -- name: Install spacemacs - git: - repo: 'https://github.com/syl20bnr/spacemacs' - dest: ~/.emacs.d - version: develop - -- name: Install spacemacs configuration - import_role: - name: dotfiles - vars: - app: spacemacs - -- name: Install editor fonts - homebrew_cask: - name: "{{ item }}" - state: present - with_items: - - font-source-code-pro - - font-fira-mono-nerd-font - -- name: Install Visual Studio Code - homebrew_cask: name=visual-studio-code state=present diff --git a/roles/emacs/tasks/main.yml b/roles/emacs/tasks/main.yml new file mode 100644 index 0000000..65af8dd --- /dev/null +++ b/roles/emacs/tasks/main.yml @@ -0,0 +1,18 @@ +--- +- name: Add d12frosted/emacs-plus homebrew tap + community.general.homebrew_tap: + name: d12frosted/emacs-plus + state: present + when: is_darwin + +- name: Install emacs + community.general.homebrew: + name: emacs-plus@30 + state: present + when: is_darwin + +- name: Setup emacs startup daemon + community.general.homebrew_services: + name: d12frosted/emacs-plus/emacs-plus@30 + state: present + when: is_darwin diff --git a/roles/entertainment/tasks/main.yml b/roles/entertainment/tasks/main.yml deleted file mode 100644 index 332fd0e..0000000 --- a/roles/entertainment/tasks/main.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -- name: Install entertainment homebrew cask applications - homebrew_cask: - name: - - spotify - - vlc - state: present - update_homebrew: yes - when: ansible_os_family|lower == 'darwin' - -- name: Install entertainment homebrew packages - homebrew: - name: - - youtube-dl - state: present - update_homebrew: yes - when: ansible_os_family|lower == 'darwin' diff --git a/roles/file/tasks/main.yml b/roles/file/tasks/main.yml deleted file mode 100644 index 20bec52..0000000 --- a/roles/file/tasks/main.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -- name: Install file processing util packages - package: - name: '{{ item[ansible_os_family|lower] | default(item["default"]) }}' - state: 'present' - with_items: - # CRLF and LF line endings converter - - default: 'dos2unix' - # fast grep alternative - - default: 'ripgrep' - # json processor - - default: 'jq' - # yaml processor - - default: 'yq' diff --git a/roles/fonts/tasks/main.yml b/roles/fonts/tasks/main.yml new file mode 100644 index 0000000..85a2f1d --- /dev/null +++ b/roles/fonts/tasks/main.yml @@ -0,0 +1,8 @@ +--- +- name: Install editor fonts + community.general.homebrew_cask: + name: + - font-source-code-pro + - font-fira-mono-nerd-font + state: present + when: ansible_os_family|lower == 'darwin' diff --git a/roles/go-dev/tasks/main.yml b/roles/go-dev/tasks/main.yml deleted file mode 100644 index 89d9923..0000000 --- a/roles/go-dev/tasks/main.yml +++ /dev/null @@ -1,40 +0,0 @@ ---- -- name: Ensure go installed - package: - name: golang # matches name in debian as well as homebrew alias - state: present - -- name: Ensure default go workspace directory is present - file: - path: ~/go - state: directory - mode: '0755' - -- name: Install development go packages - shell: 'GO111MODULE=on go get -u {{ item }}' - with_items: - - golang.org/x/tools/cmd/godoc - - golang.org/x/lint/golint - - golang.org/x/tools/cmd/goimports - - golang.org/x/tools/cmd/gorename - - golang.org/x/tools/cmd/guru - - github.com/cweill/gotests/... - - github.com/davidrjenni/reftools/cmd/fillstruct - - github.com/fatih/gomodifytags - - github.com/godoctor/godoctor - - github.com/haya14busa/gopkgs/cmd/gopkgs - - github.com/josharian/impl - - github.com/mdempsky/gocode - - github.com/rogpeppe/godef - - github.com/zmb3/gogetdoc - -- name: Install latest gopls - shell: >- - GO111MODULE=on go get golang.org/x/tools/gopls@latest - -- name: Install golangci-lint - shell: >- - GO111MODULE=on \ - CGO_ENABLED=0 \ - go get -v -trimpath -ldflags '-s -w' \ - github.com/golangci/golangci-lint/cmd/golangci-lint diff --git a/roles/golang/tasks/main.yml b/roles/golang/tasks/main.yml new file mode 100644 index 0000000..7c15544 --- /dev/null +++ b/roles/golang/tasks/main.yml @@ -0,0 +1,14 @@ +--- +- name: Ensure go installed + ansible.builtin.package: + name: golang # matches name in debian as well as homebrew + state: present + +- name: Install global development go packages + shell: 'go install {{ item }}' + with_items: + - github.com/cweill/gotests/gotests@latest + - github.com/go-delve/delve/cmd/dlv@latest + - golang.org/x/tools/cmd/godoc@latest + - golang.org/x/tools/cmd/goimports@latest + - golang.org/x/tools/cmd/gorename@latest diff --git a/roles/hardware/tasks/main.yml b/roles/hardware/tasks/main.yml deleted file mode 100644 index 7cfa580..0000000 --- a/roles/hardware/tasks/main.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -- name: Install hardware drivers from homebrew cask drivers - homebrew_cask: - name: "{{ item }}" - state: present - update_homebrew: yes - loop: - - homebrew/cask-drivers/logitech-options - - homebrew/cask-drivers/3dconnexion - when: ansible_os_family|lower == 'darwin' diff --git a/roles/misc/tasks/main.yml b/roles/misc/tasks/main.yml deleted file mode 100644 index 183b740..0000000 --- a/roles/misc/tasks/main.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -- name: Install misc homebrew cask applications - homebrew_cask: - name: - - 1password - - slack - - adobe-creative-cloud - state: present - update_homebrew: yes - tags: misc diff --git a/roles/multimedia/tasks/main.yml b/roles/multimedia/tasks/main.yml new file mode 100644 index 0000000..7971958 --- /dev/null +++ b/roles/multimedia/tasks/main.yml @@ -0,0 +1,15 @@ +--- +- name: Install multimedia homebrew cask applications + community.general.homebrew_cask: + name: + - spotify + - vlc + state: present + when: is_darwin + +- name: Install multimedia homebrew packages + community.general.homebrew: + name: + - yt-dlp + state: present + when: is_darwin diff --git a/roles/node-dev/defaults/main.yml b/roles/node-dev/defaults/main.yml deleted file mode 100644 index 748d60c..0000000 --- a/roles/node-dev/defaults/main.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -nvm_git_repo: 'https://github.com/creationix/nvm.git' -nvm_dir: '{{ ansible_env.HOME }}/.nvm' -nvm_fallback_version: 'master' -nvm_install_lts_global: yes -nvm_github_auth_token: '{{ lookup("env", "GITHUB_AUTH_TOKEN") }}' -nvm_github_auth_header: - Authorization: 'token {{ nvm_github_auth_token }}' diff --git a/roles/node-dev/tasks/main.yml b/roles/node-dev/tasks/main.yml deleted file mode 100644 index a8895f8..0000000 --- a/roles/node-dev/tasks/main.yml +++ /dev/null @@ -1,30 +0,0 @@ ---- -- name: Ensure git is installed - package: - name: git - state: present - -- block: - - name: GitHub API key is available - debug: - msg: 'GITHUB_AUTH_TOKEN is set' - when: nvm_github_auth_token | length > 0 - - name: Check for the latest version of nvm - uri: - url: https://api.github.com/repos/creationix/nvm/releases/latest - method: GET - headers: '{{ nvm_github_auth_header if nvm_github_auth_token | length > 0 else {} }}' - register: nvm_latest_release - - name: 'Clone latest version of nvm into {{ nvm_dir }}' - git: - repo: '{{ nvm_git_repo }}' - dest: '{{ nvm_dir }}' - version: '{{ nvm_latest_release.json.tag_name | default(nvm_fallback_version) }}' - -- name: Install latest long term support node runtime for user and alias to default - shell: | - . {{ nvm_dir }}/nvm.sh - nvm install --lts --latest-npm - nvm alias default "lts/*" - nvm use default - when: nvm_install_lts_global diff --git a/roles/node/tasks/main.yml b/roles/node/tasks/main.yml new file mode 100644 index 0000000..9006f4e --- /dev/null +++ b/roles/node/tasks/main.yml @@ -0,0 +1,9 @@ +--- +- name: Ensure fnm is installed + community.general.homebrew: + name: fnm + state: present + when: is_darwin + +- name: Install latest long term support node runtime + shell: fnm install --lts diff --git a/roles/productivity/tasks/main.yml b/roles/productivity/tasks/main.yml deleted file mode 100644 index ae3c9c0..0000000 --- a/roles/productivity/tasks/main.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -- name: Ensure productivity casks installed - homebrew_cask: - name: "{{ item }}" - state: upgraded - update_homebrew: yes - loop: - # app launcher - - alfred - # terminal emulator - - alacritty - when: ansible_os_family|lower == 'darwin' - -- name: Install packages from macOS app store - import_role: - name: geerlingguy.mas - vars: - mas_installed_apps: - - name: "Todoist: To-Do List & Tasks" - id: 585829637 - - name: "Microsoft Remote Desktop" - id: 1295203466 - when: ansible_os_family|lower == 'darwin' - tags: - - mas - -- name: Install alacritty dotfiles configuration - import_role: - name: dotfiles - vars: - app: alacritty diff --git a/roles/python-dev/tasks/macos.yml b/roles/python-dev/tasks/macos.yml deleted file mode 100644 index 7defac6..0000000 --- a/roles/python-dev/tasks/macos.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -- name: Ensure pyenv and deps installed through homebrew - homebrew: - name: - - pyenv - - pyenv-virtualenv - state: present - update_homebrew: yes diff --git a/roles/python-dev/tasks/main.yml b/roles/python-dev/tasks/main.yml deleted file mode 100644 index 8ee77ef..0000000 --- a/roles/python-dev/tasks/main.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -- name: Ensure python3 installed - package: - name: python3 - state: present - -- name: Setup python dev environment for macOS - import_tasks: macos.yml - when: ansible_os_family|lower == 'darwin' diff --git a/roles/python/tasks/main.yml b/roles/python/tasks/main.yml new file mode 100644 index 0000000..d9c2d3b --- /dev/null +++ b/roles/python/tasks/main.yml @@ -0,0 +1,8 @@ +--- +- name: Ensure pyenv and pyenv-virtualenv installed + community.general.homebrew: + name: + - pyenv + - pyenv-virtualenv + state: present + when: is_darwin diff --git a/roles/shell-utils/tasks/main.yml b/roles/shell-utils/tasks/main.yml deleted file mode 100644 index cd08fe9..0000000 --- a/roles/shell-utils/tasks/main.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- -- name: Ensure shell packages are installed - package: - name: '{{ item[ansible_os_family|lower] | default(item["default"]) }}' - state: 'present' - with_items: - # fuzzy file finder - - default: 'fzf' - # terminal multiplexer - - default: 'tmux' - # cross-shell prompt - - default: 'starship' - # cat clone with syntax highlighting and Git integration - - default: 'bat' - # zsh antigen plugin manager alternative - - default: 'antibody' - # simple, fast and user-friendly alternative to find - - default: 'fd' - debian: 'fd-find' - # load/unload environment variables based on $PWD - - default: 'direnv' - -- name: Link dotfiles starship configuration - include_role: - name: dotfiles - vars: - app: starship - -- name: Install tmux plugin manager - git: - repo: 'https://github.com/tmux-plugins/tpm' - dest: '~/.tmux/plugins/tpm' - -- name: Link dotfiles tmux configuration - include_role: - name: dotfiles - vars: - app: tmux diff --git a/roles/system-utils/tasks/common.yml b/roles/system-utils/tasks/common.yml deleted file mode 100644 index 2d537a7..0000000 --- a/roles/system-utils/tasks/common.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -- name: Install common system utilities for {{ ansible_os_family }} - package: - name: '{{ item[ansible_os_family|lower] | default(item["default"]) }}' - state: 'present' - with_items: - - default: stow - - default: direnv - - default: socat - - default: coreutils - - default: automake - - default: autoconf - - default: htop - darwin: htop-osx diff --git a/roles/system-utils/tasks/macos.yml b/roles/system-utils/tasks/macos.yml deleted file mode 100644 index 1a70e45..0000000 --- a/roles/system-utils/tasks/macos.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -- name: Check if xcode command line tools present - shell: xcodebuild --help - register: xcodebuild_exec - ignore_errors: yes - -- name: Install xcode - shell: xcode-select --install - when: xcodebuild_exec.rc != 0 and '/Library/Developer/CommandLineTools' not in xcodebuild_exec.stderr - -- name: Check if homebrew present - stat: path=/usr/local/bin/brew - register: brew_present - -- name: Install homebrew - shell: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - when: not brew_present.stat.exists - -- name: Tap into Caskroom versions - homebrew_tap: tap=homebrew/cask-versions state=present diff --git a/roles/system-utils/tasks/main.yml b/roles/system-utils/tasks/main.yml index e4870a7..31f0092 100644 --- a/roles/system-utils/tasks/main.yml +++ b/roles/system-utils/tasks/main.yml @@ -1,7 +1,16 @@ --- -- name: System utilities for macOS - import_tasks: macos.yml - when: ansible_os_family|lower == 'darwin' -- name: Install common system utilities - import_tasks: common.yml +- name: Install macOS cask system utilities + community.general.homebrew_cask: + name: + - tailscale + state: present + when: is_darwin + +- name: Install system utilities for {{ ansible_os_family }} + package: + name: '{{ item[ansible_os_family|lower] | default(item["default"]) }}' + state: 'present' + with_items: + - default: socat + - default: htop diff --git a/roles/user-utils/tasks/main.yml b/roles/user-utils/tasks/main.yml new file mode 100644 index 0000000..4c91e26 --- /dev/null +++ b/roles/user-utils/tasks/main.yml @@ -0,0 +1,62 @@ +--- +- name: Ensure file utility packages are installed + ansible.builtin.package: + name: '{{ item[ansible_os_family|lower] | default(item["default"]) }}' + state: present + with_items: + # cat clone with syntax highlighting and Git integration + - default: 'bat' + # GNU file, shell and text manipulation utilities + - default: 'coreutils' + # CRLF and LF line endings converter + - default: 'dos2unix' + # simple, fast and user-friendly alternative to find + - default: 'fd' + debian: 'fd-find' + # fuzzy file finder + - default: 'fzf' + # version control + - default: 'git' + # json processor + - default: 'jq' + # fast grep alternative + - default: 'ripgrep' + # yaml processor + - default: 'yq' + tags: + - file + +- name: Ensure shell packages are installed + ansible.builtin.package: + name: '{{ item[ansible_os_family|lower] | default(item["default"]) }}' + state: present + with_items: + # dotfile manager + - default: 'chezmoi' + # terminal multiplexer + - default: 'tmux' + # cross-shell prompt + - default: 'starship' + # load/unload environment variables based on $PWD + - default: 'direnv' + tags: + - shell + +- name: Add derailed/k9s homebrew tap + community.general.homebrew_tap: + name: derailed/k9s + state: present + when: is_darwin + tags: + - k8s + +- name: Ensure cloud packages are installed + community.general.homebrew: + name: + - 'kubectx' + - 'kubectl' + - 'derailed/k9s/k9s' + state: present + when: is_darwin + tags: + - k8s diff --git a/roles/version-control/tasks/main.yml b/roles/version-control/tasks/main.yml deleted file mode 100644 index 7f516dd..0000000 --- a/roles/version-control/tasks/main.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -- name: Install git version control packages - homebrew: - name: - - git - - git-lfs - state: present - update_homebrew: yes - when: ansible_os_family|lower == 'darwin' - tags: - - git - -- name: Install mercurial version control packages - homebrew: - name: - - hg - state: present - update_homebrew: yes - when: ansible_os_family|lower == 'darwin' - tags: - - hg diff --git a/roles/visual-studio-code/tasks/main.yml b/roles/visual-studio-code/tasks/main.yml new file mode 100644 index 0000000..395c185 --- /dev/null +++ b/roles/visual-studio-code/tasks/main.yml @@ -0,0 +1,6 @@ +--- +- name: Install Visual Studio Code + community.general.homebrew_cask: + name: visual-studio-code + state: present + when: is_darwin diff --git a/roles/web/tasks/main.yml b/roles/web/tasks/main.yml deleted file mode 100644 index 8cfc8d7..0000000 --- a/roles/web/tasks/main.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -- name: Install web browsers - homebrew_cask: - name: - - google-chrome-beta - - firefox-developer-edition - - safari-technology-preview - state: present - update_homebrew: yes - when: ansible_os_family|lower == 'darwin' - -- name: Install chromedriver - homebrew_cask: - name: - - chromedriver - state: present - update_homebrew: yes - when: ansible_os_family|lower == 'darwin' - -- name: Install geckodriver - homebrew: - name: - - geckodriver - state: present - update_homebrew: yes - when: ansible_os_family|lower == 'darwin' diff --git a/roles/zsh/defaults/main.yml b/roles/zsh/defaults/main.yml deleted file mode 100644 index 740b9de..0000000 --- a/roles/zsh/defaults/main.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- - -zsh_user: '{{ ansible_user_id }}' -zsh_user_home: '{{ ansible_env.HOME }}' -zsh_homebrew_path: '/usr/local/bin/zsh' -zsh_antigen_path: '{{ ansible_env.HOME }}/.zsh/antigen' -zsh_should_use_dotfiles: false -zsh_dotfiles_location: '{{ ansible_env.HOME }}/dotfiles' diff --git a/roles/zsh/tasks/configure.yml b/roles/zsh/tasks/configure.yml deleted file mode 100644 index 7caa2b8..0000000 --- a/roles/zsh/tasks/configure.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -- name: Link user provided zsh configuration - include_role: - name: dotfiles - vars: - app: zsh - -- name: Create .zshrc file if it does not exist - copy: - content: '' - force: false - dest: '{{ ansible_env.HOME }}/.zshrc' - owner: '{{ zsh_user }}' - mode: 0644 diff --git a/roles/zsh/tasks/install.yml b/roles/zsh/tasks/install.yml deleted file mode 100644 index 37ab8f7..0000000 --- a/roles/zsh/tasks/install.yml +++ /dev/null @@ -1,32 +0,0 @@ ---- -- name: Ensure zsh and dependencies are present - package: - name: '{{ item }}' - state: present - with_items: - - zsh - - git - - stow - -- name: Set zsh path to system zsh - command: which zsh - register: zsh_path - -- name: Set zsh path to homebrew zsh - set_fact: zsh_path={{ zsh_homebrew_path }} - when: ansible_os_family|lower == 'darwin' - -- name: Ensure zsh ({{ zsh_path }}) is in allowed shells (/etc/shells) - lineinfile: - path: '/etc/shells' - line: '{{ zsh_path }}' - become: true - -- name: Set zsh as default shell for {{ zsh_user }} - user: - name: '{{ zsh_user }}' - shell: '{{ zsh_path }}' - become: true - -- name: Clone antigen into .zsh - git: repo=https://github.com/zsh-users/antigen.git dest={{ zsh_antigen_path }} diff --git a/roles/zsh/tasks/main.yml b/roles/zsh/tasks/main.yml index 8722335..3eb292f 100644 --- a/roles/zsh/tasks/main.yml +++ b/roles/zsh/tasks/main.yml @@ -1,9 +1,26 @@ --- -- import_tasks: install.yml - tags: - - zsh - - install +- name: Ensure zsh present + package: + name: zsh + state: present + when: not is_darwin -- import_tasks: configure.yml - tags: - - configure +- name: Get zsh location from PATH + command: which zsh + register: zsh_path + when: not is_darwin + +- name: Ensure zsh ({{ zsh_path.stdout }}) is in allowed shells (/etc/shells) + ansible.builtin.lineinfile: + path: '/etc/shells' + line: '{{ zsh_path.stdout }}' + state: present + become: true + when: not is_darwin + +- name: Set zsh as default shell for {{ ansible_user_id }} + user: + name: '{{ ansible_user_id }}' + shell: '{{ zsh_path.stdout }}' + become: true + when: not is_darwin