- name: install dev tools ansible.builtin.apt: name={{ item }} state=present become: true with_items: - autoconf - automake - build-essential - clang - cloc - cmake - devscripts - gcc - ghc - git - golang-google-genproto-dev - golang-goprotobuf-dev - golang-protobuf-extensions-dev - graphviz - ipython3 - jq - libprotobuf-dev - lua5.3 - luarocks - make - mercurial - pgcli - protobuf-compiler - python3-pip - python3-progressbar - python3-pycryptodome - sbcl - texinfo - tig - tshark - yamllint - zlib1g - zlib1g-dev # prefer python3-$package instead of using pip. - name: install various python utils ansible.builtin.pip: executable: pip3 name: "{{item}}" extra_args: --user with_items: - yq - name: install dev tools with guis when: not headless become: true ansible.builtin.apt: name={{ item }} state=present with_items: - erlang - name: install headless dev tools when: headless become: true ansible.builtin.apt: name={{ item }} state=present with_items: - erlang-nox ## golang - name: install godeb become: true ansible.builtin.unarchive: src: "{{ role_path }}/files/godeb-amd64.tar.gz" dest: /usr/local/bin creates: /usr/local/bin/godeb - name: install go become: true ansible.builtin.command: godeb install "{{ go_version }}" args: chdir: /tmp creates: /usr/local/go/bin/go ## bazel - name: "install bazelisk v{{ bazelisk_version }}" ansible.builtin.get_url: checksum: sha256:168851e70cf5f95c0e215e7f3aaca5132ffc3c8dd8f585a4157b0be2b53cfe32 dest: "/home/{{ laptop_user }}/.local/bin/bazelisk" mode: 0755 url: "https://github.com/bazelbuild/bazelisk/releases/download/v{{ bazelisk_version }}/bazelisk-linux-amd64" # the process of getting buildifier in an automated way is onerous, ergo # this hack. - name: install buildifier ansible.builtin.unarchive: src: "{{ role_path }}/files/buildifier.tgz" dest: "/home/{{ laptop_user }}/.local/bin" creates: "/home/{{ laptop_user }}/.local/bin/buildifier" ## virtualization and containerization - name: ensure repository key is installed when: dev_virt or dev_full become: true ansible.builtin.apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present - name: ensure docker registry is available when: dev_virt or dev_full become: true ansible.builtin.apt_repository: repo='deb https://download.docker.com/linux/ubuntu bionic stable' state=present - name: rootfs building tools when: dev_virt or dev_full ansible.builtin.apt: name={{ item }} state=present become: true with_items: - dosfstools - dracut - e2fsprogs - fusecram - genext2fs - genisoimage - genromfs - makebootfat - mmdebstrap - proot - pxelinux - syslinux - syslinux-efi - syslinux-utils - vboot-utils - whois - name: install container and virtualisation management when: dev_virt or dev_full become: true ansible.builtin.apt: name={{ item }} state=present with_items: - conman - crun - docker-ce - docker-compose - ipxe-qemu - kvmtool - podman - qemubuilder - qemu-efi-aarch64 - qemu-efi-arm - qemu-system-arm - qemu-system - qemu-system-x86 - qemu-user-static - sbuild-qemu - seabios - u-boot-qemu - virt-top notify: "restart docker service" - name: install container and virtualisation GUIs when: (dev_virt or dev_full) and not headless become: true ansible.builtin.apt: name={{ item }} state=present with_items: - qemu-system-gui - virt-manager - name: Ensure kvm group exists when: dev_virt or dev_full become: true ansible.builtin.group: name: kvm state: present - name: Ensure docker group exists when: dev_virt or dev_full become: true ansible.builtin.group: name: docker state: present - name: add laptop user {{ laptop_user }} to docker group when: dev_virt or dev_full become: true ansible.builtin.user: name: "{{ laptop_user }}" append: true groups: - docker ## embedded dev stuff - name: installed embedded dev tools when: dev_embedded or dev_full ansible.builtin.apt: name={{ item }} state=present become: true with_items: - avr-libc - avrdude - binutils-arm-none-eabi - binutils-arm-linux-gnueabi - binutils-arm-linux-gnueabihf - binutils-avr - dfu-util - gcc-arm-none-eabi - gcc-arm-linux-gnueabi - gcc-arm-linux-gnueabihf - gcc-avr - libstdc++-arm-none-eabi-newlib - libusb-0.1-4 - libusb-1.0-0 - libusb-1.0-0-dev - libusb-1.0-doc - libusb-dev - picocom - python3-usb - name: install embedded dev guis when: (dev_virt or dev_full) and not headless become: true ansible.builtin.apt: name={{ item }} state=present with_items: - pulseview - sigrok ## documentation stuff - name: install documentation tooling become: true ansible.builtin.apt: name={{ item }} state=present with_items: - asciidoc - doxygen - pelican - pelican-doc - python3-sphinx - scdoc ## vscode - name: add VS Code repo key when: dev_full and not headless become: true ansible.builtin.apt_key: url: https://packages.microsoft.com/keys/microsoft.asc state: present validate_certs: yes - name: add VS Code repo when: dev_full and not headless become: true ansible.builtin.apt_repository: repo: deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main state: present validate_certs: yes - name: install VS Code when: dev_full and not headless become: true ansible.builtin.apt: name=code state=present ## rust - name: check if cargo is installed when: dev_rust or dev_full shell: command -v cargo register: cargo_exists ignore_errors: yes - name: Download Installer when: (dev_rust or dev_full) and (cargo_exists is failed) get_url: url: https://sh.rustup.rs dest: /tmp/sh.rustup.rs mode: '0755' force: 'yes' - name: install rust/cargo when: (dev_rust or dev_full) and (cargo_exists is failed) shell: /tmp/sh.rustup.rs -y --no-modify-path ## AI/ML stuff - name: install machine learning and AI tools when: dev_full become: true ansible.builtin.apt: name: "{{item}}" state: present with_items: - jupyter-notebook - name: install machine learning and AI python packages when: dev_full ansible.builtin.pip: executable: pip3 name: "{{item}}" extra_args: --user with_items: - Keras - numpy - scikit-learn - scipy - tensorflow - torch - name: install balena etcher repo key become: true when: (dev_full or dev_embedded) and not headless ansible.builtin.apt_key: url: https://dl.cloudsmith.io/public/balena/etcher/gpg.70528471AFF9A051.key state: present - name: setup balena etcher repo become: true when: (dev_full or dev_embedded) and not headless ansible.builtin.apt_repository: repo: 'deb https://dl.cloudsmith.io/public/balena/etcher/deb/ubuntu jammy main' state: present - name: setup balena etcher source repo become: true when: (dev_full or dev_embedded) and not headless ansible.builtin.apt_repository: repo: 'deb-src https://dl.cloudsmith.io/public/balena/etcher/deb/ubuntu jammy main' state: present - name: install balena etcher become: true when: (dev_full or dev_embedded) and not headless ansible.builtin.apt: name=balena-etcher-electron state=present - name: link etcher to /usr/bin become: true when: (dev_full or dev_embedded) and not headless ansible.builtin.file: src: /opt/balenaEtcher/balena-etcher-electron dest: /usr/local/bin/etcher owner: root group: root mode: 0755 state: link