diff --git a/meta/argument_spec.yml b/meta/argument_spec.yml index 54466f4..b61b080 100644 --- a/meta/argument_spec.yml +++ b/meta/argument_spec.yml @@ -31,10 +31,13 @@ argument_specs: default: system description: - Install packages using system package manager when available. - - When a package doesn't have a system install candidate for the host, it uses it's default install method as defined in the pkglist variables called `_install_methods` + - When a package doesn't have a system install candidate for the host, + it uses it's default install method as defined in the pkglist variables called `_install_methods` - Most packages will be either `system` or `source` installs. - System installs default to using the system package manager, if possible. - - Source installs download, build and install the package via source code. Source installs could be of different types based on the language. For example; python packages installed using `source` are installed with either pipx (default) or system pip. + - Source installs download, build and install the package via source code. + Source installs could be of different types based on the language. + For example; python packages installed using `source` are installed with either pipx (default) or system pip. choices: - system - source diff --git a/tasks/helpers/cargo_build.yml b/tasks/helpers/cargo_build.yml index 4f68055..b549ed2 100644 --- a/tasks/helpers/cargo_build.yml +++ b/tasks/helpers/cargo_build.yml @@ -4,7 +4,7 @@ block: - name: Fetch git repo vars: - path: "{{ path_source }}/{{ pkg.source_dir }}" + path: "{{ pkg.source_dir }}" repo: "{{ pkg.repo }}" depth: "{{ pkg.depth | default(1) }}" force: "{{ pkg.force_git | default(true) }}" @@ -14,19 +14,19 @@ - name: Build cargo release ansible.builtin.command: - chdir: "{{ path_source }}/{{ pkg.source_dir }}" - argv: "{{ [cargo, build] + pkg.build_flags }}" + chdir: "{{ pkg.source_dir }}" + argv: "{{ ['cargo', 'build'] + pkg.build_flags }}" - name: Clean existing install vars: files: "{{ pkg.files }}" - ansible.builtin.include_tasks: helpers/clean.yml + ansible.builtin.include_tasks: helpers/clean_install.yml - name: Install cargo release block: - name: Create missing directories - become: "{{ install_become }}" - become_user: "{{ install_become_user }}" vars: + do_become: "{{ install_become }}" + do_become_user: "{{ install_become_user | default(omit) }}" source_dir: "{{ pkg.source_dir }}" ansible.builtin.include_tasks: helpers/install.yml diff --git a/tasks/helpers/install.yml b/tasks/helpers/install.yml index df3fbd9..07cab90 100644 --- a/tasks/helpers/install.yml +++ b/tasks/helpers/install.yml @@ -18,8 +18,8 @@ ## copy anthing (go install, as an example), don't use this. --- - name: Create directories - become: "{{ install_become }}" - become_user: "{{ install_become_user }}" + become: "{{ do_become }}" + become_user: "{{ do_become_user | default(omit) }}" loop: "{{ pkg_clean }}" loop_control: loop_var: dir diff --git a/tasks/main.yml b/tasks/main.yml index d7acaeb..6381216 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -37,10 +37,6 @@ group: "{{ install_prefix_group }}" path: "{{ path }}" -- name: Read package configuration - ansible.builtin.include_vars: - file: pkglist.yml - - name: Add needed packages for Fedora when: - distribution == 'Fedora' @@ -70,27 +66,10 @@ ansible.builtin.include_tasks: file: "pkgs/{{ pkg }}.yml" -- name: Clean installations that require it - ansible.builtin.include_tasks: "helpers/clean_install.yml" - -- name: Install go if required - when: - - pkg_go|length > 0 - ansible.builtin.include_tasks: pkgs/go.yml - -- name: Install rust and cargo if required - when: - - pkg_cargo|length > 0 or - pkg_cargo_build|length > 0 - ansible.builtin.include_tasks: pkgs/rust.yml - - name: Ensure pipx is installed when: - pkg_pipx|length > 0 block: - - name: Queue pipx install - ansible.builtin.include_tasks: pkgs/pipx.yml - - name: Ensure pipx path exists become: "{{ install_become }}" become_user: "{{ install_become_user }}" @@ -99,11 +78,6 @@ mode: '0755' path: "{{ path_pipx }}" -- name: Ensure nodejs and npm are installed - when: - - pkg_npm|length > 0 - ansible.builtin.include_tasks: pkgs/nodejs.yml - - name: Ensure appimage path exists when: - pkg_appimage is defined @@ -125,11 +99,6 @@ mode: '0755' path: "{{ path_archive }}" -- name: Depend zig - when: - - pkg_zig|length > 0 - ansible.builtin.include_tasks: pkgs/zig.yml - - name: Install pkg_sys list using system package manager when: - pkg_sys|length > 0 diff --git a/tasks/pkgs/ansible_lint.yml b/tasks/pkgs/ansible_lint.yml index 3cb38f3..26d7f4a 100644 --- a/tasks/pkgs/ansible_lint.yml +++ b/tasks/pkgs/ansible_lint.yml @@ -19,7 +19,8 @@ Archlinux: ansible-lint Alpine: ansible-lint FreeBSD: py311-ansible-lint - pip: ansible_lint + pip: + name: ansible_lint # }}} - name: Configure ansible_lint when: diff --git a/tasks/pkgs/cbfmt.yml b/tasks/pkgs/cbfmt.yml index d125acd..2809315 100644 --- a/tasks/pkgs/cbfmt.yml +++ b/tasks/pkgs/cbfmt.yml @@ -2,16 +2,18 @@ # ## Package: cbfmt ## Description: code block formatter -## Version: system +## Version: latest ## Methods: system -## Helpers: - +## Helpers: cargo --- - name: Set default cbfmt values ansible.builtin.set_fact: cbfmt: install_methods: - - system + - source pkgname: cbfmt + pkg_deps: + - cargo - name: Configure cbfmt install when: - "'cbfmt' not in __configured" @@ -22,14 +24,6 @@ ansible.builtin.set_fact: cbfmt_install_method: "{{ install_method if install_method in cbfmt.install_methods else cbfmt.install_methods[0] }}" - - name: Configure cbfmt system install - when: - - cbfmt_install_method == 'system' - block: - - name: Append cbfmt to system install list - ansible.builtin.set_fact: - pkg_sys: "{{ pkg_sys + [cbfmt.pkgname] }}" - - name: Configure cbfmt source install when: - cbfmt_install_method == 'source' @@ -37,7 +31,10 @@ - name: Configure cbfmt cargo install ansible.builtin.set_fact: cbfmt_cargo_install: - + name: cbfmt + - name: Queue cbfmt cargo install + ansible.builtin.set_fact: + pkg_cargo: "{{ pkg_cargo + [cbfmt_cargo_install] }}" - name: Finalise cbfmt configuration ansible.builtin.set_fact: diff --git a/tasks/pkgs/checkmake.yml b/tasks/pkgs/checkmake.yml index 6624c48..3d9dbdb 100644 --- a/tasks/pkgs/checkmake.yml +++ b/tasks/pkgs/checkmake.yml @@ -11,7 +11,7 @@ checkmake: install_methods: - source - go_pkg: github.com/mrtazz/checkmake/cmd/checkmake + go_pkg: github.com/checkmake/checkmake/cmd/checkmake version: latest - name: Configure checkmake when: @@ -31,6 +31,7 @@ ansible.builtin.set_fact: checkmake_go_install: url: "{{ checkmake.go_pkg }}@{{ checkmake.version }}" + bin: "{{ path_bin }}/checkmake" - name: Queue checkmake source install ansible.builtin.set_fact: diff --git a/tasks/pkgs/choose.yml b/tasks/pkgs/choose.yml index 33b266b..25e1a83 100644 --- a/tasks/pkgs/choose.yml +++ b/tasks/pkgs/choose.yml @@ -6,20 +6,37 @@ ## Methods: source ## Helpers: cargo --- -- name: Add choose +- name: Set choose default facts + ansible.builtin.set_fact: + choose: + install_methods: + - source + version: 1.3.7 + +- name: Configure choose + when: + - "'choose' not in __configured" block: - - name: Load choose config - ansible.builtin.include_tasks: - file: config/choose.yml - - - name: Append choose to pkg_cargo + - name: Set choose install method when: - - ansible_system == 'Linux' + - choose_install_method is undefined ansible.builtin.set_fact: - pkg_cargo: "{{ pkg_cargo + [choose] }}" + choose_install_method: "{{ install_method if install_method in choose.install_methods else choose.install_methods[0] }}" - - name: Append choose-rust to pkg_sys + - name: Configure choose source install when: - - ansible_system == 'Darwin' + - choose_install_method == 'source' + block: + - name: Configure choose cargo install + ansible.builtin.set_fact: + choose_cargo_install: + name: choose + version: "{{ choose.version }}" + + - name: Append choose to pkg_cargo + ansible.builtin.set_fact: + pkg_cargo: "{{ pkg_cargo + [choose_cargo_install] }}" + + - name: Finalise choose configuration ansible.builtin.set_fact: - pkg_sys: "{{ pkg_sys + ['choose-rust'] }}" + __configured: "{{ __configured | combine( { 'choose': choose_install_method } ) }}" diff --git a/tasks/pkgs/clangd.yml b/tasks/pkgs/clangd.yml index ebd9822..05ecb26 100644 --- a/tasks/pkgs/clangd.yml +++ b/tasks/pkgs/clangd.yml @@ -29,9 +29,9 @@ - name: Queue clangd system install when: - - clangd_install_methods == 'system' + - clangd_install_method == 'system' ansible.builtin.set_fact: - pkg_sys: "{{ pkg_sys + clangd[os_family] }}" + pkg_sys: "{{ pkg_sys + [clangd.pkgname[os_family]] }}" - name: Finalise clangd configuration ansible.builtin.set_fact: diff --git a/tasks/pkgs/cmake-format.yml b/tasks/pkgs/cmake-format.yml deleted file mode 100644 index cad6205..0000000 --- a/tasks/pkgs/cmake-format.yml +++ /dev/null @@ -1,6 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -- name: Set cmake-format config - ansible.builtin.set_fact: - cmake_format: - pkgs: "{{ pkgconfig.cmake_format.pkgs }}" diff --git a/tasks/pkgs/cmake.yml b/tasks/pkgs/cmake.yml index cdb2505..a2796e9 100644 --- a/tasks/pkgs/cmake.yml +++ b/tasks/pkgs/cmake.yml @@ -1,4 +1,10 @@ # vim: set filetype=yaml.ansible : +# +## Package: cmake +## Description: build system for c/c++ +## Version: system +## Methods: system +## Helpers: - --- - name: Configure cmake when: diff --git a/tasks/pkgs/cmakelang.yml b/tasks/pkgs/cmakelang.yml index 90e51e8..6df40f9 100644 --- a/tasks/pkgs/cmakelang.yml +++ b/tasks/pkgs/cmakelang.yml @@ -1,13 +1,36 @@ # vim: set filetype=yaml.ansible : +# +## Package: cmakelang +## Desciption: QA tools for cmake +## Version: system +## Methods: system +## Helpers: - --- +- name: Set cmakelang default facts + ansible.builtin.set_fact: + cmakelang: + install_methods: + - system + pkgname: cmakelang + - name: Add cmakelang when: - - cmakelang_configured is undefined + - "'cmakelang' not in __configured" block: - - name: Add cmakelang to pkg_pipx + - name: Set cmakelang install method + when: + - cmakelang_install_method is undefined ansible.builtin.set_fact: - pkg_pipx: "{{ pkg_pipx + ['cmakelang'] }}" + cmakelang_install_method: "{{ install_method if install_method in cmakelang.install_methods else cmakelang.install_methods[0] }}" - - name: Set cmakelang_configured + - name: Configure cmakelang system install + when: + - cmakelang_install_method == 'system' + block: + - name: Queue cmakelang for system install + ansible.builtin.set_fact: + pkg_sys: "{{ pkg_sys + [cmakelang.pkgname] }}" + + - name: Finalise cmakelang configuration ansible.builtin.set_fact: - cmakelang_configured: true + __configured: "{{ __configured | combine( { 'cmakelang': cmakelang_install_method } ) }}" diff --git a/tasks/pkgs/commitlint-cli.yml b/tasks/pkgs/commitlint-cli.yml index 781abe0..693b6f2 100644 --- a/tasks/pkgs/commitlint-cli.yml +++ b/tasks/pkgs/commitlint-cli.yml @@ -1,13 +1,43 @@ # vim: set filetype=yaml.ansible : +# +## Package: commitlint-cli +## Description: git commit linter to ensure standards are met +## Version: v20.5.0 +## Methods: source +## Helpers: npm --- -- name: Add commitlint-cli - when: - - commitlint_cli_configured is undefined - block: - - name: Append commitlint/cli to pkg_npm - ansible.builtin.set_fact: - pkg_npm: "{{ pkg_npm + ['@commitlint/cli'] }}" +- name: Set commitlint-cli default facts + ansible.builtin.set_fact: + commitlint_cli: + install_methods: + - source + npm_pkg: '@commitlint/cli' + version: v20.5.0 - - name: Set commitlint_cli_configured +- name: Configure commitlint-cli + when: + - "'commitlint-cli' not in __configured" + block: + - name: Set commitlint-cli install method + when: + - commitlint_cli_install_method is undefined ansible.builtin.set_fact: - commitlint_cli_configured: true + commitlint_cli_install_method: "{{ install_method if install_method in commitlint_cli.install_methods else commitlint_cli.install_methods[0] }}" + + - name: Configure commitlint-cli source install + when: + - commitlint_cli_install_method == 'source' + block: + - name: Configure commitlint-cli npm install + ansible.builtin.set_fact: + commitlint_cli_npm_install: + name: "{{ commitlint_cli.npm_pkg }}" + version: "{{ commitlint_cli.version }}" + + - name: Append commitlint/cli to pkg_npm + ansible.builtin.set_fact: + pkg_npm: "{{ pkg_npm + [commitlint_cli_npm_install] }}" + + - name: Finalise commitlint-cli configuration + ansible.builtin.set_fact: + __configured: "{{ __configured | combine( { 'commitlint-cli': commitlint_cli_install_method } ) }}" diff --git a/tasks/pkgs/commitlint-config-conventional.yml b/tasks/pkgs/commitlint-config-conventional.yml index 6339f84..097c8bc 100644 --- a/tasks/pkgs/commitlint-config-conventional.yml +++ b/tasks/pkgs/commitlint-config-conventional.yml @@ -1,13 +1,43 @@ # vim: set filetype=yaml.ansible : +# +## Package: commitlint-config-conventional +## Description: default configuration for conventional commitlint/cli usage +## Version: latest +## Methods: source +## Helpers: npm --- -- name: Add comitlint-config-conventional - when: - - comitlint_config_conventional_configured is undefined - block: - - name: Append commitlit/config-conventional to pkg_npm - ansible.builtin.set_fact: - pkg_npm: "{{ pkg_npm + ['@commitlint/config-conventional'] }}" +- name: Set commitlint-config-conventional default facts + ansible.builtin.set_fact: + clcc: + install_methods: + - source + npm_pkg: '@commitlint/config-conventional' + version: v20.5.0 - - name: Set comitlint_config_conventional_configured +- name: Configure comitlint-config-conventional + when: + - "'comitlint_config_conventional' not in __configured" + block: + - name: Set commitlint-config-conventional install method + when: + - clcc_install_method is undefined ansible.builtin.set_fact: - comitlint_config_conventional_configured: true + clcc_install_method: "{{ install_method if install_method in clcc.install_methods else clcc.install_methods[0] }}" + + - name: Configure commitlint-config-conventional source install + when: + - clcc_install_method == 'source' + block: + - name: Configure commitlint-config-conventional npm install + ansible.builtin.set_fact: + clcc_npm_install: + name: "{{ clcc.npm_pkg }}" + version: "{{ clcc.version }}" + + - name: Append commitlint-config-conventional to pkg_npm + ansible.builtin.set_fact: + pkg_npm: "{{ pkg_npm + [clcc_npm_install] }}" + + - name: Finalise comitlint-config-conventional configuration + ansible.builtin.set_fact: + __configured: "{{ __configured | combine( { 'commitlint-config-conventional': clcc_install_method } ) }}" diff --git a/tasks/pkgs/consul.yml b/tasks/pkgs/consul.yml deleted file mode 100644 index 63329b7..0000000 --- a/tasks/pkgs/consul.yml +++ /dev/null @@ -1,29 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -- name: Add consul - block: - - name: Load consul config - ansible.builtin.include_tasks: - file: config/consul.yml - - - name: Append consul to pkg_sys - when: - - ansible_system == 'Linux' - notify: - - Depend hashicorp repo - changed_when: true - ansible.builtin.set_fact: - pkg_sys: "{{ pkg_sys + consul.pkgs }}" - - - name: Append consul to pkg_tap - when: - - ansible_system == 'Darwin' - notify: - - Depend hashicorp repo - changed_when: true - ansible.builtin.set_fact: - pkg_tap: "{{ pkg_tap + consul.pkgs }}" - - - name: Set consul_configured - ansible.builtin.set_fact: - consul_configured: true diff --git a/tasks/pkgs/cssls.yml b/tasks/pkgs/cssls.yml index bb8cd90..d3d8842 100644 --- a/tasks/pkgs/cssls.yml +++ b/tasks/pkgs/cssls.yml @@ -1,13 +1,4 @@ # vim: set filetype=yaml.ansible : --- -- name: Add cssls - when: - - cssls_configured is undefined - block: - - name: Append vscode-langservers-extracted to pkg_npm - ansible.builtin.set_fact: - pkg_npm: "{{ pkg_npm + ['vscode-langservers-extracted'] }}" - - - name: Set cssls_configured - ansible.builtin.set_fact: - cssls_configured: true +- name: Pass to vscode-langservers-extracted + ansible.builtin.include_tasks: pkgs/vscode-langservers-extracted.yml diff --git a/tasks/pkgs/curlie.yml b/tasks/pkgs/curlie.yml deleted file mode 100644 index c51c0b4..0000000 --- a/tasks/pkgs/curlie.yml +++ /dev/null @@ -1,13 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -- name: Add curlie - when: - - curlie_configured is undefined - block: - - name: Append curlie to pkg_go - ansible.builtin.set_fact: - pkg_go: "{{ pkg_go + ['github.com/rs/curlie@latest'] }}" - - - name: Set curlie_configured - ansible.builtin.set_fact: - curlie_configured: true diff --git a/tasks/pkgs/dbeaver.yml b/tasks/pkgs/dbeaver.yml deleted file mode 100644 index ab60c8d..0000000 --- a/tasks/pkgs/dbeaver.yml +++ /dev/null @@ -1,21 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -- name: Add dbeaver - when: - - dbeaver_configured is undefined - block: - - name: Append dbeaver to pkg_flatpak - when: - - ansible_system == 'Linux' - ansible.builtin.set_fact: - pkg_flatpak: "{{ pkg_flatpak + ['io.dbeaver.DBeaverCommunity'] }}" - - - name: Append dbeaver to pkg_cask - when: - - ansible_system == 'Darwin' - ansible.builtin.set_fact: - pkg_cask: "{{ pkg_cask + ['dbeaver-community'] }}" - - - name: Set dbeaver_configured - ansible.builtin.set_fact: - dbeaver_configured: true diff --git a/tasks/pkgs/direnv.yml b/tasks/pkgs/direnv.yml index f2edd27..18d8550 100644 --- a/tasks/pkgs/direnv.yml +++ b/tasks/pkgs/direnv.yml @@ -1,5 +1,22 @@ # vim: set filetype=yaml.ansible : +# +## Package: direnv +## Description: automatically read env files when changing directories +## Version: latest +## Methods: system +## Helpers: - --- +- name: Set direnv default facts + ansible.builtin.set_fact: + direnv: + install_methods: + - system + pkgname: + RedHat: direnv + Alpine: direnv + Debian: direnv + Darwin: direnv + - name: Configure direnv when: - "'direnv' not in __configured" @@ -14,7 +31,7 @@ when: - direnv_install_method == "system" ansible.builtin.set_fact: - pkg_sys: "{{ pkg_sys + ['direnv'] }}" + pkg_sys: "{{ pkg_sys + [direnv.pkgname[os_family]] }}" - name: Finalize direnv configuration ansible.builtin.set_fact: diff --git a/tasks/pkgs/dockerls.yml b/tasks/pkgs/dockerls.yml index aa9b92f..96b4e6c 100644 --- a/tasks/pkgs/dockerls.yml +++ b/tasks/pkgs/dockerls.yml @@ -1,13 +1,40 @@ # vim: set filetype=yaml.ansible : +# +## Package: dockerls +## Description: language server for Dockerfiles/Containerfiles +## Version: latest +## Methods: source +## Helpers: npm --- -- name: Add dockerls - when: - - dockerls_configured is undefined - block: - - name: Append dockerfile-language-server-nodejs to pkg_npm - ansible.builtin.set_fact: - pkg_npm: "{{ pkg_npm + ['dockerfile-language-server-nodejs'] }}" +- name: Set dockerls default facts + ansible.builtin.set_fact: + dockerls: + install_methods: + - source + npm_pkg: dockerfile-language-server-nodejs - - name: Set dockerls_configured +- name: Configure dockerls + when: + - "'dockerls' not in _configured" + block: + - name: Set dockerls install method + when: + - dockerls_install_method is undefined ansible.builtin.set_fact: - dockerls_configured: true + dockerls_install_method: "{{ install_method if install_method in dockerls.install_methods else dockerls.install_methods[0] }}" + + - name: Configure dockerls source install + when: + - dockerls_install_method == 'source' + block: + - name: Configure dockerls npm install + ansible.builtin.set_fact: + dockerls_npm_install: + name: "{{ dockerls.npm_pkg }}" + - name: Queue dockerls installation + ansible.builtin.set_fact: + pkg_npm: "{{ pkg_npm + [dockerls_npm_install] }}" + + - name: Finalise dockerls configuration + ansible.builtin.set_fact: + __configured: "{{ __configured | combine( { 'dockerls': dockerls_install_method } ) }}" diff --git a/tasks/pkgs/dotenv-linter.yml b/tasks/pkgs/dotenv-linter.yml deleted file mode 100644 index e036f4b..0000000 --- a/tasks/pkgs/dotenv-linter.yml +++ /dev/null @@ -1,13 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -- name: Add dotenv-linter - when: - - dotenv_linter_configured is undefined - block: - - name: Append dotenv-linter to pkg_cargo - ansible.builtin.set_fact: - pkg_cargo: "{{ pkg_cargo + ['dotenv-linter'] }}" - - - name: Set dotenv-linter_configured - ansible.builtin.set_fact: - dotenv_linter_configured: true diff --git a/tasks/pkgs/duf.yml b/tasks/pkgs/duf.yml deleted file mode 100644 index 23b2ddb..0000000 --- a/tasks/pkgs/duf.yml +++ /dev/null @@ -1,13 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -- name: Add duf - when: - - duf_configured is undefined - block: - - name: Append duf to pkg_go - ansible.builtin.set_fact: - pkg_go: "{{ pkg_go + ['github.com/muesli/duf@latest'] }}" - - - name: Set duf_configured - ansible.builtin.set_fact: - duf_configured: true diff --git a/tasks/pkgs/dust.yml b/tasks/pkgs/dust.yml deleted file mode 100644 index 0e8e33e..0000000 --- a/tasks/pkgs/dust.yml +++ /dev/null @@ -1,19 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -- name: Add dust - block: - - name: Append du-dust to pkg_cargo - when: - - ansible_system == 'Linux' - ansible.builtin.set_fact: - pkg_cargo: "{{ pkg_cargo + ['du-dust'] }}" - - - name: Append dust to pkg_sys - when: - - ansible_os_family == 'Darwin' - ansible.builtin.set_fact: - pkg_sys: "{{ pkg_sys + ['dust'] }}" - - - name: Set dust_configured - ansible.builtin.set_fact: - dust_configured: true diff --git a/tasks/pkgs/editorconfig.yml b/tasks/pkgs/editorconfig.yml deleted file mode 100644 index 9ba16b3..0000000 --- a/tasks/pkgs/editorconfig.yml +++ /dev/null @@ -1,5 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -- name: Append editorconfig to pkg_sys - ansible.builtin.set_fact: - pkg_sys: "{{ pkg_sys + ['editorconfig'] }}" diff --git a/tasks/pkgs/eslint.yml b/tasks/pkgs/eslint.yml index 7fc0e10..d3d8842 100644 --- a/tasks/pkgs/eslint.yml +++ b/tasks/pkgs/eslint.yml @@ -1,13 +1,4 @@ # vim: set filetype=yaml.ansible : --- -- name: Add eslint - when: - - eslint_configured is undefined - block: - - name: Append vscode-langservers-extracted to pkg_npm - ansible.builtin.set_fact: - pkg_npm: "{{ pkg_npm + ['vscode-langservers-extracted'] }}" - - - name: Set eslint_configured - ansible.builtin.set_fact: - eslint_configured: true +- name: Pass to vscode-langservers-extracted + ansible.builtin.include_tasks: pkgs/vscode-langservers-extracted.yml diff --git a/tasks/pkgs/eza.yml b/tasks/pkgs/eza.yml index dbc0d62..6c42ecd 100644 --- a/tasks/pkgs/eza.yml +++ b/tasks/pkgs/eza.yml @@ -1,5 +1,16 @@ # vim: set filetype=yaml.ansible : +# +## Package: eza +## Description: modern replacement for ls +## Version: latest +## Methods: source +## Helpers: cargo --- +- name: Set eza default facts + ansible.builtin.set_fact: + eza: + install_methods: + - system - name: Configure eza when: - "'eza' not in __configured" diff --git a/tasks/pkgs/flatpak.yml b/tasks/pkgs/flatpak.yml index 96ac4c5..31f745f 100644 --- a/tasks/pkgs/flatpak.yml +++ b/tasks/pkgs/flatpak.yml @@ -11,10 +11,24 @@ flatpak: install_methods: - system - pkgname: "{{ pkglist[os_family] }}" + pkgname: flatpak # }}} -- name: Append flatpak to pkg_sys +- name: Configure flatpak when: - - ansible_system == 'Linux' - ansible.builtin.set_fact: - pkg_sys: "{{ pkg_sys + ['flatpak'] }}" + - "'flatpak' not in __configured" + block: + - name: Set flatpak install method + when: + - flatpak_install_method is undefined + ansible.builtin.set_fact: + flatpak_install_method: "{{ install_method if install_method in flatpak.install_methods else flatpak.install_methods[0] }}" + + - name: Append flatpak to pkg_sys + when: + - flatpak_install_method == 'system' + ansible.builtin.set_fact: + pkg_sys: "{{ pkg_sys + [flatpak.pkgname] }}" + + - name: Finalise flatpak configuration + ansible.builtin.set_fact: + __configured: "{{ __configured | combine( { 'flatpak': flatpak_install_method } ) }}" diff --git a/tasks/pkgs/htmlls.yml b/tasks/pkgs/htmlls.yml index 16727fb..d3d8842 100644 --- a/tasks/pkgs/htmlls.yml +++ b/tasks/pkgs/htmlls.yml @@ -1,13 +1,4 @@ # vim: set filetype=yaml.ansible : --- -- name: Add htmlls - when: - - htmlls_configured is undefined - block: - - name: Append vscode-langservers-extracted to pkg_npm - ansible.builtin.set_fact: - pkg_npm: "{{ pkg_npm + ['vscode-langservers-extracted'] }}" - - - name: Set htmlls_configured - ansible.builtin.set_fact: - htmlls_configured: true +- name: Pass to vscode-langservers-extracted + ansible.builtin.include_tasks: pkgs/vscode-langservers-extracted.yml diff --git a/tasks/pkgs/jsonls.yml b/tasks/pkgs/jsonls.yml index 53433f4..d3d8842 100644 --- a/tasks/pkgs/jsonls.yml +++ b/tasks/pkgs/jsonls.yml @@ -1,13 +1,4 @@ # vim: set filetype=yaml.ansible : --- -- name: Add jsonls - when: - - jsonls_configured is undefined - block: - - name: Append vscode-langservers-extracted to pkg_npm - ansible.builtin.set_fact: - pkg_npm: "{{ pkg_npm + ['vscode-langservers-extracted'] }}" - - - name: Set jsonls_configured - ansible.builtin.set_fact: - jsonls_configured: true +- name: Pass to vscode-langservers-extracted + ansible.builtin.include_tasks: pkgs/vscode-langservers-extracted.yml diff --git a/tasks/pkgs/nerdfonts.yml b/tasks/pkgs/nerdfonts.yml index 2672056..768cbc0 100644 --- a/tasks/pkgs/nerdfonts.yml +++ b/tasks/pkgs/nerdfonts.yml @@ -1,6 +1,173 @@ # vim: set filetype=yaml.ansible : --- -- name: Add nerdfonts +- name: Set default nerdfonts facts # {{{ + ansible.builtin.set_fact: + __nerdfonts: + 0xProto: + brew: font-0xproto-nerd-font + "3270": + brew: font-3270-nerd-font + Agave: + brew: font-agave-nerd-font + AnonymicePro: + archive: AnonymousPro + brew: font-anonymice-nerd-font + Arimo: + brew: font-arimo-nerd-font + AurulentSansM: + archive: AurulentSansMono + brew: font-aurulent-sans-mono-nerd-font + BigBlueTerm: + archive: BigBlueTerminal + brew: font-bigblue-terminal-nerd-font + BitstromWera: + archive: BitstreamVeraSansMono + brew: font-bitstream-vera-sans-mono-nerd-font + BlexMono: + archive: IBMPlexMono + brew: font-blex-mono-nerd-font + CaskaydiaCove: + archive: CascadiaCode + brew: font-caskaydia-cove-nerd-font + CaskaydiaMono: + archive: CascadiaMono + brew: font-caskaydia-mono-nerd-font + CodeNewRoman: + brew: font-code-new-roman-nerd-font + ComicShannsMono: + brew: font-comic-shanns-mono-nerd-font + CommitMono: + brew: font-commit-mono-nerd-font + Cousine: + brew: font-cousine-nerd-font + D2CodingLigature: + archive: D2Coding + brew: font-d2coding-nerd-font + DaddyTimeMono: + brew: font-daddy-time-mono-nerd-font + DejaVuSansM: + archive: DejaVuSansMono + brew: font-dejavu-sans-mono-nerd-font + DepartureMono: + brew: font-departure-mono-nerd-font + DroidSansM: + archive: DroidSansMono + brew: font-droid-sans-mono-nerd-font + EnvyCodeR: + brew: font-envy-code-r-nerd-font + FantasqueSansM: + archive: FantasqueSansMono + brew: font-fantasque-sans-mono-nerd-font + FiraCode: + brew: font-fira-code-nerd-font + FiraMono: + brew: font-fira-mono-nerd-font + GeistMono: + brew: font-geist-mono-nerd-font + GoMono: + archive: Go-Mono + brew: font-go-mono-nerd-font + GohuFont: + archive: Gohu + brew: font-gohufont-nerd-font + Hack: + brew: font-hack-nerd-font + Hasklug: + archive: Hasklig + brew: font-hasklug-nerd-font + HeavyData: + brew: font-heavy-data-nerd-font + Hurmit: + archive: Hermit + brew: font-hurmit-nerd-font + iMWriting: + archive: IA-Writer + brew: font-im-writing-nerd-font + Inconsolata: + brew: font-inconsolata-nerd-font + InconsolataGo: + brew: font-inconsolata-go-nerd-font + InconsolataLGC: + brew: font-inconsolata-lgc-nerd-font + IntoneMono: + archive: IntelOneMono + brew: font-intone-mono-nerd-font + Iosevka: + brew: font-iosevka-nerd-font + IosevkaTerm: + brew: font-iosevka-term-nerd-font + IosevkaTermSlab: + brew: font-iosevka-term-slab-nerd-font + JetBrainsMono: + brew: font-jetbrains-mono-nerd-font + Lekton: + brew: font-lekton-nerd-font + LiterationMono: + archive: LiberationMono + brew: font-liberation-nerd-font + Lilex: + brew: font-lilex-nerd-font + MartianMono: + brew: font-martian-mono-nerd-font + MesloLG: + archive: Meslo + brew: font-meslo-lg-nerd-font + Monaspice: + archive: Monaspace + brew: font-monaspace-nerd-font + Monofur: + brew: font-monofur-nerd-font + Monoid: + brew: font-monoid-nerd-font + Mononoki: + brew: font-mononoki-nerd-font + M+: + archive: MPlus + brew: font-m+-nerd-font + Noto: + brew: font-noto-nerd-font + OpenDyslexic: + brew: font-open-dyslexic-nerd-font + Overpass: + brew: font-overpass-nerd-font + ProFont: + brew: font-profont-nerd-font + ProggyClean: + brew: font-proggy-clean-tt-nerd-font + RecMono: + archive: Recursive + brew: font-recursive-mono-nerd-font + RobotoMono: + brew: font-roboto-mono-nerd-font + ShureTechMono: + archive: ShareTechMono + brew: font-shure-tech-mono-nerd-font + SauceCodePro: + archive: SourceCodePro + brew: font-sauce-code-pro-nerd-font + SpaceMono: + brew: font-space-mono-nerd-font + Symbols: + archive: NerdFontsSymbolsOnly + brew: font-symbols-only-nerd-font + Terminess: + archive: Terminus + brew: font-terminess-ttf-nerd-font + Tinos: + brew: font-tinos-nerd-font + Ubuntu: + brew: font-ubuntu-nerd-font + UbuntuMono: + brew: font-ubuntu-mono-nerd-font + UbuntuSans: + brew: font-ubuntu-sans-nerd-font + VictorMono: + brew: font-victor-mono-nerd-font + ZedMono: + brew: font-zed-mono-nerd-font + base_url: https://github.com/ryanoasis/nerd-fonts/releases/latest/download +# }}} +- name: Configure nerdfonts when: - "'nerdfonts' not in __configured" block: diff --git a/tasks/pkgs/vscode-langservers-extracted.yml b/tasks/pkgs/vscode-langservers-extracted.yml new file mode 100644 index 0000000..4e1c82f --- /dev/null +++ b/tasks/pkgs/vscode-langservers-extracted.yml @@ -0,0 +1,42 @@ +# vim: set filetype=yaml.ansible : +# +## Package: vscode-langservers-extracted +## Descriptions: language servers extracted from vscode +## Version: latest +## Methods: source +## Helpers: npm +--- +- name: Set vscode-langservers-extracted default facts + ansible.builtin.set_fact: + vscode_langservers_extracted: + install_methods: + - source + npm_pkg: '@zed-industries/vscode-langservers-extracted' + version: 4.10.7 +- name: Configure vscode-langservers-extracted + when: + - "'vscode-langservers-extracted' not in __configured" + block: + - name: Set vscode-langservers-extracted install method + when: + - vscode_langservers_extracted_install_method is undefined + ansible.builtin.set_fact: + vscode_langservers_extracted_install_method: "{{ install_method if install_method in vscode_langservers_extracted.install_methods else vscode_langservers_extracted.install_methods[0] }}" + + - name: Configure vscode-langservers-extracted source install + when: + - vscode_langservers_extracted_install_method == 'source' + block: + - name: Configure vscode-langservers-extracted npm install + ansible.builtin.set_fact: + vscode_langservers_extracted_npm_install: + name: "{{ vscode_langservers_extracted.npm_pkg }}" + version: "{{ vscode_langservers_extracted.version }}" + + - name: Queue vscode-langservers-extracted install + ansible.builtin.set_fact: + pkg_npm: "{{ pkg_npm + [vscode_langservers_extracted_npm_install] }}" + + - name: Finalise vscode-langservers-extracted configuration + ansible.builtin.set_fact: + __configured: "{{ __configured | combine( { 'vscode-langservers-extracted': vscode_langservers_extracted_install_method } ) }}" diff --git a/vars/pkglist.yml b/vars/pkglist.yml deleted file mode 100644 index ef14324..0000000 --- a/vars/pkglist.yml +++ /dev/null @@ -1,352 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -## Package level variables for per distribution install names -## Format: -## [pkgname]: -## [os_family]: -## name: distro pkgname -## build_deps: [list of deps for building], only included if required - -alacritty: - RedHat: - name: alacritty - build_deps: - - fontconfig-devel - - freetype-devel - - g++ - - libxcb-devel - - libxkbcommon-devel - - desktop-file-utils - Debian: - name: alacritty - build_deps: - - g++ - - pkg-config - - libfontconfig1-dev - - libxcb-xfixes0-dev - - libxkbcommon-dev - - python3 - - libfreetype6-dev - - desktop-file-utils - Alpine: - name: alacritty - build_deps: - - pkgconf - - freetype-dev - - fontconfig-dev - - python3 - - libxcb-dev - - g++ - - libxkbcommon-dev - - desktop-file-utils - Archlinux: - name: alacritty - build_deps: - - freetype2 - - fontconfig - - pkg-config - - make - - libxcb - - libxkbcommon - - python - - desktop-file-utils - FreeBSD: - - - freetype2 - - fontconfig - - pkgconf - - python3 - - desktop-file-utils -flatpak: - name: flatpak - -## Restrictions for package install methods. -## The first item is the default method. If only -## one method exists, all others are ignored. -bat: # {{{ - install_methods: - - system - pkgname: - RedHat: bat - Debian: bat - Archlinux: bat - Alpine: bat - Darwin: bat - FreeBSD: bat -# }}} -cargo: # {{{ - install_methods: - - system -# }}} -cmake: # {{{ - install_methods: - - system -# }}} -direnv: # {{{ - install_methods: - - system -# }}} -eza: - install_methods: - - source -fzf: - install_methods: - - system -git: - install_methods: - - system -go: - install_methods: - - archive - - system -hyprland: - install_methods: - - source -neovim: # {{{ - git_repo: https://github.com/neovim/neovim - appimage: - base_url: https://github.com/neovim/neovim/releases/download - pkgname: - RedHat: neovim - Debian: neovim - Darwin: neovim - FreeBSD: neovim - build_files: - - lib64/nvim - - bin/nvim - - share/nvim - - share/applications/nvim.desktop - - share/icons/hicolor/128x128/apps/nvim.png - - share/man/man1/nvim.1 - build_pkgdeps: - - cmake - - git - build_deps: - RedHat: - - cmake - - curl - - gcc - - gettext - - glibc-gconv-extra - - make - - ninja-build - Debian: - - build-essential - - cmake - - curl - - gettext - - ninja-build - Darwin: - - cmake - - curl - - gettext - - ninja - Alpine: - - build-base - - cmake - - coreutils - - curl - - gettext-dev - install_methods: - - source - - system - - appimage - - archive -# }}} -nerdfonts: - install_methods: - - archive - - system -nodejs: - install_methods: - - system - pkgname: - Linux: nodejs - Darwin: node - pkg_deps: - Linux: - - npm - - sqlite -rust: - install_methods: - - system -starship: - install_methods: - - source -yazi: - install_methods: - - source - - cargo -zoxide: - install_methods: - - system -zsh: - install_methods: - - system - -## Package specific configuration that never need to be set by the installer -__nerdfonts: # {{{ - 0xProto: - brew: font-0xproto-nerd-font - "3270": - brew: font-3270-nerd-font - Agave: - brew: font-agave-nerd-font - AnonymicePro: - archive: AnonymousPro - brew: font-anonymice-nerd-font - Arimo: - brew: font-arimo-nerd-font - AurulentSansM: - archive: AurulentSansMono - brew: font-aurulent-sans-mono-nerd-font - BigBlueTerm: - archive: BigBlueTerminal - brew: font-bigblue-terminal-nerd-font - BitstromWera: - archive: BitstreamVeraSansMono - brew: font-bitstream-vera-sans-mono-nerd-font - BlexMono: - archive: IBMPlexMono - brew: font-blex-mono-nerd-font - CaskaydiaCove: - archive: CascadiaCode - brew: font-caskaydia-cove-nerd-font - CaskaydiaMono: - archive: CascadiaMono - brew: font-caskaydia-mono-nerd-font - CodeNewRoman: - brew: font-code-new-roman-nerd-font - ComicShannsMono: - brew: font-comic-shanns-mono-nerd-font - CommitMono: - brew: font-commit-mono-nerd-font - Cousine: - brew: font-cousine-nerd-font - D2CodingLigature: - archive: D2Coding - brew: font-d2coding-nerd-font - DaddyTimeMono: - brew: font-daddy-time-mono-nerd-font - DejaVuSansM: - archive: DejaVuSansMono - brew: font-dejavu-sans-mono-nerd-font - DepartureMono: - brew: font-departure-mono-nerd-font - DroidSansM: - archive: DroidSansMono - brew: font-droid-sans-mono-nerd-font - EnvyCodeR: - brew: font-envy-code-r-nerd-font - FantasqueSansM: - archive: FantasqueSansMono - brew: font-fantasque-sans-mono-nerd-font - FiraCode: - brew: font-fira-code-nerd-font - FiraMono: - brew: font-fira-mono-nerd-font - GeistMono: - brew: font-geist-mono-nerd-font - GoMono: - archive: Go-Mono - brew: font-go-mono-nerd-font - GohuFont: - archive: Gohu - brew: font-gohufont-nerd-font - Hack: - brew: font-hack-nerd-font - Hasklug: - archive: Hasklig - brew: font-hasklug-nerd-font - HeavyData: - brew: font-heavy-data-nerd-font - Hurmit: - archive: Hermit - brew: font-hurmit-nerd-font - iMWriting: - archive: IA-Writer - brew: font-im-writing-nerd-font - Inconsolata: - brew: font-inconsolata-nerd-font - InconsolataGo: - brew: font-inconsolata-go-nerd-font - InconsolataLGC: - brew: font-inconsolata-lgc-nerd-font - IntoneMono: - archive: IntelOneMono - brew: font-intone-mono-nerd-font - Iosevka: - brew: font-iosevka-nerd-font - IosevkaTerm: - brew: font-iosevka-term-nerd-font - IosevkaTermSlab: - brew: font-iosevka-term-slab-nerd-font - JetBrainsMono: - brew: font-jetbrains-mono-nerd-font - Lekton: - brew: font-lekton-nerd-font - LiterationMono: - archive: LiberationMono - brew: font-liberation-nerd-font - Lilex: - brew: font-lilex-nerd-font - MartianMono: - brew: font-martian-mono-nerd-font - MesloLG: - archive: Meslo - brew: font-meslo-lg-nerd-font - Monaspice: - archive: Monaspace - brew: font-monaspace-nerd-font - Monofur: - brew: font-monofur-nerd-font - Monoid: - brew: font-monoid-nerd-font - Mononoki: - brew: font-mononoki-nerd-font - M+: - archive: MPlus - brew: font-m+-nerd-font - Noto: - brew: font-noto-nerd-font - OpenDyslexic: - brew: font-open-dyslexic-nerd-font - Overpass: - brew: font-overpass-nerd-font - ProFont: - brew: font-profont-nerd-font - ProggyClean: - brew: font-proggy-clean-tt-nerd-font - RecMono: - archive: Recursive - brew: font-recursive-mono-nerd-font - RobotoMono: - brew: font-roboto-mono-nerd-font - ShureTechMono: - archive: ShareTechMono - brew: font-shure-tech-mono-nerd-font - SauceCodePro: - archive: SourceCodePro - brew: font-sauce-code-pro-nerd-font - SpaceMono: - brew: font-space-mono-nerd-font - Symbols: - archive: NerdFontsSymbolsOnly - brew: font-symbols-only-nerd-font - Terminess: - archive: Terminus - brew: font-terminess-ttf-nerd-font - Tinos: - brew: font-tinos-nerd-font - Ubuntu: - brew: font-ubuntu-nerd-font - UbuntuMono: - brew: font-ubuntu-mono-nerd-font - UbuntuSans: - brew: font-ubuntu-sans-nerd-font - VictorMono: - brew: font-victor-mono-nerd-font - ZedMono: - brew: font-zed-mono-nerd-font - base_url: https://github.com/ryanoasis/nerd-fonts/releases/latest/download -# }}}