- hosts: localhost connection: local tasks: - name: Install base packages become: true ansible.builtin.apt: pkg: - make - build-essential - git - curl - wget - rsync - zsh - imagemagick - ffmpeg - yt-dlp - fzf - icoutils - postgresql-common - unzip tags: - base - python - ruby - rust - zsh - postgres - name: Prepare postgresql ansible.builtin.shell: /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh args: executable: /bin/bash tags: - postgres - name: Install postgres package become: true ansible.builtin.apt: pkg: - postgresql-18 update_cache: true tags: - postgres - name: Change root shell to zsh become: true ansible.builtin.user: name: root shell: /bin/zsh tags: - oh-my-posh - name: Give permissions to /root/bin become: true ansible.builtin.file: path: /root/bin state: directory tags: - oh-my-posh - name: Install oh-my-posh for root become: true ansible.builtin.shell: curl -s https://ohmyposh.dev/install.sh | bash -s -- -d /root/bin args: executable: /bin/bash tags: - oh-my-posh - name: Ensure root shell loads user bin become: true ansible.builtin.lineinfile: path: /root/.zshrc line: | export PATH="$PATH:/root/bin" if [ "$TERM_PROGRAM" != "Apple_Terminal" ]; then eval "$(oh-my-posh init zsh)" fi create: yes tags: - oh-my-posh - name: Install node ansible.builtin.shell: source ~/.init/init.sh && nvm install args: executable: /bin/bash tags: - node - name: Enable node corepack ansible.builtin.shell: source ~/.init/init.sh && corepack enable args: executable: /bin/bash tags: - node - name: Install node packages ansible.builtin.shell: source ~/.init/init.sh && cd ~ && pnpm install args: executable: /bin/bash tags: - node - name: Install python required packages become: true ansible.builtin.apt: pkg: - libssl-dev - zlib1g-dev - libbz2-dev - libreadline-dev - libsqlite3-dev - llvm - libncurses5-dev tags: - python - name: Install python ansible.builtin.shell: source ~/.init/init.sh && pyenv install --skip-existing args: executable: /bin/bash tags: - python - name: Install python packages ansible.builtin.shell: source ~/.init/init.sh && pip install -r ~/requirements.txt args: executable: /bin/bash tags: - python - name: Init python pre-commit ansible.builtin.shell: source ~/.init/init.sh && cd ~ && pre-commit install args: executable: /bin/bash tags: - python - name: Install ruby required packages become: true ansible.builtin.apt: pkg: - libssl-dev - libffi-dev - libyaml-dev - zlib1g-dev tags: - ruby - name: Install ruby ansible.builtin.shell: source ~/.init/init.sh && rbenv install --skip-existing args: executable: /bin/bash tags: - ruby - name: Install ruby base packages ansible.builtin.shell: source ~/.init/init.sh && gem install {{ item }} args: executable: /bin/bash with_items: - bundler tags: - ruby - name: Install ruby packages ansible.builtin.shell: source ~/.init/init.sh && cd ~ && bundle install args: executable: /bin/bash tags: - ruby - name: Install rust required packages become: true ansible.builtin.apt: pkg: - libudev-dev - libusb-1.0-0-dev - libdbus-1-dev - pkg-config - cmake tags: - rust - name: Download Installer for rust ansible.builtin.get_url: url: https://sh.rustup.rs dest: /tmp/sh.rustup.rs mode: '0755' force: 'yes' tags: - rust - name: Install rust ansible.builtin.shell: /tmp/sh.rustup.rs -y tags: - rust - name: Change user shell to zsh become: true ansible.builtin.user: name: '{{ ansible_user_id }}' shell: /bin/zsh tags: - zsh - name: Update font cache ansible.builtin.shell: fc-cache -f -v tags: - fonts - name: Install flatpak required packages become: true ansible.builtin.apt: pkg: - flatpak - gnome-software-plugin-flatpak - libgtk-3-dev tags: - flatpak - name: Add flathub repo ansible.builtin.shell: flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo tags: - flatpak - name: Install github required packages become: true ansible.builtin.apt: pkg: - gh tags: - github # - name: Add github copilot extension # ansible.builtin.shell: gh extension install github/gh-copilot # tags: # - github - name: Install Docker required packages become: true ansible.builtin.apt: name: - apt-transport-https - ca-certificates - curl - gnupg2 - postgresql-client tags: - docker - name: Add Docker repository ansible.builtin.deb822_repository: name: docker uris: https://download.docker.com/linux/debian types: deb suites: trixie architectures: amd64 components: stable signed_by: https://download.docker.com/linux/debian/gpg tags: - docker - name: Install Docker Engine become: true ansible.builtin.apt: name: - docker-ce - docker-ce-cli - containerd.io update_cache: true tags: - docker - name: Add user to docker group become: true ansible.builtin.user: name: '{{ ansible_user_id }}' groups: docker tags: - docker - name: Start Docker service become: true ansible.builtin.service: name: docker state: started tags: - docker