From a3df5215b82a17fea223d73bc8c07c18f9f73244 Mon Sep 17 00:00:00 2001 From: Matthew Stobbs Date: Wed, 12 Feb 2025 12:52:55 -0700 Subject: [PATCH] reorganizing configuration - static package configuration in `vars/pkgs` - loaded into the variable `pkgconfig` as part of `tasks/main.yml` --- handlers/main.yml | 7 +- tasks/config/air.yml | 7 ++ tasks/config/go.yml | 22 +++++- tasks/main.yml | 69 +++++++++++------ tasks/pkgs/air.yml | 10 +-- tasks/pkgs/go.yml | 10 +-- tasks/src/go.yml | 54 +++++-------- vars/main.yml | 159 ++------------------------------------ vars/pkgs/air.yml | 3 + vars/pkgs/alacritty.yml | 25 ++++++ vars/pkgs/bitwarden.yml | 7 ++ vars/pkgs/broot.yml | 10 +++ vars/pkgs/carapace.yml | 6 ++ vars/pkgs/clangd.yml | 8 ++ vars/pkgs/consul.yml | 3 + vars/pkgs/fd.yml | 8 ++ vars/pkgs/ghostty.yml | 9 +++ vars/pkgs/git.yml | 12 +++ vars/pkgs/go.yml | 25 ++++++ vars/pkgs/hashicorp.yml | 8 ++ vars/pkgs/kitty.yml | 7 ++ vars/pkgs/libreoffice.yml | 7 ++ vars/pkgs/luals.yml | 9 +++ 23 files changed, 259 insertions(+), 226 deletions(-) create mode 100644 tasks/config/air.yml create mode 100644 vars/pkgs/air.yml create mode 100644 vars/pkgs/alacritty.yml create mode 100644 vars/pkgs/bitwarden.yml create mode 100644 vars/pkgs/broot.yml create mode 100644 vars/pkgs/carapace.yml create mode 100644 vars/pkgs/clangd.yml create mode 100644 vars/pkgs/consul.yml create mode 100644 vars/pkgs/fd.yml create mode 100644 vars/pkgs/ghostty.yml create mode 100644 vars/pkgs/git.yml create mode 100644 vars/pkgs/go.yml create mode 100644 vars/pkgs/hashicorp.yml create mode 100644 vars/pkgs/kitty.yml create mode 100644 vars/pkgs/libreoffice.yml create mode 100644 vars/pkgs/luals.yml diff --git a/handlers/main.yml b/handlers/main.yml index a845a14..cfe3e7b 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,2 +1,7 @@ +# vim: set filetype=yaml.ansible : --- -# handlers file for ansible_role_package +- name: Depend go + ansible.builtin.include_tasks: + file: addpkg.yml + vars: + pkg: go diff --git a/tasks/config/air.yml b/tasks/config/air.yml new file mode 100644 index 0000000..2b248d5 --- /dev/null +++ b/tasks/config/air.yml @@ -0,0 +1,7 @@ +# vim: set filetype=yaml.ansible : +--- +- name: Set configuration for air + ansible.builtin.set_fact: + air: + ver: "{{ pkgconfig.air.version }}" + pkg: "{{ pkgconfig.air.git_repo }}@{{ pkgconfig.air.version }}" diff --git a/tasks/config/go.yml b/tasks/config/go.yml index 1864748..bdb83a6 100644 --- a/tasks/config/go.yml +++ b/tasks/config/go.yml @@ -1,4 +1,22 @@ # vim: set filetype=yaml.ansible : --- -version: 1.23.6 -install_path: "{{ default_install_prefix }}" +- name: Set go configuration + ansible.builtin.set_fact: + do_install_go: false # defaults to false to save on having to set facts needlessly + go: + ver: "{{ pkgconfig.go.version }}" + arch: "{{ pkgconfig_go.archmap[ansible_architecture] }}" + sys: "{{ ansible_system | lower }}" + ext: "{{ pkgconfig.go.extmap[ansible_system] }}" + +- name: Set go composite facts + ansible.builtin.set_fact: + go: + ver: "{{ go.ver }}" + arch: "{{ go.arch }}" + sys: "{{ go.sys }}" + ext: "{{ go.ext }}" + archive: "go{{ go.ver }}.{{ go.sys }}-{{ go.arch }}.{{ pkgconfig_go.extmap[ansible_system] }}" + sum: "{{ pkgconfig.go.sums[go.ver][ansible_system][go.arch] }}" + url: "{{ pkgconfig.go.base_url }}/{{ go.archive }}" + inst_path: "{{ paths.install }}/go" diff --git a/tasks/main.yml b/tasks/main.yml index 36be2ee..0076746 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -2,8 +2,24 @@ --- # create all the facts used throughout the role, but shouldn't be touched # by the user +- name: Set facts based on use_local == true + when: + - use_local + ansible.builtin.set_fact: + paths: "{{ local_paths }}" + flatpak_method: user + +- name: Set facts based on use_local == false + when: + - not use_local + ansible.builtin.set_fact: + paths: "{{ sys_paths }}" + flatpak_method: system + - name: Set installation facts ansible.builtin.set_fact: + bin_dir: "{{ paths.install }}/bin" + state_dir: "{{ paths.install }}/state" app_images: [] # app_images to install cargo_pkgs: [] # rust packages from cargo cask_pkgs: [] # homebrew casks @@ -19,39 +35,42 @@ - name: flathub url: https://dl.flathub.org/repo/flathub.flatpakrepo -- name: Set facts based on use_local == true - when: - - use_local - ansible.builtin.set_fact: - paths: "{{ local_paths }}" - flatpak_method: user - -- name: Set facts based on use_local == false - when: - - not use_local - ansible.builtin.set_fact: - paths: "{{ sys_paths }}" - flatpak_method: system - - name: Set macOS specific facts when: - - ansible_distribution == 'MacOSX' - ansible.builtin.set_fact: - pipx_exec: /opt/homebrew/bin/pipx - - -- name: Determine OS and set facts for it + - ansible_system == 'Darwin' block: - - name: Set macOS facts - when: ansible_os_family == 'Darwin' + - name: Set pipx executable + ansible.builtin.set_fact: + pipx_exec: /opt/homebrew/bin/pipx + - name: Set sys_pkg_become to false for homebrew ansible.builtin.set_fact: sys_pkg_become: false +- name: Set Linux specific facts + when: + - ansible_system == 'Linux' + block: - name: Set Linux facts - when: ansible_system == 'Linux' ansible.builtin.set_fact: sys_pkg_become: true +- name: Ensure required paths exist + become: "{{ not use_local }}" + loop: "{{ paths + [bin_dir, state_dir] }}" + loop_control: + loop_var: path + ansible.builtin.file: + state: directory + mode: '0755' + path: "{{ path }}" + +- name: Read default package configuration + ansible.builtin.include_vars: + dir: pkgs + extensions: + - yml + name: pkgconfig + - name: Generate package installation lists ansible.builtin.include_tasks: file: addpkg.yml @@ -155,10 +174,10 @@ name: "{{ flatpak.name }}" remote: "{{ flatpak.remote | default('flathub') }}" -- name: Ensure /usr/local/bin exists +- name: Ensure prefix/bin exists ansible.builtin.file: state: directory - path: /usr/local/bin + path: "{{ paths.install }}/bin" owner: root mode: '0755' become: true diff --git a/tasks/pkgs/air.yml b/tasks/pkgs/air.yml index ebcba5c..7922156 100644 --- a/tasks/pkgs/air.yml +++ b/tasks/pkgs/air.yml @@ -1,9 +1,7 @@ # vim: set filetype=yaml.ansible : --- -- ansible.builtin.include_tasks: - file: pkgs/go.yml - when: pkgconfig_go is undefined - -- name: add to gopkgs +- name: Add to go_pkgs + notify: + - Depend go ansible.builtin.set_fact: - gopkgs: "{{ gopkgs + ['github.com/air-verse/air@latest'] }}" + go_pkgs: "{{ go_pkgs + [air.pkg] }}" diff --git a/tasks/pkgs/go.yml b/tasks/pkgs/go.yml index 4526285..8032ca2 100644 --- a/tasks/pkgs/go.yml +++ b/tasks/pkgs/go.yml @@ -1,11 +1,5 @@ # vim: set filetype=yaml.ansible : --- -- ansible.builtin.include_vars: - file: go.yml - name: _go -- ansible.builtin.set_fact: - pkgconfig_go: "{{ _go | ansible.builtin.combine(pkgconfig.go) }}" - -- name: append to pkgs +- name: Append to pkgs ansible.builtin.set_fact: - srcpkgs: "{{ srcpkgs + [ 'go' ] }}" + src_pkgs: "{{ src_pkgs + ['go'] }}" diff --git a/tasks/src/go.yml b/tasks/src/go.yml index 598837e..855a715 100644 --- a/tasks/src/go.yml +++ b/tasks/src/go.yml @@ -1,52 +1,40 @@ # vim: set filetype=yaml.ansible : --- -- name: check go version - ansible.builtin.command: - cmd: "go version" - register: r_go_version - ignore_errors: true +- name: Check if archive already exists + ansible.builtin.stat: + path: "{{ paths.archive }}/{{ go_archive }}" + register: stat_go_archive -- name: install/update go +- name: Install/update go + when: + - not stat_go_archive.exists block: - - name: set go arch - ansible.builtin.set_fact: - arch: "{{ pkgconfig_go.archmap[ansible_architecture] }}" - - - name: set go archive filename - ansible.builtin.set_fact: - go_archive: "go{{ pkgconfig_go.version }}.{{ ansible_system | lower }}-{{ arch }}.{{ pkgconfig_go.extmap[ansible_system] }}" - - - name: create temp path - ansible.builtin.tempfile: - state: directory - prefix: go_dl. - register: d_go_dl_tmp - - - name: download go archive - become: true + - name: Download go archive + become: "{{ sys_pkg_become }}" ansible.builtin.get_url: - dest: "{{ d_go_dl_tmp.path }}/{{ go_archive }}" - url: "https://go.dev/dl/{{ go_archive }}" - checksum: "{{ pkgconfig_go.sums[pkgconfig_go.version][ansible_system][arch] }}" + dest: "{{ paths.cache }}/{{ go_archive }}" + url: "{{ go.url }}" + checksum: "{{ go.sum }}" decompress: false + mode: '0644' - - name: ensure go install dir exists - become: true + - name: Ensure go install dir exists + become: "{{ sys_pkg_become }}" ansible.builtin.file: - path: "{{ pkgconfig_go.install_path }}" + path: "{{ go.inst_path }}" state: directory + mode: '0755' - - name: extract go package + - name: Extract go package + become: "{{ sys_pkg_become }}" ansible.builtin.unarchive: - dest: "{{ pkgconfig_go.install_path }}" + dest: "{{ paths.archive }}/go" src: "{{ d_go_dl_tmp.path }}/{{ go_archive }}" remote_src: true when: ansible_system == 'Linux' - become: true - - name: install go macOS use pkg file + - name: Install go macOS use pkg file ansible.builtin.command: cmd: "installer -pkg {{ d_go_dl_tmp.path }}/{{ go_archive }} -target /" when: ansible_system == 'Darwin' become: true - when: pkgconfig_go.version not in r_go_version.stdout diff --git a/vars/main.yml b/vars/main.yml index 87014b7..d244cb8 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -5,12 +5,14 @@ use_local: true prefer_method: system packages: [] # list of packages to install -local_paths: # all localpaths are prefixed with the users $HOME directory - appimage: .local/appimage # keep appimages here - archive: .local/archive # extract archives here - cache: .cache # cache downloads here - cargo: .cargo # cargo install location - install: .local # installation prefix. Binaries are placed in `{{ install }}/bin` +user_home: "{{ lookup(ansible.builtin.env, 'HOME') }}" + +local_paths: # all localpaths are prefixed with the users "{{ user_home }} directory + appimage: "{{ user_home }}/.local/appimage" # keep appimages here + archive: "{{ user_home }}/.local/archive" # extract archives here + cache: "{{ user_home }}/.cache" # cache downloads here + cargo: "{{ user_home }}/.cargo" # cargo install location + install: "{{ user_home }}/.local" # installation prefix. Binaries are placed in `{{ install }}/bin` sys_paths: # if installing at a system level (default) appimage: /opt/appimage # appimages are installed to {{ apimage_install_prefix }}// @@ -19,152 +21,7 @@ sys_paths: # if installing at a system level (default) cargo: /opt/cargo # cargo install location install: /usr/local # executables get linked to {{ default_install_prefix }}/bin - pkgconfig: - alacritty: - version: 0.15.0 - RedHat: - pkgs: [] - build_deps: - - cmake - - freetype-devel - - fontconfig-devel - - libxcb-devel - - libxkbcommon-devel - - g++ - Debian: - pkgs: [] - build_deps: - - cmake - - pkg-config - - libfreetype6-dev - - libfontconfig1-dev - - libxcb-xfixes0-dev - - libxkbcommon-dev - - python3 - Darwin: - pkgs: - - alacritty - git_repo: https://github.com/alacritty/alacritty.git - bitwarden: - flatpak: - name: com.bitwarden.desktop - remote: flathub - appimage: - name: bitwarden.appimage - url: https://vault.bitwarden.com/download/?app=desktop&platform=linux&variant=appimage - broot: - build_deps: - Debian: - - build-essential - - libxcb1-dev - - libxcb-render0-dev - - libxcb-shape0-dev - - libxcb-xfixes0-dev - RedHat: - - libxcb - carapace: - pkgs: - Linux: - - carapace-bin - Darwin: - - carapace - clangd: - pkgs: - RedHat: - - clang-devel - Debian: - - clangd-12 - Darwin: - - llvm - consul: - Linux: consul - Darwin: hashicorp/tap/consul - fd: - pkg: - Darwin: - - fd - RedHat: - - fd-find - Debian: - - fd-find - flatpak: {} - ghostty: - build_deps: - Debian: - - libgtk-4-dev - - libadwaita-1-dev - RedHat: - - gtk4-devel - - libadwaita-devel - git_repo: https://github.com/ghostty-org/ghostty - git: - pkgs: - Darwin: - - git - - git-delta - - git-extras - - git-lfs - Linux: - - git - - git-delta - - git-email - - git-lfs - go: - archmap: - arm64: arm64 - aarch64: arm64 - x86_64: amd64 - extmap: - Darwin: pkg - Linux: tar.gz - sums: - 1.23.6: - Darwin: - amd64: sha256:7fa387c228b4dd69b518a5d9425638fa5c0d86ec8943de373e3802aff2e5b12a - arm64: sha256:a167758a44e08af6eddf844ed86a6acdbff1d3957248913bbca7ee4ef6ff07d0 - Linux: - amd64: sha256:9379441ea310de000f33a4dc767bd966e72ab2826270e038e78b2c53c2e7802d - arm64: sha256:561c780e8f4a8955d32bf72e46af0b5ee5e0debe1e4633df9a03781878219202 - 1.23.5: - Darwin: - amd64: sha256:d2b06bf0b8299e0187dfe2d8ad39bd3dd96a6d93fe4d1cfd42c7872452f4a0a2 - arm64: sha256:f819ed94939e08a5016b9a607ec84ebbde6cb3fe59750c59d97aa300c3fd02df - Linux: - amd64: sha256:cbcad4a6482107c7c7926df1608106c189417163428200ce357695cc7e01d091 - arm64: sha256:47c84d332123883653b70da2db7dd57d2a865921ba4724efcdf56b5da7021db0 - hashicorp: - Linux: - RedHat: - repo: https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo - Fedora: - repo: https://rpm.releases.hashicorp.com/fedora/hashicorp.repo - Debian: - repo: "deb [arch={{ ansible_architecture }} signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com {{ ansible_distribution_release }} main" - jellyfin: {} - kitty: - pkgs: - Darwin: - - kitty - Linux: - - kitty - - kitty-shell-integration - libreoffice: - flatpak: - - org.libreoffice.LibreOffice - Debian: - - libreoffice - RedHat: - - libreoffice - luals: - base_url: https://github.com/LuaLS/lua-language-server/releases/download - sysmap: - Darwin: darwin - Linux: linux - archmap: - aarch64: arm64 - arm64: arm64 - x86_64: x64 neovide: git_repo: https://github.com/neovide/neovide.git build_deps: diff --git a/vars/pkgs/air.yml b/vars/pkgs/air.yml new file mode 100644 index 0000000..8033b1b --- /dev/null +++ b/vars/pkgs/air.yml @@ -0,0 +1,3 @@ +air: + version: latest + git_repo: github.com/air-verse/air diff --git a/vars/pkgs/alacritty.yml b/vars/pkgs/alacritty.yml new file mode 100644 index 0000000..4e319d5 --- /dev/null +++ b/vars/pkgs/alacritty.yml @@ -0,0 +1,25 @@ +alacritty: + version: 0.15.0 + RedHat: + pkgs: [] + build_deps: + - cmake + - freetype-devel + - fontconfig-devel + - libxcb-devel + - libxkbcommon-devel + - g++ + Debian: + pkgs: [] + build_deps: + - cmake + - pkg-config + - libfreetype6-dev + - libfontconfig1-dev + - libxcb-xfixes0-dev + - libxkbcommon-dev + - python3 + Darwin: + pkgs: + - alacritty + git_repo: https://github.com/alacritty/alacritty.git diff --git a/vars/pkgs/bitwarden.yml b/vars/pkgs/bitwarden.yml new file mode 100644 index 0000000..7c2f823 --- /dev/null +++ b/vars/pkgs/bitwarden.yml @@ -0,0 +1,7 @@ +bitwarden: + flatpak: + name: com.bitwarden.desktop + remote: flathub + appimage: + name: bitwarden.appimage + url: https://vault.bitwarden.com/download/?app=desktop&platform=linux&variant=appimage diff --git a/vars/pkgs/broot.yml b/vars/pkgs/broot.yml new file mode 100644 index 0000000..69db166 --- /dev/null +++ b/vars/pkgs/broot.yml @@ -0,0 +1,10 @@ +broot: + build_deps: + Debian: + - build-essential + - libxcb1-dev + - libxcb-render0-dev + - libxcb-shape0-dev + - libxcb-xfixes0-dev + RedHat: + - libxcb diff --git a/vars/pkgs/carapace.yml b/vars/pkgs/carapace.yml new file mode 100644 index 0000000..61e873c --- /dev/null +++ b/vars/pkgs/carapace.yml @@ -0,0 +1,6 @@ +carapace: + pkgs: + Linux: + - carapace-bin + Darwin: + - carapace diff --git a/vars/pkgs/clangd.yml b/vars/pkgs/clangd.yml new file mode 100644 index 0000000..3bf41c5 --- /dev/null +++ b/vars/pkgs/clangd.yml @@ -0,0 +1,8 @@ +clangd: + pkgs: + RedHat: + - clang-devel + Debian: + - clangd-12 + Darwin: + - llvm diff --git a/vars/pkgs/consul.yml b/vars/pkgs/consul.yml new file mode 100644 index 0000000..7da455d --- /dev/null +++ b/vars/pkgs/consul.yml @@ -0,0 +1,3 @@ +consul: + Linux: consul + Darwin: hashicorp/tap/consul diff --git a/vars/pkgs/fd.yml b/vars/pkgs/fd.yml new file mode 100644 index 0000000..46b005c --- /dev/null +++ b/vars/pkgs/fd.yml @@ -0,0 +1,8 @@ +fd: + pkg: + Darwin: + - fd + RedHat: + - fd-find + Debian: + - fd-find diff --git a/vars/pkgs/ghostty.yml b/vars/pkgs/ghostty.yml new file mode 100644 index 0000000..5ca6614 --- /dev/null +++ b/vars/pkgs/ghostty.yml @@ -0,0 +1,9 @@ +ghostty: + build_deps: + Debian: + - libgtk-4-dev + - libadwaita-1-dev + RedHat: + - gtk4-devel + - libadwaita-devel + git_repo: https://github.com/ghostty-org/ghostty diff --git a/vars/pkgs/git.yml b/vars/pkgs/git.yml new file mode 100644 index 0000000..8f4cce8 --- /dev/null +++ b/vars/pkgs/git.yml @@ -0,0 +1,12 @@ +git: + pkgs: + Darwin: + - git + - git-delta + - git-extras + - git-lfs + Linux: + - git + - git-delta + - git-email + - git-lfs diff --git a/vars/pkgs/go.yml b/vars/pkgs/go.yml new file mode 100644 index 0000000..4992e32 --- /dev/null +++ b/vars/pkgs/go.yml @@ -0,0 +1,25 @@ +go: + base_url: https://go.dev/dl + version: 1.23.6 + archmap: + arm64: arm64 + aarch64: arm64 + x86_64: amd64 + extmap: + Darwin: pkg + Linux: tar.gz + sums: + 1.23.6: + Darwin: + amd64: sha256:7fa387c228b4dd69b518a5d9425638fa5c0d86ec8943de373e3802aff2e5b12a + arm64: sha256:a167758a44e08af6eddf844ed86a6acdbff1d3957248913bbca7ee4ef6ff07d0 + Linux: + amd64: sha256:9379441ea310de000f33a4dc767bd966e72ab2826270e038e78b2c53c2e7802d + arm64: sha256:561c780e8f4a8955d32bf72e46af0b5ee5e0debe1e4633df9a03781878219202 + 1.23.5: + Darwin: + amd64: sha256:d2b06bf0b8299e0187dfe2d8ad39bd3dd96a6d93fe4d1cfd42c7872452f4a0a2 + arm64: sha256:f819ed94939e08a5016b9a607ec84ebbde6cb3fe59750c59d97aa300c3fd02df + Linux: + amd64: sha256:cbcad4a6482107c7c7926df1608106c189417163428200ce357695cc7e01d091 + arm64: sha256:47c84d332123883653b70da2db7dd57d2a865921ba4724efcdf56b5da7021db0 diff --git a/vars/pkgs/hashicorp.yml b/vars/pkgs/hashicorp.yml new file mode 100644 index 0000000..ec06e5b --- /dev/null +++ b/vars/pkgs/hashicorp.yml @@ -0,0 +1,8 @@ +hashicorp: + Linux: + RedHat: + repo: https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo + Fedora: + repo: https://rpm.releases.hashicorp.com/fedora/hashicorp.repo + Debian: + repo: "deb [arch={{ ansible_architecture }} signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com {{ ansible_distribution_release }} main" diff --git a/vars/pkgs/kitty.yml b/vars/pkgs/kitty.yml new file mode 100644 index 0000000..4b4bcf7 --- /dev/null +++ b/vars/pkgs/kitty.yml @@ -0,0 +1,7 @@ +kitty: + pkgs: + Darwin: + - kitty + Linux: + - kitty + - kitty-shell-integration diff --git a/vars/pkgs/libreoffice.yml b/vars/pkgs/libreoffice.yml new file mode 100644 index 0000000..5604c0f --- /dev/null +++ b/vars/pkgs/libreoffice.yml @@ -0,0 +1,7 @@ +libreoffice: + flatpak: + - org.libreoffice.LibreOffice + Debian: + - libreoffice + RedHat: + - libreoffice diff --git a/vars/pkgs/luals.yml b/vars/pkgs/luals.yml new file mode 100644 index 0000000..483477c --- /dev/null +++ b/vars/pkgs/luals.yml @@ -0,0 +1,9 @@ +luals: + base_url: https://github.com/LuaLS/lua-language-server/releases/download + sysmap: + Darwin: darwin + Linux: linux + archmap: + aarch64: arm64 + arm64: arm64 + x86_64: x64