diff --git a/tasks/facts.yml b/tasks/facts.yml index 7b440f4..7dd60fd 100644 --- a/tasks/facts.yml +++ b/tasks/facts.yml @@ -24,13 +24,13 @@ - not use_local ansible.builtin.set_fact: path: - prefix: "{{ defaults.path.prefix }}" + prefix: "{{ default_install_prefix }}" - name: Set install variables ansible.builtin.set_fact: ext_become: "{{ not use_local }}" path: - prefix: "{{ path.prefix }}" + prefix: "{{ default_install_prefix }}" appimage: "{{ path.appimage | default(path.prefix ~ defaults.path.suffix.appimage) }}" archive: "{{ path.archive | default(path.prefix ~ defaults.path.suffix.archive) }}" bin: "{{ path.bin | default(path.prefix ~ defaults.path.suffix.bin) }}" @@ -45,7 +45,6 @@ flatpak_remote: # flatpak remotes, includes flathub by default - name: flathub url: https://dl.flathub.org/repo/flathub.flatpakrepo - flatpak_method: "{% if use_local %}user{% else %}system{% endif %}" pkg_appimage: [] # appimages to install pkg_flatpak: [] # flatpak packages to install pkg_snap: [] # snpacraft.io packages @@ -70,22 +69,24 @@ - name: Set macOS specific facts when: - - ansible_distribution == 'MacOSX' + - ansible_distribution == 'MacOSX' or + ansible_distribution == 'MacOS' ansible.builtin.set_fact: brewtap: [] # homebrew taps to add - pipx_exec: "/opt/homebrew/bin/pipx" + pipx_exec: "/opt/homebrew/bin/pipx" # pipx executable pkg_cask: [] # homebrew casks pkg_tap: [] # homebrew tap packages sys_pkg_become: false # homebrew doesn't require sudo access - lib_path: lib + lib_path: lib # macos shared library path - name: Set OS independant facts ansible.builtin.set_fact: pkg_archive: [] # packages installed via prebuilt archive - pkg_cargo: [] # rust packages from cargo + pkg_cargo: [] # rust packages from cargo using `cargo install` + pkg_cargo_build: [] # rust packages using `cargo build` before install pkg_go: [] # go applications pkg_npm: [] # npm commands pkg_pipx: [] # pipx packages - pkg_zig: [] + pkg_zig: [] # zig packages pkg_src: [] # packages built from source pkg_sys: [] # system package manager packages, homebrew on macOS, dnf for RedHat based, apt for Debian Based diff --git a/tasks/addpkg.yml b/tasks/helpers/addpkg.yml similarity index 100% rename from tasks/addpkg.yml rename to tasks/helpers/addpkg.yml diff --git a/tasks/appimage.yml b/tasks/helpers/appimage.yml similarity index 61% rename from tasks/appimage.yml rename to tasks/helpers/appimage.yml index 9a81d8d..b8e78b1 100644 --- a/tasks/appimage.yml +++ b/tasks/helpers/appimage.yml @@ -5,7 +5,7 @@ block: - name: Ensure appimage path exists ansible.builtin.file: - path: "{{ path.appimage }}/{{ pkg.link_name }}" + path: "{{ path.appimage }}/{{ appimage_link_name }}" mode: '0755' state: directory @@ -15,12 +15,12 @@ mode: '0755' decompress: false backup: true - url: "{{ pkg.url }}" - dest: "{{ path.appimage }}/{{ pkg.link_name }}/{{ pkg.file }}" + url: "{{ appimage_url }}" + dest: "{{ path.appimage }}/{{ appimage_link_name }}/{{ appimage_file }}" - name: Link appimage to bin become: "{{ ext_become }}" ansible.builtin.file: state: link - src: "{{ path.appimage }}/{{ pkg.link_name }}/{{ pkg.file }}" - path: "{{ path.bindir }}/{{ pkg.link_name }}" + src: "{{ path.appimage }}/{{ appimage_link_name }}/{{ appimage_file }}" + path: "{{ path.bindir }}/{{ appimage_link_name }}" diff --git a/tasks/cargo.yml b/tasks/helpers/cargo.yml similarity index 100% rename from tasks/cargo.yml rename to tasks/helpers/cargo.yml diff --git a/tasks/helpers/cargo_build.yml b/tasks/helpers/cargo_build.yml index 9372217..56ea3b0 100644 --- a/tasks/helpers/cargo_build.yml +++ b/tasks/helpers/cargo_build.yml @@ -50,6 +50,7 @@ group: root mode: "0755" state: directory + - name: Copy extra files loop: "{{ install_files | dict2items }}" loop_control: diff --git a/tasks/helpers/flatpak.yml b/tasks/helpers/flatpak.yml new file mode 100644 index 0000000..fa9fd27 --- /dev/null +++ b/tasks/helpers/flatpak.yml @@ -0,0 +1,9 @@ +# vim: set filetype=yaml.ansible : +--- +- name: Install flatpak + become: "{{ ext_become }}" + community.general.flatpak: + method: "{{ pkg_method }}" + remote: "{{ pkg_remote }}" + name: "{{ pkg_name }}" + state: present diff --git a/tasks/helpers/flatpak_remote.yml b/tasks/helpers/flatpak_remote.yml new file mode 100644 index 0000000..98e1855 --- /dev/null +++ b/tasks/helpers/flatpak_remote.yml @@ -0,0 +1,10 @@ +# vim: set filetype=yaml.ansible : +--- +- name: Add flatpak remote + become: "{{ ext_become }}" + community.general.flatpak_remote: + enabled: "{{ remote_enabled }}" + flatpakrepo_url: "{{ remote_url }}" + method: "{{ remote_method }}" + name: "{{ remote_name }}" + state: "{{ remote_state }}" diff --git a/tasks/go.yml b/tasks/helpers/go.yml similarity index 100% rename from tasks/go.yml rename to tasks/helpers/go.yml diff --git a/tasks/npm.yml b/tasks/helpers/npm.yml similarity index 100% rename from tasks/npm.yml rename to tasks/helpers/npm.yml diff --git a/tasks/pipx.yml b/tasks/helpers/pipx.yml similarity index 100% rename from tasks/pipx.yml rename to tasks/helpers/pipx.yml diff --git a/tasks/linux.yml b/tasks/linux.yml index fcbbdad..bd0a73c 100644 --- a/tasks/linux.yml +++ b/tasks/linux.yml @@ -7,37 +7,42 @@ - name: Add flatpak remotes when: - flatpak_remote|length > 0 - become: "{{ ext_become }}" loop: "{{ flatpak_remote | unique }}" loop_control: loop_var: remote - community.general.flatpak_remote: - enabled: true - flatpakrepo_url: "{{ remote.url }}" - method: "{{ flatpak_method }}" - name: "{{ remote.name }}" - state: present + vars: + remote_enabled: true + remote_url: "{{ remote.url }}" + remote_method: "{{ remote.method | default(default_flatpak_method) }}" + remote_name: "{{ remote.name }}" + remote_state: "{{ remote.state | default('present') }}" + ansible.builtin.include_tasks: + file: helpers/flatpak_remote.yml - name: Install flatpaks when: - pkg_flatpak|length > 0 - become: "{{ ext_become }}" block: - name: Install flatpak loop: "{{ pkg_flatpak | unique }}" loop_control: loop_var: flatpak - community.general.flatpak: - method: "{{ flatpak.method | default(flatpak_method) }}" - name: "{{ flatpak.name | default(flatpak) }}" - remote: "{{ flatpak.remote | default('flathub') }}" - state: present + vars: + pkg_method: "{{ flatpak.method | default(default_flatpak_method) }}" + pkg_remote: "{{ flatpak.remote | default(default_flatpak_remote) }}" + pkg_name: "{{ flatpak.name | default(flatpak) }}" + ansible.builtin.include_tasks: + file: helpers/flatpak.yml - name: Install pkg_appimage when: - pkg_appimage|length > 0 loop: "{{ pkg_appimage }}" loop_control: - loop_var: pkg + loop_var: appimage + vars: + appimage_link_name: "{{ appimage.link_name }}" + appimage_url: "{{ appimage.url }}" + appimage_file: "{{ appimage.file }}" ansible.builtin.include_tasks: - file: appimage.yml + file: helpers/appimage.yml diff --git a/tasks/main.yml b/tasks/main.yml index eeac59e..ca424b4 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -198,6 +198,26 @@ ansible.builtin.include_tasks: file: cargo.yml +- name: Build and install rust apps + when: + - pkg_cargo_build|length > 0 + block: + - name: Run cargo build and install + loop: "{{ cargo_pkg_build }}" + loop_control: + loop_var: pkg + vars: + bin_name: "{{ pkg.bin_name | default(omit) }}" + bin_output: "{{ pkg.bin_output | default(omit) }}" + cargo_build_flags: "{{ pkg.cargo_build_flags | default(omit) }}" + depth: "{{ pkg.depth | default(omit) }}" + install_files: "{{ pkg.install_files | default(omit) }}" + name: "{{ pkg.name | default(omit) }}" + recursive: "{{ pkg.recursive | default(omit) }}" + repo: "{{ pkg.repo | default(omit) }}" + ansible.builtin.include_tasks: + file: helpers/cargo_build.yml + - name: Install go packages when: - pkg_go|length > 0 diff --git a/tasks/pkgs/alacritty.yml b/tasks/pkgs/alacritty.yml index 13dfb19..0fcbbca 100644 --- a/tasks/pkgs/alacritty.yml +++ b/tasks/pkgs/alacritty.yml @@ -32,7 +32,6 @@ ansible.builtin.set_fact: alacritty_method: source alacritty_src_install: - cargo_install_type: source cargo_build_flags: - --release name: "{{ alacritty_pkgname }}" @@ -97,7 +96,6 @@ - python3 - desktop-file-utils # }}} - - name: Append alacritty installation block: - name: Append alacritty to pkg_cargo diff --git a/vars/main.yml b/vars/main.yml index e89fcaf..02c5cc0 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,24 +1,22 @@ # vim: set filetype=yaml.ansible : # variables used in ansible_role_package --- -default_install_method: package +default_flatpak_method: system # possible values are 'system' and 'user' +default_install_method: package # possible values are 'package', 'source', 'appimage' +default_install_prefix: /usr/local debug: false use_local: false -prefer_method: src packages: [] # list of packages to install extra_packages: [] # list of extra packages to add to pkg_sys -go_do_update: true -defaults: - path: - prefix: "/usr/local" - suffix: - appimage: "/appimage" # keep appimages here - archive: "/archive" # extract archives here - bin: "/bin" # installation prefix. Binaries are placed in `{{ install }}/bin` - cargo: "/cargo" # cargo install location - go: "/go" # GOROOT - pipx: "/pipx" # where pipx environments are installed (venvs). They are symlinked to `bin` +paths: + suffix: + appimage: "/appimage" # keep appimages in `{{ default_install_prefix }}/appimage` + archive: "/archive" # extract archives to `{{ default_install_prefix }}/archive` + bin: "/bin" # installation prefix. Binaries are placed in `{{ default_install_prefix }}/bin` + cargo: "/cargo" # cargo install location `{{ default_install_prefix }}/cargo` + go: "/go" # GOROOT `{{ default_install_prefix }}/go` + pipx: "/pipx" # where pipx environments are installed `{{ default_install_prefix }}/pipx` # paths resolve to either $HOME/.local as the prefix, or /usr/local # all created paths are named: diff --git a/vars/pkgs/alacritty.yml b/vars/pkgs/alacritty.yml deleted file mode 100644 index 527360b..0000000 --- a/vars/pkgs/alacritty.yml +++ /dev/null @@ -1,10 +0,0 @@ -# vim: set filetype=yaml.ansible : ---- -alacritty: - version: 0.15.1 - method: - default: cargo - Darwin: cask - cargo: - locked: true - name: alacritty