lot's of standardizing with the refacto

This commit is contained in:
Matthew Stobbs
2025-02-11 22:14:04 -07:00
parent 6d52cc6a4d
commit 9250145116
10 changed files with 384 additions and 209 deletions

199
README.md
View File

@@ -1,5 +1,4 @@
Role Name
=========
# ansible_role_package
Manage package installation for a number of packages
that sometimes need special handling. Some are built from
@@ -11,60 +10,162 @@ special instructions to properly install and use. I decided to
simplify the management of those packages by creating a role with
special handling.
Included packages:
Order of precedence for package installation:
- Desktop applications: alacritty, firefox, ghostty, kitty, neovide
- Shell applications: btop, carapace, nushell, fzf, jq, neovim, pipx, ripgrep,
stow, tmux, zoxide
- Infrastructure applications: ansible, consul, nomad, packer, terraform
- Development tools: cmake, git, go, nodejs, hugo, rust, tidy
- Misc: editorconfig, hashicorp package repository, nerdfonts, pandoc,
pytho3-pip, terra repository for fedora, zfs
- Cargo packages: dotenv-linter, eza, htmx-lsp, starship
- Go packages: air, buf, checkmake, glow, lazygit, revive, templ, gopls
- NPM packages: ansible-language-server, commitlint-cli,
commitlint-config-conventional, markdownlint-cli, quobix-vacuum,
tailwindcss-languageserver
- Pipx packages: cmakelang, sqlfluff
1. System package manager (dnf, apt, homebrew, etc.)
2. Appimage (Linux only)
3. Flatpak (Linux only)
4. Snap (Linux only), takes precedence over flatpak on Ubuntu based systems
5. Language package manager (`cargo install`, `go install`, `npm install`, etc.)
6. Build and install from source
Requirements
------------
_This does not configure installed software, just installs it_
## Available Packages
- air
- alacritty
- ansible-language-server
- ansible-lint
- ansible
- bashls
- bat
- bitwarden
- blender
- broot
- btop
- buf
- bufls
- carapace
- cheat
- checkmake
- choose
- clangd
- cmake
- cmakelang
- commitlint-cli
- commitlint-config-conventional
- consul
- cssls
- curlie
- dbeaver
- dockerls
- dotenv-linter
- duf
- dust
- editorconfig
- eslint
- eza
- fd
- firefox
- flatpak
- fzf
- ghostty
- git
- glow
- go
- godot
- gopls
- gping
- heroic
- htmlls
- htmx-lsp
- httpie
- hugo
- hyperfine
- intelephense
- jinja-lsp
- jq
- jsonls
- kitty
- lazygit
- libreoffice
- lua-language-server
- markdownlint-cli
- mcfly
- neovide
- neovim
- nerdfonts
- nextcloud
- nginxls
- nodejs
- nomad
- nushell
- packer
- pandoc
- pgadmin
- pipx
- podman
- pyright
- python3-pip
- quobix-vacuum
- revive
- ripgrep
- rust
- sd
- sqlfluff
- sqlls
- starship
- stow
- tailscale
- tailwindcss-languageserver
- templ
- terra_repo
- terraform
- terraformls
- thunderbird
- tidy
- tldr
- tmux
- vault
- xh
- yamlls
- zfs
- zig
- zls
- zoxide
- zsh
## Requirements
-
## Role Variables
- `use_local`: Boolean, default `true`
- When `true`, uses the following paths:
- `$HOME/.local` as the install prefix, placing binaries in `$HOME/.local/bin`
- `$HOME/.local/appimage` for saved appimages, which are then linked to `$HOME/.local/bin`
- `$HOME/.local/archive` for extracted archives linking binaries to `$HOME/.local/bin`
- `$HOME/.cache` for caching downloads
- `$HOME/.cargo` for cargo installations, placing binaries in `$HOME/.cargo/bin`
- When `false`, uses the following system wide paths:
- `/usr/local` as the install prefix, placing binaries in `/usr/local/bin`
- `/opt/appimage` for saved appimages, which are then linked to `/usr/local/bin`
- `/opt/archive` for extracted archives, linking binaries to `/usr/local/bin`
- `/opt/cache` for caching downloads
- `/opt/cargo` for rust cargo installations, placing binaries in `/opt/cargo/bin`
- `packages`: List of strings
- List of packages to install from the `Available Packages` list
- `prefer_method`: String, default `system`
- The preferred method of installation an application when multiple options exist
- Valid options are:
- `flatpak` - Flatpak, Linux only
- `langtool` - Using language tools such as `cargo`, `go`, `npm` or `pipx`
- `snap` - Snap, Linux only
- `source` - Prefer building from source. **Not recommended**
- `system` - Default, system package manager (dnf, apt, homebrew, etc.)
## Dependencies
Role Variables
--------------
- packages:
- List of packages to install
- assume_missing_is_syspkg:
- Bool. Default `true`
- Handle non-supported packages as package manager packages
- full_upgrade:
- Bool. Default `false`
- Do a full package upgrade first if `true`
- install_state:
- String. Default `present`
- Set to `latest` to update packages
- Set to `absent` to remove packages
- *currently only supports remove package manager installed packages*
- Valid choices: `present`, `latest`, `absent`
- pkgconfig:
- specific configuration for individual packages
Dependencies
------------
## Example Playbook
Example Playbook
----------------
License
-------
## License
MIT
Author Information
------------------
## Author Information
- Matthew Stobbs
- Matthew Stobbs <matthew@stobbs.ca>