211 lines
6.5 KiB
YAML
211 lines
6.5 KiB
YAML
# vi:syntax=yaml.ansible
|
|
---
|
|
- name: Environment Setup
|
|
hosts: webhost
|
|
gather_facts: true
|
|
become: false
|
|
tasks:
|
|
- name: Set variables
|
|
ansible.builtin.set_fact:
|
|
home: "{{ ansible_env.HOME | regex_replace('/$', '') }}"
|
|
composer_packages:
|
|
- friendsofphp/php-cs-fixer
|
|
- phpcompatibility/php-compatibility
|
|
- phpstan/phpstan
|
|
- psy/psysh
|
|
- rector/rector
|
|
- slevomat/coding-standard
|
|
- squizlabs/php_codesniffer
|
|
- vimeo/psalm
|
|
- name: Copy zshrc
|
|
ansible.builtin.copy:
|
|
dest: "{{ home }}/.zshrc"
|
|
src: configurations/zshrc
|
|
- name: Copy zshenv
|
|
ansible.builtin.copy:
|
|
dest: "{{ home }}/.zshenv"
|
|
src: configurations/zshenv
|
|
- name: Copy npmrc
|
|
ansible.builtin.copy:
|
|
dest: "{{ home }}/.npmrc"
|
|
src: configurations/npmrc
|
|
- name: Copy vimrc
|
|
ansible.builtin.copy:
|
|
dest: "{{ home }}/.vimrc"
|
|
src: configurations/vimrc
|
|
- name: Copy tmux.conf
|
|
ansible.builtin.copy:
|
|
dest: "{{ home }}/.tmux.conf"
|
|
src: configurations/tmux.conf
|
|
- name: Install npm tools
|
|
community.general.npm:
|
|
name: "{{ item }}"
|
|
global: true
|
|
loop:
|
|
- eslint
|
|
- prettier
|
|
- name: Update npm packages
|
|
community.general.npm:
|
|
global: true
|
|
state: latest
|
|
- name: Configure composer
|
|
# composer requires a modern amount of memory to update,
|
|
# so only run on systems with 2gb or more
|
|
when: ansible_memtotal_mb >= 2048
|
|
changed_when: false
|
|
community.general.composer:
|
|
arguments: "--no-interaction {{ item.key }} {{ item.value }}"
|
|
command: config
|
|
global_command: true
|
|
environment:
|
|
COMPOSER_HOME: "{{ home }}/.config/composer"
|
|
loop:
|
|
- key: allow-plugins.dealerdirect/phpcodesniffer-composer-installer
|
|
value: "true"
|
|
- key: minimum-stability
|
|
value: "stable"
|
|
- key: prefer-stable
|
|
value: "true"
|
|
- name: Install composer packages
|
|
# composer requires a modern amount of memory to update,
|
|
# so only run on systems with 2gb or more
|
|
when: ansible_memtotal_mb >= 2048
|
|
community.general.composer:
|
|
arguments: "--no-interaction --dev {{ composer_packages | join(' ') }}"
|
|
command: require
|
|
global_command: true
|
|
no_dev: false
|
|
optimize_autoloader: false
|
|
environment:
|
|
COMPOSER_HOME: "{{ home }}/.config/composer"
|
|
- name: Update composer packages
|
|
# composer requires a modern amount of memory to update,
|
|
# so only run on systems with 2gb or more
|
|
when: ansible_memtotal_mb >= 2048
|
|
community.general.composer:
|
|
arguments: --no-interaction
|
|
command: update
|
|
global_command: true
|
|
no_dev: false
|
|
optimize_autoloader: false
|
|
environment:
|
|
COMPOSER_HOME: "{{ home }}/.config/composer"
|
|
- name: Install pip packages
|
|
ansible.builtin.pip:
|
|
name:
|
|
- hyfetch
|
|
- powerline-gitstatus
|
|
- powerline-status
|
|
extra_args: --user
|
|
state: latest
|
|
- name: tmux plugins
|
|
ansible.builtin.git:
|
|
repo: https://github.com/{{ item.owner }}/{{ item.repo }}
|
|
dest: "{{ home }}/.tmux/plugins/{{ item.repo }}"
|
|
depth: 1
|
|
force: true # disregard local changes
|
|
loop:
|
|
- owner: tmux-plugins
|
|
repo: tmux-sensible
|
|
- owner: tmux-plugins
|
|
repo: tpm
|
|
- name: create vim directory
|
|
ansible.builtin.file:
|
|
path: "{{ home }}/.vim/pack/git-plugins/start"
|
|
state: directory
|
|
- name: vim plugins
|
|
ansible.builtin.git:
|
|
repo: https://github.com/{{ item.owner }}/{{ item.repo }}
|
|
dest: "{{ home }}/.vim/pack/git-plugins/start/{{ item.repo }}"
|
|
depth: 1
|
|
force: true # disregard local changes
|
|
loop:
|
|
- owner: adelarsq
|
|
repo: vim-matchit
|
|
- owner: cespare
|
|
repo: vim-toml
|
|
- owner: chrisbra
|
|
repo: csv.vim
|
|
- owner: dense-analysis
|
|
repo: ale
|
|
- owner: editorconfig
|
|
repo: editorconfig-vim
|
|
- owner: fatih
|
|
repo: vim-go
|
|
- owner: flazz
|
|
repo: vim-colorschemes
|
|
- owner: fpob
|
|
repo: nette.vim
|
|
- owner: idanarye
|
|
repo: vim-vebugger
|
|
- owner: imsnif
|
|
repo: kdl.vim
|
|
- owner: leafgarland
|
|
repo: typescript-vim
|
|
- owner: lumiliet
|
|
repo: vim-twig
|
|
- owner: martinda
|
|
repo: jenkinsfile-vim-syntax
|
|
- owner: mattn
|
|
repo: emmet-vim
|
|
- owner: pearofducks
|
|
repo: ansible-vim
|
|
- owner: plasticboy
|
|
repo: vim-markdown
|
|
- owner: quramy
|
|
repo: tsuquyomi
|
|
- owner: rust-lang
|
|
repo: rust.vim
|
|
- owner: ryanoasis
|
|
repo: vim-devicons
|
|
- owner: scrooloose
|
|
repo: nerdtree
|
|
- owner: shougo
|
|
repo: vimproc.vim
|
|
- owner: towolf
|
|
repo: vim-helm
|
|
- owner: tpope
|
|
repo: vim-fugitive
|
|
- owner: tpope
|
|
repo: vim-liquid
|
|
- owner: tpope
|
|
repo: vim-sensible
|
|
- name: symlink vim colors
|
|
ansible.builtin.file:
|
|
dest: "{{ home }}/.vim/colors"
|
|
src: "{{ home }}/.vim/pack/git-plugins/start/vim-colorschemes/colors"
|
|
state: link
|
|
- name: Register rustc version
|
|
ansible.builtin.shell: rustc --version | awk '{ print $2 }'
|
|
args:
|
|
executable: /usr/local/bin/zsh
|
|
changed_when: false
|
|
register: rustc_version
|
|
- name: Install cargo packages
|
|
ansible.builtin.command:
|
|
cmd: >-
|
|
cargo install {{ item.package }}@{{
|
|
rustc_version.stdout is version('1.83.0', '>=', version_type='semver')
|
|
| ternary(item.version, '')
|
|
| default('*', true) }} --locked
|
|
creates: "{{ home }}/.cargo/bin/{{ item.bin }}"
|
|
loop:
|
|
- package: cargo-update
|
|
bin: cargo-install-update
|
|
- package: eza
|
|
bin: eza
|
|
version: 0.20.24
|
|
- package: ripgrep
|
|
bin: rg
|
|
- package: sd
|
|
bin: sd
|
|
- package: starship
|
|
bin: starship
|
|
version: 1.20.1
|
|
- name: Update cargo packages
|
|
when: rustc_version.stdout is version('1.85.0', '>=', version_type='semver')
|
|
ansible.builtin.command:
|
|
cmd: cargo install-update --all
|
|
register: cargo_update
|
|
changed_when: cargo_update.stdout.find('No packages need updating.') == -1
|