├── .python-version ├── ansible_collections └── scruffaluff │ └── bootware │ ├── roles │ ├── gdb │ │ ├── files │ │ │ ├── gdbinit.py │ │ │ └── gdbinit │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── fish │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── jq │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── sd │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── super │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── xh │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── yq │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── age │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── audio │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── aws │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── bash │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── files │ │ │ └── bash_profile │ ├── bat │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yaml │ │ └── files │ │ │ ├── config │ │ │ └── lesskey │ ├── build │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── chafa │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── chrome │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── files │ │ │ └── preferences.json │ ├── compass │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── croc │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── deno │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── dive │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── doctl │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── duf │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── fact │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── ffmpeg │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── ffsend │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── firefox │ │ ├── meta │ │ │ └── main.yaml │ │ ├── files │ │ │ ├── preferences │ │ │ └── upgrades │ │ ├── README.md │ │ └── tasks │ │ │ ├── debian.yaml │ │ │ └── ubuntu.yaml │ ├── flyctl │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── font │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── tasks │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── fzf │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── gdu │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── git │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yaml │ │ └── templates │ │ │ └── gitconfig.j2 │ ├── glow │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yaml │ │ └── files │ │ │ └── glow.yaml │ ├── hdf5 │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── helm │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── htop │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── ignore │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── files │ │ │ └── ignore │ │ └── tasks │ │ │ └── main.yaml │ ├── just │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── k3d │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── k9s │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yaml │ │ └── files │ │ │ └── config.yaml │ ├── kind │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── krew │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── kubectl │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── libvirt │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── lldb │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── files │ │ │ ├── lldbinit │ │ │ └── lldbinit.py │ ├── lua │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── mkcert │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── mongosh │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── node │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── path │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── templates │ │ │ ├── environ.conf.j2 │ │ │ ├── user.plist.j2 │ │ │ └── profile.sh.j2 │ │ └── defaults │ │ │ └── main.yaml │ ├── pnpm │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── podman │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── prune │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── tasks │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── python │ │ ├── meta │ │ │ └── main.yaml │ │ ├── files │ │ │ ├── jupyterlab_terminal.json │ │ │ ├── jupyterlab_filebrowser.json │ │ │ ├── jupyterlab_notification.json │ │ │ ├── jupyter_notebook_config.py │ │ │ ├── pdbrc │ │ │ ├── ruff.toml │ │ │ └── sitecustomize.py │ │ ├── README.md │ │ ├── tasks │ │ │ ├── main.yaml │ │ │ └── owner.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── qemu │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── rclone │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── restic │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── ripgrep │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yaml │ │ └── files │ │ │ └── ripgreprc │ ├── scc │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── shfmt │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── sops │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── sqlite │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── files │ │ │ └── sqliterc │ ├── ssh │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── tilt │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── tldr │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── files │ │ │ └── config.toml │ ├── tmux │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── usql │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── files │ │ │ └── usqlrc │ ├── utility │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── velero │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── vim │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── tasks │ │ │ └── main.yaml │ │ └── files │ │ │ └── vimrc │ ├── vscode │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── zed │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── tasks │ │ │ └── main.yaml │ │ ├── files │ │ │ └── zed.desktop │ │ └── defaults │ │ │ └── main.yaml │ ├── zellij │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── files │ │ │ └── layout.kdl │ ├── zoxide │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── carapace │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── fastfetch │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── hadolint │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── helmfile │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── hyperfine │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── image_magick │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── kubeshark │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── lazydocker │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── libre_office │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── obsidian │ │ ├── files │ │ │ ├── community-plugins.json │ │ │ ├── app.json │ │ │ ├── appearance.json │ │ │ └── core-plugins.json │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── powershell │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── files │ │ │ └── SSHCompletion.psm1 │ ├── readline │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── tasks │ │ │ └── main.yaml │ │ └── files │ │ │ └── editrc │ ├── security │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── shellcheck │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── files │ │ │ └── shellcheckrc │ │ └── tasks │ │ │ └── main.yaml │ ├── starship │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── terraform │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── vscodium │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── wireshark │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── alacritty │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── meta │ │ │ └── main.yaml │ │ └── README.md │ ├── android_tools │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── fd │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── uv │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── bottom │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yaml │ │ └── files │ │ │ └── bottom.toml │ ├── dust │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── files │ │ │ └── config.toml │ │ └── defaults │ │ │ └── main.yaml │ ├── harper │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── samply │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ └── defaults │ │ │ └── main.yaml │ ├── presenterm │ │ ├── meta │ │ │ └── main.yaml │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yaml │ │ └── files │ │ │ └── config.yaml │ ├── lsd │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ ├── files │ │ │ ├── config.yaml │ │ │ └── colors.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── rust │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── vlc │ │ ├── README.md │ │ └── meta │ │ │ └── main.yaml │ ├── yazi │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ └── files │ │ │ ├── smart_open.lua │ │ │ └── yazi.toml │ ├── bitwig │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── docker │ │ ├── README.md │ │ └── meta │ │ │ └── main.yaml │ ├── gitui │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── files │ │ │ └── key_bindings.ron │ ├── helix │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── connect │ │ ├── README.md │ │ └── tasks │ │ │ └── main.yaml │ ├── dbeaver │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── flatpak │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── nushell │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── obs │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── spotify │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── wezterm │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── audacity │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── beekeeper │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── bitwarden │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── caffeine │ │ ├── README.md │ │ └── meta │ │ │ └── main.yaml │ ├── essential │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── kdenlive │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── miniserve │ │ ├── README.md │ │ └── meta │ │ │ └── main.yaml │ ├── musescore │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── templates │ │ │ └── musescore.ini.j2 │ │ └── files │ │ │ └── macos.sh │ ├── prettier │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ ├── files │ │ │ └── prettierrc.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── sonic_pi │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── tailscale │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── tasks │ │ │ └── main.yaml │ ├── termshark │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yaml │ │ ├── files │ │ │ └── termshark.toml │ │ └── meta │ │ │ └── main.yaml │ ├── topgrade │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── templates │ │ │ └── topgrade.toml.j2 │ ├── variable │ │ ├── README.md │ │ └── meta │ │ │ └── main.yaml │ ├── watchexec │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── android_studio │ │ ├── README.md │ │ ├── files │ │ │ └── android_studio.desktop │ │ └── meta │ │ │ └── main.yaml │ ├── github_runner │ │ ├── README.md │ │ ├── meta │ │ │ └── main.yaml │ │ └── defaults │ │ │ └── main.yaml │ ├── gitlab_runner │ │ ├── README.md │ │ └── meta │ │ │ └── main.yaml │ ├── window_manager │ │ ├── README.md │ │ └── meta │ │ │ └── main.yaml │ └── desktop_environment │ │ ├── meta │ │ └── main.yaml │ │ ├── README.md │ │ ├── defaults │ │ └── main.yaml │ │ └── files │ │ ├── fedora.sh │ │ ├── popos.sh │ │ └── ubuntu.sh │ ├── meta │ └── runtime.yml │ ├── plugins │ └── filter │ │ └── filters.py │ └── galaxy.yml ├── data ├── public │ ├── favicon.ico │ ├── robots.txt │ └── favicon.svg ├── templates │ ├── software.mustache │ ├── control.tmpl │ ├── bootware.rb.tmpl │ ├── PKGBUILD.tmpl │ ├── APKBUILD.tmpl │ └── bootware.spec.tmpl └── config │ └── script_analyzer.psd1 ├── ansible.cfg ├── script ├── fmt_toml.sh ├── req_libc.nu └── test_e2e.nu ├── .shellcheckrc ├── .editorconfig ├── package.json ├── src └── completion │ ├── bootware.bash │ └── bootware.man ├── .prettierignore ├── .dockerignore ├── .prettierrc.yaml ├── CONTRIBUTING.md ├── .gitignore ├── test ├── e2e │ ├── rpm.dockerfile │ ├── deb.dockerfile │ ├── brew.dockerfile │ └── alpm.dockerfile └── unit │ ├── config.test.ps1 │ ├── config.test.bats │ ├── install.test.ps1 │ ├── install.test.bats │ └── bootware.test.bats ├── LICENSE.md ├── doc └── config.md ├── .vitepress └── config.ts └── .ansible-lint /.python-version: -------------------------------------------------------------------------------- 1 | 3.13.9 2 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gdb/files/gdbinit.py: -------------------------------------------------------------------------------- 1 | """GDB settings script.""" 2 | -------------------------------------------------------------------------------- /data/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scruffaluff/bootware/HEAD/data/public/favicon.ico -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fish/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fish_plugins: 3 | - edc/bass 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/jq/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sd/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/super/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | super_passwordless: false 3 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/xh/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/yq/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/age/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/audio/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/aws/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bash/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bat/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/build/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/chafa/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/chrome/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/compass/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/croc/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/deno/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/dive/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/doctl/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/duf/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fact/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ffmpeg/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ffsend/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/firefox/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fish/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/flyctl/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/font/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fzf/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gdb/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gdu/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/git/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/glow/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/hdf5/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/helm/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/htop/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ignore/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/just/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/k3d/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/k9s/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/kind/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/krew/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/kubectl/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/libvirt/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lldb/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lua/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/mkcert/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/mongosh/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/node/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/path/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/pnpm/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/podman/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/prune/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/qemu/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/rclone/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/restic/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ripgrep/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/scc/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/shfmt/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sops/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sqlite/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ssh/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/super/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tilt/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tldr/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tmux/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/usql/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/utility/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/velero/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vim/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vscode/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zed/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zellij/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zoxide/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/carapace/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fastfetch/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/hadolint/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/helmfile/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/hyperfine/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/image_magick/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/kubeshark/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lazydocker/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/libre_office/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obsidian/files/community-plugins.json: -------------------------------------------------------------------------------- 1 | ["obsidian-excalidraw-plugin"] 2 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/powershell/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/readline/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/security/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/shellcheck/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/starship/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/terraform/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vscodium/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/wireshark/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/alacritty/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | alacritty_font_size: "{{ font_size }}" 3 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/android_tools/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fd/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/uv/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bottom/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/dust/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/harper/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/samply/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/presenterm/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/firefox/files/preferences: -------------------------------------------------------------------------------- 1 | Package: * 2 | Pin: release o=LP-PPA-mozillateam 3 | Pin-Priority: 1001 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fd/README.md: -------------------------------------------------------------------------------- 1 | # Fd 2 | 3 | Fd is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/firefox/files/upgrades: -------------------------------------------------------------------------------- 1 | Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}"; 2 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/jq/README.md: -------------------------------------------------------------------------------- 1 | # Jq 2 | 3 | Jq is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/files/jupyterlab_terminal.json: -------------------------------------------------------------------------------- 1 | { 2 | "closeOnExit": true, 3 | "macOptionIsMeta": true 4 | } 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sd/README.md: -------------------------------------------------------------------------------- 1 | # Sd 2 | 3 | Sd is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/uv/README.md: -------------------------------------------------------------------------------- 1 | # Uv 2 | 3 | Uv is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/xh/README.md: -------------------------------------------------------------------------------- 1 | # Xh 2 | 3 | Xh is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/yq/README.md: -------------------------------------------------------------------------------- 1 | # Yq 2 | 3 | Yq is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/aws/README.md: -------------------------------------------------------------------------------- 1 | # Aws 2 | 3 | Aws is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bash/README.md: -------------------------------------------------------------------------------- 1 | # Bash 2 | 3 | Bash is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bat/README.md: -------------------------------------------------------------------------------- 1 | # Bat 2 | 3 | Bat is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/croc/README.md: -------------------------------------------------------------------------------- 1 | # Croc 2 | 3 | Croc is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/deno/README.md: -------------------------------------------------------------------------------- 1 | # Deno 2 | 3 | Deno is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/dive/README.md: -------------------------------------------------------------------------------- 1 | # Dive 2 | 3 | Dive is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/duf/README.md: -------------------------------------------------------------------------------- 1 | # Duf 2 | 3 | Duf is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/dust/README.md: -------------------------------------------------------------------------------- 1 | # Dust 2 | 3 | Dust is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fact/README.md: -------------------------------------------------------------------------------- 1 | # Fact 2 | 3 | Fact is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fish/README.md: -------------------------------------------------------------------------------- 1 | # Fish 2 | 3 | Fish is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/font/README.md: -------------------------------------------------------------------------------- 1 | # Font 2 | 3 | Font is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fzf/README.md: -------------------------------------------------------------------------------- 1 | # Fzf 2 | 3 | Fzf is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gdb/README.md: -------------------------------------------------------------------------------- 1 | # GDB 2 | 3 | GDB is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gdu/README.md: -------------------------------------------------------------------------------- 1 | # GDU 2 | 3 | GDU is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/git/README.md: -------------------------------------------------------------------------------- 1 | # Git 2 | 3 | Git is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/glow/README.md: -------------------------------------------------------------------------------- 1 | # Glow 2 | 3 | Glow is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/hdf5/README.md: -------------------------------------------------------------------------------- 1 | # Hdf5 2 | 3 | Hdf5 is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/helm/README.md: -------------------------------------------------------------------------------- 1 | # Helm 2 | 3 | Helm is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/htop/README.md: -------------------------------------------------------------------------------- 1 | # Htop 2 | 3 | Htop is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/just/README.md: -------------------------------------------------------------------------------- 1 | # Just 2 | 3 | Just is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/k3d/README.md: -------------------------------------------------------------------------------- 1 | # K3d 2 | 3 | K3d is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/k9s/README.md: -------------------------------------------------------------------------------- 1 | # K9s 2 | 3 | K9s is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/kind/README.md: -------------------------------------------------------------------------------- 1 | # Kind 2 | 3 | Kind is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/krew/README.md: -------------------------------------------------------------------------------- 1 | # Krew 2 | 3 | Krew is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lldb/README.md: -------------------------------------------------------------------------------- 1 | # LLDB 2 | 3 | LLDB is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lsd/README.md: -------------------------------------------------------------------------------- 1 | # Lsd 2 | 3 | Lsd is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lua/README.md: -------------------------------------------------------------------------------- 1 | # Lua 2 | 3 | Lua is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/node/README.md: -------------------------------------------------------------------------------- 1 | # Node 2 | 3 | Node is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/path/README.md: -------------------------------------------------------------------------------- 1 | # Path 2 | 3 | Path is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/pnpm/README.md: -------------------------------------------------------------------------------- 1 | # PNPM 2 | 3 | PNPM is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/qemu/README.md: -------------------------------------------------------------------------------- 1 | # Qemu 2 | 3 | Qemu is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/rust/README.md: -------------------------------------------------------------------------------- 1 | # Rust 2 | 3 | Rust is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/scc/README.md: -------------------------------------------------------------------------------- 1 | # Scc 2 | 3 | Scc is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sops/README.md: -------------------------------------------------------------------------------- 1 | # Sops 2 | 3 | Sops is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ssh/README.md: -------------------------------------------------------------------------------- 1 | # SSH 2 | 3 | SSH is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tilt/README.md: -------------------------------------------------------------------------------- 1 | # Tilt 2 | 3 | Tilt is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tldr/README.md: -------------------------------------------------------------------------------- 1 | # Tldr 2 | 3 | Tldr is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tmux/README.md: -------------------------------------------------------------------------------- 1 | # Tmux 2 | 3 | Tmux is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/usql/README.md: -------------------------------------------------------------------------------- 1 | # Usql 2 | 3 | Usql is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vim/README.md: -------------------------------------------------------------------------------- 1 | # Vim 2 | 3 | Vim is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vlc/README.md: -------------------------------------------------------------------------------- 1 | # VLC 2 | 3 | VLC is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/yazi/README.md: -------------------------------------------------------------------------------- 1 | # Yazi 2 | 3 | Yazi is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zed/README.md: -------------------------------------------------------------------------------- 1 | # Zed 2 | 3 | Zed is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/audio/README.md: -------------------------------------------------------------------------------- 1 | # Audio 2 | 3 | Audio is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bitwig/README.md: -------------------------------------------------------------------------------- 1 | # Bitwig 2 | 3 | Bitwig is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bottom/README.md: -------------------------------------------------------------------------------- 1 | # Bottom 2 | 3 | Bottom is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/build/README.md: -------------------------------------------------------------------------------- 1 | # Build 2 | 3 | Build is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/chafa/README.md: -------------------------------------------------------------------------------- 1 | # Chafa 2 | 3 | Chafa is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/chrome/README.md: -------------------------------------------------------------------------------- 1 | # Chrome 2 | 3 | Chrome is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/docker/README.md: -------------------------------------------------------------------------------- 1 | # Docker 2 | 3 | Docker is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/doctl/README.md: -------------------------------------------------------------------------------- 1 | # Doctl 2 | 3 | Doctl is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ffmpeg/README.md: -------------------------------------------------------------------------------- 1 | # FFmpeg 2 | 3 | FFmpeg is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ffsend/README.md: -------------------------------------------------------------------------------- 1 | # Ffsend 2 | 3 | Ffsend is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/flyctl/README.md: -------------------------------------------------------------------------------- 1 | # FlyCtl 2 | 3 | FlyCtl is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gitui/README.md: -------------------------------------------------------------------------------- 1 | # GitUI 2 | 3 | GitUI is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/harper/README.md: -------------------------------------------------------------------------------- 1 | # Harper 2 | 3 | Harper is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/helix/README.md: -------------------------------------------------------------------------------- 1 | # Helix 2 | 3 | Helix is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ignore/README.md: -------------------------------------------------------------------------------- 1 | # Ignore 2 | 3 | Ignore is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/mkcert/README.md: -------------------------------------------------------------------------------- 1 | # Mkcert 2 | 3 | Mkcert is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/podman/README.md: -------------------------------------------------------------------------------- 1 | # Podman 2 | 3 | Podman is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/prune/README.md: -------------------------------------------------------------------------------- 1 | # Prune 2 | 3 | Prune is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/README.md: -------------------------------------------------------------------------------- 1 | # Python 2 | 3 | Python is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/files/jupyterlab_filebrowser.json: -------------------------------------------------------------------------------- 1 | { 2 | "showHiddenFiles": true, 3 | "useFuzzyFilter": true 4 | } 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/rclone/README.md: -------------------------------------------------------------------------------- 1 | # Rclone 2 | 3 | Rclone is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/restic/README.md: -------------------------------------------------------------------------------- 1 | # Restic 2 | 3 | Restic is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/samply/README.md: -------------------------------------------------------------------------------- 1 | # Samply 2 | 3 | Samply is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/shfmt/README.md: -------------------------------------------------------------------------------- 1 | # Shfmt 2 | 3 | Shfmt is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sqlite/README.md: -------------------------------------------------------------------------------- 1 | # Sqlite 2 | 3 | Sqlite is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/super/README.md: -------------------------------------------------------------------------------- 1 | # Super 2 | 3 | Super is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/velero/README.md: -------------------------------------------------------------------------------- 1 | # Velero 2 | 3 | Velero is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vscode/README.md: -------------------------------------------------------------------------------- 1 | # Vscode 2 | 3 | Vscode is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zellij/README.md: -------------------------------------------------------------------------------- 1 | # Zellij 2 | 3 | Zellij is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zoxide/README.md: -------------------------------------------------------------------------------- 1 | # Zoxide 2 | 3 | Zoxide is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/compass/README.md: -------------------------------------------------------------------------------- 1 | # Compass 2 | 3 | Compass is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/connect/README.md: -------------------------------------------------------------------------------- 1 | # Connect 2 | 3 | Connect is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/dbeaver/README.md: -------------------------------------------------------------------------------- 1 | # Dbeaver 2 | 3 | Dbeaver is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/firefox/README.md: -------------------------------------------------------------------------------- 1 | # Firefox 2 | 3 | Firefox is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/flatpak/README.md: -------------------------------------------------------------------------------- 1 | # Flatpak 2 | 3 | Flatpak is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/kubectl/README.md: -------------------------------------------------------------------------------- 1 | # Kubectl 2 | 3 | Kubectl is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/libvirt/README.md: -------------------------------------------------------------------------------- 1 | # Libvirt 2 | 3 | Libvirt is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/mongosh/README.md: -------------------------------------------------------------------------------- 1 | # MongoSh 2 | 3 | MongoSh is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/nushell/README.md: -------------------------------------------------------------------------------- 1 | # Nushell 2 | 3 | Nushell is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obs/README.md: -------------------------------------------------------------------------------- 1 | # OBS Studio 2 | 3 | OBS Studio is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/path/templates/environ.conf.j2: -------------------------------------------------------------------------------- 1 | # Add folders to system path. 2 | 3 | PATH="{{ system_paths | join(':') }}:${PATH}" 4 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ripgrep/README.md: -------------------------------------------------------------------------------- 1 | # Ripgrep 2 | 3 | Ripgrep is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/spotify/README.md: -------------------------------------------------------------------------------- 1 | # Spotify 2 | 3 | Spotify is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/utility/README.md: -------------------------------------------------------------------------------- 1 | # Utility 2 | 3 | Utility is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vscodium/README.md: -------------------------------------------------------------------------------- 1 | # Vscode 2 | 3 | Vscode is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/wezterm/README.md: -------------------------------------------------------------------------------- 1 | # Wezterm 2 | 3 | Wezterm is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/audacity/README.md: -------------------------------------------------------------------------------- 1 | # Audacity 2 | 3 | Audacity is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/beekeeper/README.md: -------------------------------------------------------------------------------- 1 | # Beekeeper 2 | 3 | Beekeeper is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bitwarden/README.md: -------------------------------------------------------------------------------- 1 | # Bitwarden 2 | 3 | Bitwarden is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/caffeine/README.md: -------------------------------------------------------------------------------- 1 | # Caffeine 2 | 3 | Caffeine is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/carapace/README.md: -------------------------------------------------------------------------------- 1 | # Carapace 2 | 3 | Carapace is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/essential/README.md: -------------------------------------------------------------------------------- 1 | # Essential 2 | 3 | Essential is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fastfetch/README.md: -------------------------------------------------------------------------------- 1 | # Fastfetch 2 | 3 | Fastfetch is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/hadolint/README.md: -------------------------------------------------------------------------------- 1 | # Hadolint 2 | 3 | Hadolint is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/helmfile/README.md: -------------------------------------------------------------------------------- 1 | # Helmfile 2 | 3 | Helmfile is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/hyperfine/README.md: -------------------------------------------------------------------------------- 1 | # Hyperfine 2 | 3 | Hyperfine is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/kdenlive/README.md: -------------------------------------------------------------------------------- 1 | # Kdenlive 2 | 3 | Kdenlive is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/kubeshark/README.md: -------------------------------------------------------------------------------- 1 | # Kubeshark 2 | 3 | Kubeshark is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/miniserve/README.md: -------------------------------------------------------------------------------- 1 | # Miniserve 2 | 3 | Miniserve is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/musescore/README.md: -------------------------------------------------------------------------------- 1 | # MuseScore 2 | 3 | MuseScore is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obsidian/README.md: -------------------------------------------------------------------------------- 1 | # Obsidian 2 | 3 | Obsidian is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/prettier/README.md: -------------------------------------------------------------------------------- 1 | # Prettier 2 | 3 | Prettier is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/readline/README.md: -------------------------------------------------------------------------------- 1 | # Readline 2 | 3 | Readline is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/security/README.md: -------------------------------------------------------------------------------- 1 | # Security 2 | 3 | Security is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sonic_pi/README.md: -------------------------------------------------------------------------------- 1 | # Sonic Pi 2 | 3 | Sonic Pi is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/starship/README.md: -------------------------------------------------------------------------------- 1 | # Starship 2 | 3 | Starship is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tailscale/README.md: -------------------------------------------------------------------------------- 1 | # Tailscale 2 | 3 | Tailscale is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/termshark/README.md: -------------------------------------------------------------------------------- 1 | # Termshark 2 | 3 | Termshark is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/terraform/README.md: -------------------------------------------------------------------------------- 1 | # Terraform 2 | 3 | Terraform is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/topgrade/README.md: -------------------------------------------------------------------------------- 1 | # Topgrade 2 | 3 | Topgrade is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/variable/README.md: -------------------------------------------------------------------------------- 1 | # Variable 2 | 3 | Variable is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/watchexec/README.md: -------------------------------------------------------------------------------- 1 | # Watchexec 2 | 3 | Watchexec is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/wireshark/README.md: -------------------------------------------------------------------------------- 1 | # Wireshark 2 | 3 | Wireshark is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/android_tools/README.md: -------------------------------------------------------------------------------- 1 | # Android Tools 2 | 3 | Android is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lazydocker/README.md: -------------------------------------------------------------------------------- 1 | # Lazydocker 2 | 3 | Lazydocker is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/powershell/README.md: -------------------------------------------------------------------------------- 1 | # Powershell 2 | 3 | Powershell is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/presenterm/README.md: -------------------------------------------------------------------------------- 1 | # Presenterm 2 | 3 | Presenterm is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/shellcheck/README.md: -------------------------------------------------------------------------------- 1 | # Shellcheck 2 | 3 | Shellcheck is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gitui/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: git 5 | when: git_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/helix/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/image_magick/README.md: -------------------------------------------------------------------------------- 1 | # Image Magick 2 | 3 | Image Magick is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/libre_office/README.md: -------------------------------------------------------------------------------- 1 | # Libre Office 2 | 3 | Libre Office is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lsd/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sd/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | sd_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | sd_arch: "{{ sd_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/xh/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | xh_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | xh_arch: "{{ xh_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/yazi/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/alacritty/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: font 5 | when: font_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/android_studio/README.md: -------------------------------------------------------------------------------- 1 | # Android Studio 2 | 3 | Android Studio is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bat/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | bat_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | bat_arch: "{{ bat_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/caffeine/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/docker/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/essential/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: path 5 | when: path_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/flatpak/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/github_runner/README.md: -------------------------------------------------------------------------------- 1 | # Github Runner 2 | 3 | Github Runner is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gitlab_runner/README.md: -------------------------------------------------------------------------------- 1 | # Gitlab Runner 2 | 3 | Gitlab Runner is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/glow/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | glow_arch_: 3 | amd64: x86_64 4 | arm64: arm64 5 | glow_arch: "{{ glow_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/miniserve/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/nushell/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/pnpm/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | pnpm_arch_: 3 | amd64: x64 4 | arm64: arm64 5 | pnpm_arch: "{{ pnpm_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/prettier/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: deno 5 | when: deno_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/rust/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: build 5 | when: build_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sqlite/files/sqliterc: -------------------------------------------------------------------------------- 1 | -- SQLite configuration file. 2 | -- 3 | -- For more information, visit . 4 | 5 | .headers on 6 | .mode column 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tailscale/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/topgrade/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/watchexec/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/wezterm/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: font 5 | when: font_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/window_manager/README.md: -------------------------------------------------------------------------------- 1 | # Windown Manager 2 | 3 | Window Manager is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /data/public/robots.txt: -------------------------------------------------------------------------------- 1 | # Site configuration file for web crawlers. 2 | # 3 | # For more information, visit https://www.robotstxt.org/robotstxt.html. 4 | 5 | Allow: / 6 | User-Agent: * 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/just/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | just_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | just_arch: "{{ just_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/files/jupyterlab_notification.json: -------------------------------------------------------------------------------- 1 | { 2 | "checkForUpdates": false, 3 | "doNotDisturbMode": true, 4 | "fetchNews": "false" 5 | } 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/window_manager/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/desktop_environment/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: fact 5 | when: fact_role_executed is not defined 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/mongosh/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | mongosh_arch_: 3 | amd64: x64 4 | arm64: arm64 5 | mongosh_arch: "{{ mongosh_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/desktop_environment/README.md: -------------------------------------------------------------------------------- 1 | # Desktop Environment 2 | 3 | Desktop Environment is an Ansible role 4 | 5 | ## Requirements 6 | 7 | ## Role Variables 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ripgrep/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | ripgrep_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | ripgrep_arch: "{{ ripgrep_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/termshark/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | termshark_arch_: 3 | amd64: x64 4 | arm64: arm64 5 | termshark_arch: "{{ termshark_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible.cfg: -------------------------------------------------------------------------------- 1 | # Ansible configuration file. 2 | # 3 | # For more information, visit 4 | # https://docs.ansible.com/ansible/latest/reference_appendices/config.html. 5 | 6 | [defaults] 7 | collections_path = ./ 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/hyperfine/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | hyperfine_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | hyperfine_arch: "{{ hyperfine_arch_[system_architecture] }}" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/helix/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | helix_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | riscv64: riscv64 6 | helix_arch: "{{ helix_arch_[system_architecture] }}" 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obs/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/variable/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: connect 4 | when: >- 5 | connect_role_executed is defined and not (connect_role_executed | bool) 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vlc/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/wezterm/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | wezterm_font_size: "{{ font_size }}" 3 | wezterm_package: wezterm 4 | wezterm_wayland: true 5 | wezterm_window_decorations: true 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/audacity/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/beekeeper/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bitwarden/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bitwig/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bottom/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | bottom_libc: >- 3 | {{ 'gnu' if glibc_version is defined and glibc_version is 4 | ansible.builtin.version("2.28", ">") else 'musl' }} 5 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/dbeaver/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gitlab_runner/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: bash 5 | when: bash_role_executed is not defined and ansible_system != "Win32NT" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/kdenlive/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/musescore/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obsidian/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sonic_pi/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/spotify/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: flatpak_role_executed is not defined and ansible_system == "Linux" 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lldb/files/lldbinit: -------------------------------------------------------------------------------- 1 | # LLDB settings file. 2 | # 3 | # For more information, visit https://lldb.llvm.org/index.html. 4 | 5 | command script import ~/.config/pyrc/lldbinit.py 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obsidian/files/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "newFileLocation": "current", 3 | "newLinkFormat": "relative", 4 | "showInlineTitle": false, 5 | "tabSize": 2, 6 | "useTab": false 7 | } 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/dust/files/config.toml: -------------------------------------------------------------------------------- 1 | # Dust configuration file. 2 | # 3 | # For more information, visit 4 | # https://github.com/bootandy/dust?tab=readme-ov-file#config-file. 5 | 6 | reverse = true 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bat/files/config: -------------------------------------------------------------------------------- 1 | # Bat configuration file. 2 | # 3 | # For more information, visit https://github.com/sharkdp/bat#configuration-file. 4 | 5 | --style plain 6 | --theme "Solarized (light)" 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/desktop_environment/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | gnome_extensions: 3 | - light-style@gnome-shell-extensions.gcampax.github.com 4 | - rounded-window-corners@fxgn 5 | - search-light@icedman.github.com 6 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gdb/files/gdbinit: -------------------------------------------------------------------------------- 1 | # GDB settings file. 2 | # 3 | # For more information, visit 4 | # https://man7.org/linux/man-pages/man5/gdbinit.5.html. 5 | 6 | source ~/.config/gdbinit.py 7 | set print pretty on 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obsidian/files/appearance.json: -------------------------------------------------------------------------------- 1 | { 2 | "accentColor": "#268bd2", 3 | "interfaceFontFamily": "Fira Sans", 4 | "monospaceFontFamily": "FiraCode Nerd Font", 5 | "textFontFamily": "PT Serif" 6 | } 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/usql/files/usqlrc: -------------------------------------------------------------------------------- 1 | -- Usql configuration file. 2 | -- 3 | -- For more information, visit 4 | -- https://github.com/xo/usql#runtime-configuration-rc-file. 5 | 6 | \set SYNTAX_HL_STYLE solarized-light 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/github_runner/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: bash 5 | when: >- 6 | bash_role_executed is not defined and ansible_system in ["Darwin", 7 | "Linux"] 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lsd/files/config.yaml: -------------------------------------------------------------------------------- 1 | # Lsd configuration file for listing directory contents. 2 | # 3 | # For more information, visit https://github.com/lsd-rs/lsd#configuration. 4 | 5 | --- 6 | color: 7 | theme: custom 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/glow/files/glow.yaml: -------------------------------------------------------------------------------- 1 | # Glow mardown renderer configuration file. 2 | # 3 | # For more information, visit 4 | # https://github.com/charmbracelet/glow#the-config-file. 5 | 6 | --- 7 | pager: true 8 | style: light 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Setup Python system installations 3 | ansible.builtin.import_tasks: system.yaml 4 | 5 | - name: Configure Python user settings 6 | ansible.builtin.import_tasks: config.yaml 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/android_studio/files/android_studio.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Exec=/usr/local/android-studio/bin/studio 3 | Icon=/usr/local/android-studio/bin/studio.svg 4 | Name=Android Studio 5 | Terminal=false 6 | Type=Application 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ripgrep/files/ripgreprc: -------------------------------------------------------------------------------- 1 | # Ripgrep configuration file. 2 | # 3 | # For more information, visit 4 | # https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md#configuration-file. 5 | 6 | --no-require-git 7 | --smart-case 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tldr/files/config.toml: -------------------------------------------------------------------------------- 1 | # TLDR configuration file for managing command cheatsheets. 2 | # 3 | # For more information, visit 4 | # https://tealdeer-rs.github.io/tealdeer/config.html. 5 | 6 | [updates] 7 | auto_update = true 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/meta/runtime.yml: -------------------------------------------------------------------------------- 1 | # Ansible Galaxy collection additional metadata file. 2 | # 3 | # For more information, visit 4 | # https://docs.ansible.com/ansible/3/dev_guide/developing_collections.html#meta-directory. 5 | 6 | --- 7 | requires_ansible: ">=2.10.0" 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/starship/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | starship_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | starship_arch: "{{ starship_arch_[system_architecture] }}" 6 | starship_libc: >- 7 | {{ system_libc if system_architecture == 'amd64' else 'musl' }} 8 | -------------------------------------------------------------------------------- /script/fmt_toml.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # 3 | # Format TOML files with Prettier. 4 | # 5 | # Desgined as a standalone Unix script because the Prettier TOML plugin does not 6 | # respect the endOfLine setting on Windows. 7 | 8 | npx prettier --write --plugin prettier-plugin-toml ./**/*.toml 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/k9s/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | k9s_config_: 3 | Darwin: "{{ user_home }}/Library/Application Support/k9s" 4 | Win32NT: "{{ user_home }}\\AppData\\Local\\k9s" 5 | k9s_config: >- 6 | {{ k9s_config_.get(ansible_system, user_home + '/.config/k9s') }} 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/termshark/files/termshark.toml: -------------------------------------------------------------------------------- 1 | # Termshark configuration file. 2 | # 3 | # For more information, visit 4 | # https://github.com/gcla/termshark/blob/master/docs/UserGuide.md#config-file. 5 | 6 | [main] 7 | dark-mode = false 8 | theme-truecolor = "solarized" 9 | -------------------------------------------------------------------------------- /data/templates/software.mustache: -------------------------------------------------------------------------------- 1 | # Software 2 | 3 | Bootware uses a collection of Ansible roles to install and manage a wide variety 4 | of software. While some roles are manually tested, the following table shows the 5 | software continuously tested by the GitHub CI workflows. 6 | 7 | {{ table }} 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/flatpak/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | flatpak_packages_: 3 | - com.github.tchx84.Flatseal 4 | flatpak_packages_gnome: 5 | - com.mattjakeman.ExtensionManager 6 | flatpak_packages: >- 7 | {{ flatpak_packages_ + flatpak_packages_gnome if gnome_desktop else [] }} 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/git/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | git_delta_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | git_delta_arch: "{{ git_delta_arch_[system_architecture] }}" 6 | git_user_email: "{{ git_user_name | lower | replace(' ', '.') }}@gmail.com" 7 | git_user_name: User Name 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/helm/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | helm_plugins: [] 3 | # TODO: Enable plugins once they support Helm version 4. 4 | # - https://github.com/aslafy-z/helm-git 5 | # - https://github.com/databus23/helm-diff 6 | # - https://github.com/jkroepke/helm-secrets 7 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/fd/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fd_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | fd_arch: "{{ fd_arch_[system_architecture] }}" 6 | fd_libc: >- 7 | {{ 'gnu' if glibc_version is defined and glibc_version is 8 | ansible.builtin.version("2.17", ">") else 'musl' }} 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/uv/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | uv_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | uv_arch: "{{ uv_arch_[system_architecture] }}" 6 | uv_libc: >- 7 | {{ 'gnu' if glibc_version is defined and glibc_version is 8 | ansible.builtin.version("2.17", ">") else 'musl' }} 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bottom/files/bottom.toml: -------------------------------------------------------------------------------- 1 | # Bottom configuration file. 2 | # 3 | # For more information, visit 4 | # https://clementtsang.github.io/bottom/stable/configuration/config-file/default-config. 5 | 6 | [flags] 7 | basic = true 8 | 9 | [styles] 10 | theme = "default-light" 11 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lsd/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | lsd_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | lsd_arch: "{{ lsd_arch_[system_architecture] }}" 6 | lsd_libc: >- 7 | {{ 'gnu' if glibc_version is defined and glibc_version is 8 | ansible.builtin.version("2.18", ">") else 'musl' }} 9 | -------------------------------------------------------------------------------- /data/public/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/dust/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dust_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | dust_arch: "{{ dust_arch_[system_architecture] }}" 6 | dust_libc: >- 7 | {{ 'gnu' if glibc_version is defined and glibc_version is 8 | ansible.builtin.version("2.17", ">") else 'musl' }} 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/termshark/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | # Wireshark GUI cask needs to be installed first on MacOS due to conflict with 5 | # Wireshark CLI formula, which Termshark depends on. 6 | - role: wireshark 7 | when: ansible_system == "Darwin" 8 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/harper/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | harper_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | harper_arch: "{{ harper_arch_[system_architecture] }}" 6 | harper_libc: >- 7 | {{ 'gnu' if glibc_version is defined and glibc_version is 8 | ansible.builtin.version("2.17", ">") else 'musl' }} 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | python_applications: 3 | - "jinja2-cli[toml,yaml,xml]" 4 | - "black[jupyter]" 5 | - cookiecutter 6 | - jupytext 7 | - name: poetry 8 | extras: 9 | - poetry-plugin-shell 10 | - poetry-plugin-up 11 | - ruff 12 | - ty 13 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/samply/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | samply_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | samply_arch: "{{ samply_arch_[system_architecture] }}" 6 | samply_libc: >- 7 | {{ 'gnu' if glibc_version is defined and glibc_version is 8 | ansible.builtin.version("2.28", ">") else 'musl' }} 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/android_studio/meta/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | dependencies: 3 | - role: variable 4 | - role: flatpak 5 | when: >- 6 | flatpak_role_executed is not defined and ansible_system == "Linux" and 7 | ansible_pkg_mgr not in ["apt", "dnf", "dnf5"] and system_architecture == 8 | "amd64" 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/nushell/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | nushell_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | nushell_arch: "{{ nushell_arch_[system_architecture] }}" 6 | nushell_libc: >- 7 | {{ 'gnu' if glibc_version is defined and glibc_version is 8 | ansible.builtin.version("2.35", ">") else 'musl' }} 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/prune/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Remove bloatware packages for Linux 3 | ansible.builtin.package: 4 | name: "{{ item }}" 5 | state: absent 6 | become: true 7 | loop: "{{ bloatware_linux_packages }}" 8 | tags: 9 | - install 10 | when: ansible_system == "Linux" 11 | -------------------------------------------------------------------------------- /.shellcheckrc: -------------------------------------------------------------------------------- 1 | # ShellCheck configuration file for settings shell script rules. 2 | # 3 | # For more information, visit 4 | # https://github.com/koalaman/shellcheck/blob/master/shellcheck.1.md#rc-files. 5 | 6 | disable=SC1091,SC2164,SC3043 7 | enable=add-default-case,avoid-nullary-conditions,quote-safe-variables,require-variable-braces 8 | severity=style 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/presenterm/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | presenterm_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | presenterm_arch: "{{ presenterm_arch_[system_architecture] }}" 6 | presenterm_libc: >- 7 | {{ 'gnu' if glibc_version is defined and glibc_version is 8 | ansible.builtin.version("2.38", ">") else 'musl' }} 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/krew/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | krew_plugins_: 3 | always: [] 4 | Darwin: 5 | - ctx 6 | - ns 7 | FreeBSD: 8 | - ctx 9 | - ns 10 | Linux: 11 | - ctx 12 | - ns 13 | Win32NT: [] 14 | krew_plugins: >- 15 | {{ krew_plugins_.always + krew_plugins_.get(ansible_system, []) }} 16 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/path/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | system_paths_: 3 | Darwin: 4 | amd64: 5 | - /usr/local/bin 6 | arm64: 7 | - /opt/homebrew/bin 8 | - /opt/homebrew/sbin 9 | - /usr/local/bin 10 | system_paths: >- 11 | {{ system_paths_.get(ansible_system, {}).get(system_architecture, []) }} 12 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/k9s/files/config.yaml: -------------------------------------------------------------------------------- 1 | # K9s configuration file for managing Kubernetes clusters. 2 | # 3 | # For more information, visit https://k9scli.io/topics/config. 4 | 5 | --- 6 | k9s: 7 | # K9s crashes without the maxConnRetry and refreshRate settings. 8 | maxConnRetry: 5 9 | refreshRate: 2 10 | ui: 11 | skin: solarized_light 12 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/prune/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | bloatware_linux_packages_: 3 | always: [] 4 | apk: 5 | - command-not-found 6 | apt: 7 | - command-not-found 8 | dnf: 9 | - PackageKit-command-not-found 10 | bloatware_linux_packages: >- 11 | {{ bloatware_linux_packages_.always + 12 | bloatware_linux_packages_.get(ansible_pkg_mgr, []) }} 13 | -------------------------------------------------------------------------------- /data/templates/control.tmpl: -------------------------------------------------------------------------------- 1 | Architecture: all 2 | Depends: ansible (>=2.13.0), bash (>=4.0.0), curl (>=7.0.0), git (>=2.0.0) 3 | Description: Bootstrap software installations with Ansible 4 | Essential: no 5 | Homepage: https://github.com/scruffaluff/bootware 6 | Maintainer: Macklan Weinstein 7 | Package: bootware 8 | Priority: optional 9 | Version: ${version} 10 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obsidian/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | obsidian_user_: 3 | Darwin: "{{ user_home }}/Library/Application Support" 4 | Linux: "{{ user_home }}/.var/app/md.obsidian.Obsidian/config" 5 | Win32NT: "{{ user_home }}\\AppData\\Roaming" 6 | obsidian_user: >- 7 | {{ obsidian_user_.get(ansible_system, user_home + 8 | '/.var/app/md.obsidian.Obsidian/config/') }}/obsidian 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/shellcheck/files/shellcheckrc: -------------------------------------------------------------------------------- 1 | # ShellCheck configuration file for settings shell script rules. 2 | # 3 | # For more information, visit 4 | # https://github.com/koalaman/shellcheck/blob/master/shellcheck.1.md#rc-files. 5 | 6 | disable=SC1091,SC2164,SC3043 7 | enable=add-default-case,avoid-nullary-conditions,quote-safe-variables,require-variable-braces 8 | severity=style 9 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Shfmt configuration file for formatting text. 2 | # 3 | # Options are chosen to follow Google shell style guide, 4 | # https://google.github.io/styleguide/shellguide.html. For a list of shfmt 5 | # options, see 6 | # https://github.com/mvdan/sh/blob/master/cmd/shfmt/shfmt.1.scd#options. 7 | 8 | [*] 9 | indent_size = 2 10 | indent_style = space 11 | space_redirects = true 12 | switch_case_indent = true 13 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/age/README.md: -------------------------------------------------------------------------------- 1 | # Age 2 | 3 | Ansible role that installs [Age](https://github.com/FiloSottile/age) encryption 4 | tool. 5 | 6 | ## Requirements 7 | 8 | None. 9 | 10 | ## Role Variables 11 | 12 | None. 13 | 14 | ## Dependencies 15 | 16 | None. 17 | 18 | ## Example Playbook 19 | 20 | ```yaml 21 | - hosts: all 22 | roles: 23 | - scruffaluff.bootware.age 24 | ``` 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "@types/mustache": "^4.2.0", 4 | "@types/node": "^22.10.0", 5 | "commander": "^13.1.0", 6 | "mustache": "^4.2.0", 7 | "prettier": "^3.6.2", 8 | "prettier-plugin-toml": "^2.0.6", 9 | "tsx": "^4.19.0", 10 | "typescript": "^5.7.0", 11 | "vitepress": "^1.6.0", 12 | "vue": "^3.5.0" 13 | }, 14 | "private": true, 15 | "type": "module" 16 | } 17 | -------------------------------------------------------------------------------- /src/completion/bootware.bash: -------------------------------------------------------------------------------- 1 | # Bash completion file for Bootware. 2 | # 3 | # For a tutorial on writing Bash completions, visit 4 | # https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html. 5 | 6 | # Add Bootware options and subcommands as completions. 7 | # 8 | # Flags: 9 | # -W : Add words as completion subcommands. 10 | complete -W 'bootstrap config roles setup uninstall update' bootware 11 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/tasks/owner.yaml: -------------------------------------------------------------------------------- 1 | - name: Check if Python files exist for Windows 2 | ansible.windows.win_stat: 3 | path: "{{ python_file }}" 4 | register: python_files_check 5 | 6 | - name: Set owner of Python files for Windows 7 | ansible.windows.win_owner: 8 | path: "{{ python_file }}" 9 | recurse: true 10 | user: "{{ user_id }}" 11 | when: python_files_check.stat.exists 12 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/github_runner/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | github_runner_arch_: 3 | amd64: x64 4 | arm64: arm64 5 | github_runner_folder_: 6 | Darwin: /Users/github-runner 7 | Win32NT: C:\Users\github-runner 8 | github_runner_arch: "{{ github_runner_arch_[system_architecture] }}" 9 | github_runner_folder: >- 10 | {{ github_runner_folder_.get(ansible_system, '/home/github-runner') 11 | }}/.local/github-runner 12 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/path/templates/user.plist.j2: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | PathEnvironmentVariable 8 | {{ system_paths | join(':') }}:/usr/bin:/bin:/usr/sbin:/sbin 9 | 10 | 11 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Prettier configuration file for ignoring paths. 2 | # 3 | # For more information, visit https://prettier.io/docs/en/ignore.html. 4 | 5 | .git/ 6 | .mypy_cache/ 7 | .pytest_cache/ 8 | .venv/ 9 | *.bats 10 | *.log 11 | *.nu 12 | *.xml 13 | /.vendor/ 14 | /.vitepress/cache/ 15 | /.vitepress/dist/ 16 | /build/ 17 | /data/public/ 18 | ansible_collections/* 19 | node_modules/ 20 | package-lock.json 21 | tmp/ 22 | !ansible_collections/scruffaluff 23 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/gitui/files/key_bindings.ron: -------------------------------------------------------------------------------- 1 | // GitUI keybindings file. 2 | // 3 | // For more information, visit 4 | // https://github.com/extrawurst/gitui/blob/master/KEY_CONFIG.md. 5 | 6 | ( 7 | move_down: Some(( code: Char('k'), modifiers: "")), 8 | move_left: Some(( code: Char('j'), modifiers: "")), 9 | move_right: Some(( code: Char(';'), modifiers: "")), 10 | move_up: Some(( code: Char('l'), modifiers: "")), 11 | ) 12 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/chrome/files/preferences.json: -------------------------------------------------------------------------------- 1 | { 2 | "autofill": { 3 | "credit_card_enabled": false, 4 | "profile_enabled": false 5 | }, 6 | "bookmark_bar": { 7 | "show_on_all_tabs": true 8 | }, 9 | "browser": { 10 | "show_home_button": false 11 | }, 12 | "credentials_enable_autosignin": false, 13 | "credentials_enable_service": false, 14 | "payments": { 15 | "can_make_payment_enabled": false 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/musescore/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | musescore_config_: 3 | FreeBSD: "{{ user_home }}/.config/MuseScore" 4 | Darwin: "{{ user_home }}/Library/Application Support/MuseScore/MuseScore4" 5 | Linux: "{{ user_home }}/.var/app/org.musescore.MuseScore/config/MuseScore" 6 | Win32NT: "{{ user_home }}\\AppData\\Roaming\\MuseScore" 7 | musescore_config: >- 8 | {{ musescore_config_.get(ansible_system, user_home + '.config/MuseScore') }} 9 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zed/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Zed 3 | ansible.builtin.import_tasks: install.yaml 4 | 5 | - name: Configure Zed settings 6 | ansible.builtin.import_tasks: config.yaml 7 | 8 | - name: Set owner of Zed files for Windows 9 | ansible.windows.win_owner: 10 | path: "{{ zed_config_path }}" 11 | recurse: true 12 | user: "{{ user_id }}" 13 | tags: 14 | - config 15 | when: ansible_system == "Win32NT" 16 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | # Docker configuration file for ignoring paths while collecting context. 2 | # 3 | # For more information, visit 4 | # https://codefresh.io/docker-tutorial/not-ignore-dockerignore-2/. 5 | 6 | *.bak 7 | *.dockerfile 8 | *.log 9 | .DS_Store 10 | .classpath/ 11 | .env 12 | .git/ 13 | .github/ 14 | .gitignore 15 | .localized 16 | .mypy_cache/ 17 | .pytest_cache/ 18 | .venv/ 19 | Thumbs.db 20 | ansible_collections/* 21 | node_modules/ 22 | !ansible_collections/scruffaluff 23 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bash/files/bash_profile: -------------------------------------------------------------------------------- 1 | # Bash settings file for login shells. 2 | # shellcheck disable=SC1090,SC1091 shell=bash 3 | # 4 | # For more information, visit 5 | # https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html. 6 | 7 | # Load non-login settings if file exists. 8 | # 9 | # Flags: 10 | # -f: Check if file exists and is a regular file. 11 | if [[ -f "${HOME}/.bashrc" ]]; then 12 | source "${HOME}/.bashrc" 13 | fi 14 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bat/files/lesskey: -------------------------------------------------------------------------------- 1 | # Less pager configuration file. 2 | # 3 | # For more information, visit https://linux.die.net/man/1/lesskey. 4 | 5 | j noaction 6 | J noaction 7 | ^j noaction 8 | ^J noaction 9 | \ej noaction 10 | \eJ noaction 11 | k forw-line 12 | K forw-line-force 13 | \ek forw-line 14 | \eK forw-line-force 15 | l back-line 16 | L back-line-force 17 | \el back-line 18 | \eL back-line-force 19 | 20 | #env 21 | LESS = --ignore-case 22 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/presenterm/files/config.yaml: -------------------------------------------------------------------------------- 1 | # Presenterm configuration file for Markdown slideshows in the terminal. 2 | # 3 | # For more information, visit 4 | # https://mfontanini.github.io/presenterm/configuration/introduction.html. 5 | 6 | --- 7 | bindings: 8 | next: [";", "", " "] 9 | previous: ["j", ""] 10 | 11 | defaults: 12 | implicit_slide_ends: true 13 | theme: terminal-light 14 | 15 | options: 16 | command_prefix: "cmd:" 17 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/node/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | node_applications: 3 | - "@mermaid-js/mermaid-cli" 4 | - "@taplo/cli" 5 | - "@vue/language-server" 6 | - bash-language-server 7 | - lean-language-server 8 | - live-server 9 | - playwright 10 | - speed-test 11 | - speedscope 12 | - taze 13 | - typescript-language-server 14 | - vls 15 | - vscode-langservers-extracted 16 | - wikit 17 | - yaml-language-server 18 | node_versions: 19 | - "22" 20 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/yazi/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | yazi_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | yazi_arch: "{{ yazi_arch_[system_architecture] }}" 6 | yazi_libc: >- 7 | {{ 'gnu' if glibc_version is defined and glibc_version is 8 | ansible.builtin.version("2.38", ">") else 'musl' }} 9 | yazi_plugins: 10 | - lpnh/fr 11 | - yazi-rs/plugins:chmod 12 | - yazi-rs/plugins:smart-filter 13 | - yazi-rs/plugins:toggle-pane 14 | - yazi-rs/plugins:vcs-files 15 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zellij/files/layout.kdl: -------------------------------------------------------------------------------- 1 | // Layout file for Zellij. 2 | // 3 | // Forked from output of command `zellij setup --dump-layout compact`. For more 4 | // information, visit https://zellij.dev/documentation/creating-a-layout. 5 | 6 | layout { 7 | pane size=1 borderless=true { 8 | plugin location="zellij:compact-bar" 9 | } 10 | pane 11 | pane size=1 borderless=true { 12 | plugin location="zellij:status-bar" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.prettierrc.yaml: -------------------------------------------------------------------------------- 1 | # Prettier configuration file for formatting text. 2 | # 3 | # For more information, visit https://prettier.io/docs/en/configuration.html. 4 | 5 | --- 6 | arrowParens: always 7 | endOfLine: auto 8 | printWidth: 80 9 | proseWrap: always 10 | semi: true 11 | # Setting "singleQuote: true" changes double quoted strings containing variables 12 | # to single quoted strings, which causes incorrect interpolation in YAML files. 13 | singleQuote: false 14 | tabWidth: 2 15 | trailingComma: es5 16 | -------------------------------------------------------------------------------- /data/config/script_analyzer.psd1: -------------------------------------------------------------------------------- 1 | # PowerShell ScriptAnalyzer configuration file. 2 | # 3 | # For more information, visit 4 | # https://docs.microsoft.com/powershell/utility-modules/psscriptanalyzer/using-scriptanalyzer#settings-support-in-scriptanalyzer. 5 | 6 | @{ 7 | ExcludeRules = @( 8 | 'PSAvoidGlobalVars', 9 | 'PSAvoidUsingInvokeExpression', 10 | 'PSAvoidUsingPositionalParameters' 11 | 'PSUseApprovedVerbs' 12 | 'PSUseBOMForUnicodeEncodedFile' 13 | ) 14 | } 15 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ignore/files/ignore: -------------------------------------------------------------------------------- 1 | # Configuration file for ignore paths. 2 | 3 | .DS_Store 4 | .benchmarks/ 5 | .cache/ 6 | .classpath/ 7 | .deno/ 8 | .dvc/ 9 | .git/ 10 | .hg/ 11 | .hypothesis/ 12 | .ipynb_checkpoints/ 13 | .jj/ 14 | .localized 15 | .mypy_cache/ 16 | .obsidian/ 17 | .pytest_cache/ 18 | .ruff_cache/ 19 | .sl/ 20 | .svn/ 21 | .tox/ 22 | .vendor/ 23 | .venv/ 24 | .vitepress/cache/ 25 | Thumbs.db 26 | __pycache__/ 27 | buck-out/ 28 | node_modules/ 29 | target/ 30 | vendor/ 31 | venv/ 32 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/yazi/files/smart_open.lua: -------------------------------------------------------------------------------- 1 | --- @sync entry 2 | 3 | -- Yazi plugin to customized open keybindings. 4 | -- 5 | -- Based on logic https://yazi-rs.github.io/docs/tips/#smart-enter. 6 | 7 | local function entry() 8 | local path = cx.active.current.hovered 9 | if path and path.cha.is_dir then 10 | ya.manager_emit("enter", {}) 11 | ya.manager_emit("quit", {}) 12 | else 13 | ya.manager_emit("open", { hovered = true }) 14 | end 15 | end 16 | 17 | return { entry = entry } 18 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/watchexec/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | watchexec_libc: >- 3 | {{ 'gnu' if glibc_version is defined and glibc_version is 4 | ansible.builtin.version("2.39", ">") else 'musl' }} 5 | 6 | watchexec_arch_: 7 | amd64: x86_64 8 | arm64: aarch64 9 | watchexec_env_: 10 | Darwin: apple-darwin 11 | Linux: unknown-linux-{{ watchexec_libc }} 12 | Win32NT: pc-windows-msvc 13 | watchexec_arch: "{{ watchexec_arch_[system_architecture] }}" 14 | watchexec_env: "{{ watchexec_env_.get(ansible_system, 'unknown') }}" 15 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/prettier/files/prettierrc.yaml: -------------------------------------------------------------------------------- 1 | # Prettier configuration file for formatting text. 2 | # 3 | # For more information, visit https://prettier.io/docs/en/configuration.html. 4 | 5 | --- 6 | arrowParens: always 7 | endOfLine: auto 8 | printWidth: 80 9 | proseWrap: always 10 | semi: true 11 | # Setting "singleQuote: true" changes double quoted strings containing variables 12 | # to single quoted strings, which causes incorrect interpolation in YAML files. 13 | singleQuote: false 14 | tabWidth: 2 15 | trailingComma: es5 16 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Thank you for your interest in contributing to Bootware. This guide will assist 4 | you in setting up a development environment, understanding the project tooling, 5 | and learning the coding guidelines. 6 | 7 | ## Format 8 | 9 | Bootware POSIX shell code follows the Google shell style 10 | [guide](https://google.github.io/styleguide/shellguide.html). 11 | 12 | ## Testing 13 | 14 | Bootware POSIX shell scripts are tested with 15 | [Bats Core](https://github.com/bats-core/bats-core) and PowerShell scripts are 16 | tested with [Pester](https://github.com/pester/Pester). 17 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/desktop_environment/files/fedora.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # 3 | # Configure desktop settings for Fedora. 4 | 5 | # Exit immediately if a command exits or pipes a non-zero return code. 6 | # 7 | # Flags: 8 | # -e: Exit immediately when a command pipeline fails. 9 | # -u: Throw an error when an unset variable is encountered. 10 | set -eu 11 | 12 | # Use Adwaita (Light) color desktop theme. 13 | gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita' 14 | # Use Adwaita (Light) color icon theme. 15 | gsettings set org.gnome.desktop.interface icon-theme 'Adwaita' 16 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/files/jupyter_notebook_config.py: -------------------------------------------------------------------------------- 1 | # Configuration file for Jupyter. 2 | # 3 | # For more information, visit 4 | # https://jupyter-notebook.readthedocs.io/en/stable/config.html. 5 | 6 | # ruff: noqa: D100, F821 7 | 8 | ## Whether to open in a browser after starting. The specific browser used is 9 | # platform dependent and determined by the python standard library `webbrowser` 10 | # module, unless it is overridden using the --browser (NotebookApp.browser) 11 | # configuration option. 12 | c.NotebookApp.open_browser = False # ty: ignore[unresolved-reference] 13 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/desktop_environment/files/popos.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # 3 | # Configure desktop settings for PopOS. 4 | 5 | # Exit immediately if a command exits or pipes a non-zero return code. 6 | # 7 | # Flags: 8 | # -e: Exit immediately when a command pipeline fails. 9 | # -u: Throw an error when an unset variable is encountered. 10 | set -eu 11 | 12 | # Remove HiDPI notifications. 13 | gsettings set com.system76.hidpi enable false 14 | # Turn on HiDPI mode. 15 | gsettings set com.system76.hidpi mode 'hidpi' 16 | # Use Pop (Light) color theme. 17 | gsettings set org.gnome.desktop.interface gtk-theme 'Pop' 18 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/htop/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Htop for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: htop 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Htop for Linux 11 | ansible.builtin.package: 12 | name: htop 13 | become: true 14 | tags: 15 | - install 16 | when: ansible_system == "Linux" 17 | 18 | - name: Install Htop for MacOS 19 | become: true 20 | become_user: "{{ brew_user }}" 21 | community.general.homebrew: 22 | name: htop 23 | tags: 24 | - install 25 | when: ansible_system == "Darwin" 26 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lsd/files/colors.yaml: -------------------------------------------------------------------------------- 1 | # Lsd solarized light theme color configuration file. 2 | # 3 | # For more information, visit https://github.com/lsd-rs/lsd#theme. 4 | 5 | --- 6 | date: 7 | day-old: 136 8 | hour-old: 64 9 | older: 240 10 | group: 245 11 | inode: 12 | invalid: 235 13 | valid: 61 14 | links: 15 | invalid: 235 16 | valid: 61 17 | permission: 18 | acl: 37 19 | context: 235 20 | exec-sticky: 125 21 | exec: 160 22 | no-access: 234 23 | octal: 37 24 | read: 64 25 | write: 136 26 | size: 27 | large: 33 28 | medium: 37 29 | none: 235 30 | small: 61 31 | tree-edge: 235 32 | user: 136 33 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/topgrade/templates/topgrade.toml.j2: -------------------------------------------------------------------------------- 1 | # Topgrade configuration file for updating system packages. 2 | # 3 | # For more infomation, visit 4 | # https://github.com/topgrade-rs/topgrade/blob/main/config.example.toml. 5 | 6 | [brew] 7 | greedy_cask = true 8 | 9 | [misc] 10 | assume_yes = true 11 | {% if ansible_system in ["Darwin", "Win32NT"] %} 12 | disable = ["certbot", "containers", "gem", "git_repos", "helm", "ruby_gems", "system", "uv"] 13 | {% else %} 14 | disable = ["certbot", "containers", "gem", "git_repos", "helm", "ruby_gems", "uv"] 15 | {% endif %} 16 | no_retry = true 17 | notify_each_step = false 18 | skip_notify = true 19 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zed/files/zed.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Name=Zed 5 | GenericName=Text Editor 6 | Comment=A high-performance, multiplayer code editor. 7 | TryExec=/usr/local/zed/libexec/zed-editor 8 | StartupNotify=true 9 | Exec=/usr/local/zed/libexec/zed-editor %U 10 | Icon=/usr/local/zed/share/icons/hicolor/512x512/apps/zed.png 11 | Categories=Utility;TextEditor;Development;IDE; 12 | Keywords=zed; 13 | MimeType=text/plain;application/x-zerosize;x-scheme-handler/zed; 14 | Actions=NewWorkspace; 15 | 16 | [Desktop Action NewWorkspace] 17 | Exec=/usr/local/zed/libexec/zed-editor --new %U 18 | Name=Open a new workspace 19 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/desktop_environment/files/ubuntu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # 3 | # Configure desktop settings for Ubuntu. 4 | 5 | # Exit immediately if a command exits or pipes a non-zero return code. 6 | # 7 | # Flags: 8 | # -e: Exit immediately when a command pipeline fails. 9 | # -u: Throw an error when an unset variable is encountered. 10 | set -eu 11 | 12 | # Use Yaru-lightcolor theme. 13 | gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-light' 14 | # Hide dock. 15 | gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed false 16 | # Hide home folder from desktop. 17 | gsettings set org.gnome.shell.extensions.ding show-home false 18 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/zed/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | zed_arch_: 3 | amd64: x86_64 4 | arm64: aarch64 5 | zed_arch: "{{ zed_arch_[system_architecture] }}" 6 | zed_extensions: 7 | deno: true 8 | dockerfile: true 9 | emmet: true 10 | fish: true 11 | harper: true 12 | html: true 13 | jinja2: true 14 | just: true 15 | log: true 16 | nu: true 17 | powershell: true 18 | rainbow-csv: true 19 | solarized: true 20 | toml: true 21 | vue: true 22 | zed_font_size: "{{ font_size }}" 23 | zed_remotes: [] 24 | zed_config_path: >- 25 | {{ user_home + '\AppData\Roaming\Zed' if ansible_system == 'Win32NT' else 26 | user_home + '/.config/zed' }} 27 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/spotify/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Spotify for Linux 3 | become: true 4 | community.general.flatpak: 5 | name: com.spotify.Client 6 | tags: 7 | - install 8 | when: ansible_system == "Linux" 9 | 10 | - name: Install Spotify for MacOS 11 | community.general.homebrew_cask: 12 | accept_external_apps: true 13 | name: spotify 14 | state: present 15 | tags: 16 | - install 17 | when: ansible_system == "Darwin" 18 | 19 | - name: Install Spotify for Windows 20 | community.windows.win_scoop: 21 | global: true 22 | name: spotify 23 | tags: 24 | - install 25 | when: ansible_system == "Win32NT" 26 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sonic_pi/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Sonic Pi for Linux 3 | become: true 4 | community.general.flatpak: 5 | name: net.sonic_pi.SonicPi 6 | tags: 7 | - install 8 | when: ansible_system == "Linux" 9 | 10 | - name: Install Sonic Pi for MacOS 11 | community.general.homebrew_cask: 12 | accept_external_apps: true 13 | name: sonic-pi 14 | state: present 15 | tags: 16 | - install 17 | when: ansible_system == "Darwin" 18 | 19 | - name: Install Sonic Pi for Windows 20 | community.windows.win_scoop: 21 | global: true 22 | name: sonic-pi 23 | tags: 24 | - install 25 | when: ansible_system == "Win32NT" 26 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bitwarden/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Bitwarden for Linux 3 | become: true 4 | community.general.flatpak: 5 | name: com.bitwarden.desktop 6 | tags: 7 | - install 8 | when: ansible_system == "Linux" 9 | 10 | - name: Install Bitwarden for MacOS 11 | community.general.homebrew_cask: 12 | accept_external_apps: true 13 | name: bitwarden 14 | state: present 15 | tags: 16 | - install 17 | when: ansible_system == "Darwin" 18 | 19 | - name: Install Bitwarden for Windows 20 | community.windows.win_scoop: 21 | global: true 22 | name: bitwarden 23 | tags: 24 | - install 25 | when: ansible_system == "Win32NT" 26 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/dbeaver/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install DBeaver for Linux 3 | become: true 4 | community.general.flatpak: 5 | name: io.dbeaver.DBeaverCommunity 6 | tags: 7 | - install 8 | when: ansible_system == "Linux" 9 | 10 | - name: Install DBeaver for MacOS 11 | community.general.homebrew_cask: 12 | accept_external_apps: true 13 | name: dbeaver-community 14 | state: present 15 | tags: 16 | - install 17 | when: ansible_system == "Darwin" 18 | 19 | - name: Install DBeaver for Windows 20 | community.windows.win_scoop: 21 | global: true 22 | name: dbeaver 23 | tags: 24 | - install 25 | when: ansible_system == "Win32NT" 26 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/musescore/templates/musescore.ini.j2: -------------------------------------------------------------------------------- 1 | # MuseScore configuration file. 2 | # 3 | # For more information, visit 4 | # https://musescore.org/en/handbook/4/revert-factory-settings. 5 | 6 | [application] 7 | checkForUpdate=false 8 | hasCompletedFirstLaunchSetup=true 9 | paths\myPlugins={{ user_home }}/Music/MuseScore/Plugins 10 | paths\myScores={{ user_home }}/Music/MuseScore/Scores 11 | paths\mySoundfonts={{ user_home }}/Music/MuseScore/SoundFonts 12 | paths\myStyles={{ user_home }}/Music/MuseScore/Styles 13 | paths\myTemplates={{ user_home }}/Music/MuseScore/Templates 14 | startup\modeStart=1 15 | 16 | [project] 17 | alsoShareAudioCom=false 18 | autoSaveEnabled=false 19 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/path/templates/profile.sh.j2: -------------------------------------------------------------------------------- 1 | # Add folders to system path. 2 | # shellcheck shell=sh 3 | 4 | # Prepend existing directories that are not in the system path. 5 | # 6 | # Flags: 7 | # -d: Check if path is a directory. 8 | prepend_paths() { 9 | local folder inode 10 | for inode in "$@"; do 11 | if [ -d "${inode}" ]; then 12 | # Expand folder to its full path. 13 | folder="$(cd "${inode}" && pwd)" 14 | case ":${PATH}:" in 15 | *:"${folder}":*) ;; 16 | *) 17 | export PATH="${folder}:${PATH}" 18 | ;; 19 | esac 20 | fi 21 | done 22 | } 23 | 24 | prepend_paths {{ "'" + system_paths | join("' '") + "'" }} 25 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/bitwig/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Bitwig for Linux 3 | become: true 4 | community.general.flatpak: 5 | name: com.bitwig.BitwigStudio 6 | tags: 7 | - install 8 | when: ansible_system == "Linux" and system_architecture == "amd64" 9 | 10 | - name: Install Bitwig for MacOS 11 | community.general.homebrew_cask: 12 | accept_external_apps: true 13 | name: bitwig-studio 14 | state: present 15 | tags: 16 | - install 17 | when: ansible_system == "Darwin" 18 | 19 | - name: Install Bitwig for Windows 20 | chocolatey.chocolatey.win_chocolatey: 21 | name: bitwig 22 | tags: 23 | - install 24 | when: ansible_system == "Win32NT" 25 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/beekeeper/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Beekeeper for Linux 3 | become: true 4 | community.general.flatpak: 5 | name: io.beekeeperstudio.Studio 6 | tags: 7 | - install 8 | when: ansible_system == "Linux" 9 | 10 | - name: Install Beekeeper for MacOS 11 | community.general.homebrew_cask: 12 | accept_external_apps: true 13 | name: beekeeper-studio 14 | state: present 15 | tags: 16 | - install 17 | when: ansible_system == "Darwin" 18 | 19 | - name: Install Beekeeper for Windows 20 | community.windows.win_scoop: 21 | global: true 22 | name: beekeeper-studio 23 | tags: 24 | - install 25 | when: ansible_system == "Win32NT" 26 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/plugins/filter/filters.py: -------------------------------------------------------------------------------- 1 | """Custom filters.""" 2 | 3 | import base64 4 | import hashlib 5 | from collections.abc import Callable 6 | 7 | 8 | class FilterModule: 9 | """Custom filters.""" 10 | 11 | def filters(self) -> dict[str, Callable]: 12 | """Generate table of filters.""" 13 | return {"vscode_checksum": self.vscode_checksum} 14 | 15 | def vscode_checksum(self, value: str) -> str: 16 | """Compute VSCode product.json compatible checksum.""" 17 | hash_ = hashlib.sha256() 18 | hash_.update(value.encode()) 19 | digest = hash_.digest() 20 | encode = base64.b64encode(digest).decode() 21 | return encode.replace("=", "") 22 | -------------------------------------------------------------------------------- /data/templates/bootware.rb.tmpl: -------------------------------------------------------------------------------- 1 | class Bootware < Formula 2 | depends_on ["ansible", "bash", "git"] 3 | desc "Bootstrap software installations with Ansible" 4 | head "https://github.com/scruffaluff/bootware.git", branch: "main" 5 | homepage "https://github.com/scruffaluff/bootware" 6 | license "MIT" 7 | sha256 "${shasum}" 8 | url "${url}" 9 | 10 | def install 11 | bin.install "bootware.sh" => "bootware" 12 | bash_completion.install "src/completion/bootware.bash" 13 | fish_completion.install "src/completion/bootware.fish" 14 | man.install "src/completion/bootware.man" 15 | end 16 | 17 | test do 18 | assert_equal "Bootware ${version}", shell_output("#{bin}/bootware --version").chomp 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/alacritty/README.md: -------------------------------------------------------------------------------- 1 | # Alacritty 2 | 3 | Ansible role that installs [Alacritty](https://alacritty.org/) terminal. 4 | 5 | ## Requirements 6 | 7 | None. 8 | 9 | ## Role Variables 10 | 11 | Role uses the following variables with default values. 12 | 13 | ```yaml 14 | font_size: 14 15 | user_shell: "{{ shell_name }}" 16 | ``` 17 | 18 | The role will automatically select the standard path for the Fish shell for host 19 | operating system or the standard path for the latest PowerShell version on 20 | Windows by default for `user_shell`. 21 | 22 | ## Dependencies 23 | 24 | None. 25 | 26 | ## Example Playbook 27 | 28 | ```yaml 29 | - hosts: all 30 | roles: 31 | - scruffaluff.bootware.alacritty 32 | ``` 33 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ssh/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install SSH for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: rsync 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install SSH for Linux 11 | ansible.builtin.package: 12 | name: 13 | - "{{ 'ssh' if ansible_pkg_mgr == 'apt' else 'openssh' }}" 14 | - rsync 15 | become: true 16 | tags: 17 | - install 18 | when: ansible_system == "Linux" 19 | 20 | - name: Install SSH for MacOS 21 | become: true 22 | become_user: "{{ brew_user }}" 23 | community.general.homebrew: 24 | name: 25 | - openssh 26 | - rsync 27 | tags: 28 | - install 29 | when: ansible_system == "Darwin" 30 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/utility/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install utilities for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: 6 | - htop 7 | - rsync 8 | tags: 9 | - install 10 | when: ansible_system == "FreeBSD" 11 | 12 | - name: Install utilities for Linux 13 | ansible.builtin.package: 14 | name: 15 | - htop 16 | - rsync 17 | become: true 18 | tags: 19 | - install 20 | when: ansible_system == "Linux" 21 | 22 | - name: Install utilities for MacOS 23 | become: true 24 | become_user: "{{ brew_user }}" 25 | community.general.homebrew: 26 | name: 27 | - htop 28 | - rsync 29 | tags: 30 | - install 31 | when: ansible_system == "Darwin" 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Git configuration file for ignoring untracked paths. 2 | # 3 | # For more information, visit https://git-scm.com/docs/gitignore. 4 | 5 | *.bak 6 | *.log 7 | *.tar.gz 8 | *.xml 9 | .DS_Store 10 | .classpath/ 11 | .env 12 | .hypothesis/ 13 | .local/ 14 | .localized 15 | .lock 16 | .mypy_cache/ 17 | .pytest_cache/ 18 | .vagrant/ 19 | .venv/ 20 | .vscode/ 21 | /.vendor/ 22 | /.vitepress/.temp/ 23 | /.vitepress/cache/ 24 | /.vitepress/dist/ 25 | /ansible_collections/* 26 | /ansible_collections/scruffaluff/bootware/CHANGELOG.md 27 | /ansible_collections/scruffaluff/bootware/README.md 28 | /build/ 29 | /data/public/install* 30 | /doc/software.md 31 | Thumbs.db 32 | __pycache__/ 33 | deno.lock 34 | dist/ 35 | node_modules/ 36 | tmp/ 37 | !/ansible_collections/scruffaluff 38 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/files/pdbrc: -------------------------------------------------------------------------------- 1 | # Python debugger settings file. 2 | # 3 | # For more information, visit https://docs.python.org/3/library/pdb.html. 4 | 5 | # Import setup modules if necessary. 6 | _namespace = dir() 7 | if "os" not in _namespace: import os 8 | if "pdb" not in _namespace: import pdb 9 | if "sys" not in _namespace: import sys 10 | 11 | # Load interactive functions from pdbrc module. 12 | sys.path.append(os.path.expanduser("~/.config/pyrc")) 13 | import pdbrc 14 | pdbrc.setup(pdb.Pdb) 15 | sys.excepthook = pdbrc.break_exception(pdb) 16 | 17 | # Remove setup import modules. 18 | _ = sys.path.pop() 19 | if "os" not in _namespace: del os 20 | if "pdb" not in _namespace: del pdb 21 | if "sys" not in _namespace: del sys 22 | del _, _namespace, pdbrc 23 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/jq/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Jq for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: jq 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Jq for Linux 11 | ansible.builtin.package: 12 | name: jq 13 | become: true 14 | tags: 15 | - install 16 | when: ansible_system == "Linux" 17 | 18 | - name: Install Jq for MacOS 19 | become: true 20 | become_user: "{{ brew_user }}" 21 | community.general.homebrew: 22 | name: jq 23 | tags: 24 | - install 25 | when: ansible_system == "Darwin" 26 | 27 | - name: Install Jq for Windows 28 | community.windows.win_scoop: 29 | global: true 30 | name: jq 31 | tags: 32 | - install 33 | when: ansible_system == "Win32NT" 34 | -------------------------------------------------------------------------------- /script/req_libc.nu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env nu 2 | 3 | def main [] { 4 | ls /usr/local/bin | get name 5 | | each {|path| 6 | let version = reqver $path 7 | { name: ($path | path basename) version: $version } 8 | } | where version != null 9 | } 10 | 11 | def reqver [file: path] { 12 | let messages = [ 13 | "file format not recognized" 14 | "invalid operation" 15 | "not a dynamic object" 16 | ] 17 | let process = objdump -T $file | complete 18 | let error = $messages | any {|msg| $msg in $process.stderr } 19 | 20 | if not $error { 21 | let versions = objdump -T $file | parse --regex "GLIBC_([\\d.]+)" 22 | | get capture0 23 | 24 | if ($versions | is-not-empty) { 25 | $versions | sort --natural | last 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obsidian/files/core-plugins.json: -------------------------------------------------------------------------------- 1 | { 2 | "file-explorer": true, 3 | "global-search": true, 4 | "switcher": true, 5 | "graph": true, 6 | "backlink": true, 7 | "canvas": true, 8 | "outgoing-link": true, 9 | "tag-pane": true, 10 | "properties": false, 11 | "page-preview": true, 12 | "daily-notes": true, 13 | "templates": true, 14 | "note-composer": true, 15 | "command-palette": true, 16 | "slash-command": false, 17 | "editor-status": true, 18 | "bookmarks": true, 19 | "markdown-importer": false, 20 | "zk-prefixer": false, 21 | "random-note": false, 22 | "outline": true, 23 | "word-count": true, 24 | "slides": false, 25 | "audio-recorder": false, 26 | "workspaces": false, 27 | "file-recovery": true, 28 | "publish": false, 29 | "sync": true 30 | } 31 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ignore/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Copy ignore file for Unix 3 | ansible.builtin.copy: 4 | dest: "{{ user_home }}/.ignore" 5 | force: true 6 | group: "{{ group_id }}" 7 | mode: "640" 8 | owner: "{{ user_id }}" 9 | src: ignore 10 | become: true 11 | tags: 12 | - config 13 | when: ansible_system != "Win32NT" 14 | 15 | - name: Copy ignore file for Windows 16 | ansible.windows.win_copy: 17 | dest: "{{ user_home }}\\.ignore" 18 | force: true 19 | src: ignore 20 | tags: 21 | - config 22 | when: ansible_system == "Win32NT" 23 | 24 | - name: Set owner of ignore file for Windows 25 | ansible.windows.win_owner: 26 | path: "{{ user_home }}\\.ignore" 27 | user: "{{ user_id }}" 28 | tags: 29 | - config 30 | when: ansible_system == "Win32NT" 31 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/hdf5/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install HDF5 tools for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: h5utils 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | # Alpine HDF5 package does not contain command line tools. It only contains 11 | # shared object libraries. 12 | - name: Install HDF5 tools for Linux 13 | ansible.builtin.package: 14 | name: "{{ 'hdf5-tools' if ansible_pkg_mgr == 'apt' else 'hdf5' }}" 15 | become: true 16 | tags: 17 | - install 18 | when: ansible_system == "Linux" and ansible_pkg_mgr != "apk" 19 | 20 | - name: Install H5Dump for MacOS 21 | become: true 22 | become_user: "{{ brew_user }}" 23 | community.general.homebrew: 24 | name: hdf5 25 | tags: 26 | - install 27 | when: ansible_system == "Darwin" 28 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/rclone/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install RClone for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: rclone 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install RClone for Linux 11 | ansible.builtin.package: 12 | name: rclone 13 | state: present 14 | become: true 15 | tags: 16 | - install 17 | when: ansible_system == "Linux" 18 | 19 | - name: Install RClone for MacOS 20 | become: true 21 | become_user: "{{ brew_user }}" 22 | community.general.homebrew: 23 | name: rclone 24 | tags: 25 | - install 26 | when: ansible_system == "Darwin" 27 | 28 | - name: Install RClone for Windows 29 | community.windows.win_scoop: 30 | global: true 31 | name: rclone 32 | tags: 33 | - install 34 | when: ansible_system == "Win32NT" 35 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/libre_office/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Libre Office for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: libreoffice 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Libre Office for Linux 11 | ansible.builtin.package: 12 | name: ripgrep 13 | become: true 14 | tags: 15 | - install 16 | when: ansible_system == "Linux" 17 | 18 | - name: Install Libre Office for MacOS 19 | community.general.homebrew_cask: 20 | accept_external_apps: true 21 | name: libreoffice 22 | state: present 23 | tags: 24 | - install 25 | when: ansible_system == "Darwin" 26 | 27 | - name: Install Libre Office for Windows 28 | community.windows.win_scoop: 29 | global: true 30 | name: libreoffice 31 | tags: 32 | - install 33 | when: ansible_system == "Win32NT" 34 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/git/templates/gitconfig.j2: -------------------------------------------------------------------------------- 1 | # Git configuration file. 2 | # 3 | # For more information, visit https://git-scm.com/docs/git-config. 4 | 5 | [advice] 6 | detachedHead = false 7 | 8 | [core] 9 | autocrlf = input 10 | editor = hx 11 | {% if ansible_system != "Linux" or ansible_pkg_mgr != "apk" or system_architecture != "arm64" %} 12 | pager = delta 13 | {% endif %} 14 | 15 | [delta] 16 | line-numbers = true 17 | navigate = true 18 | syntax-theme = Solarized (light) 19 | 20 | [diff] 21 | colorMoved = default 22 | 23 | [init] 24 | defaultBranch = main 25 | 26 | {% if ansible_system != "Linux" or ansible_pkg_mgr != "apk" or system_architecture != "arm64" %} 27 | [interactive] 28 | diffFilter = delta --color-only 29 | {% endif %} 30 | 31 | [merge] 32 | conflictstyle = diff3 33 | 34 | [pull] 35 | rebase = false 36 | 37 | [user] 38 | email = {{ git_user_email }} 39 | name = {{ git_user_name }} 40 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/connect/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Query host for PowerShell information 3 | ansible.builtin.raw: echo $PSVersionTable 4 | changed_when: false 5 | ignore_errors: true 6 | register: connect_powershell_version 7 | 8 | - name: Set connection variables if system is Windows 9 | ansible.builtin.set_fact: 10 | ansible_pkg_mgr: scoop 11 | ansible_shell_type: powershell 12 | when: >- 13 | connect_powershell_version is success and 'PSEdition' in 14 | connect_powershell_version.stdout 15 | 16 | - name: Gather facts about system 17 | ansible.builtin.gather_facts: {} 18 | 19 | - name: Set become method for Alpine 20 | ansible.builtin.set_fact: 21 | ansible_become_method: doas 22 | when: ansible_system == "Linux" and ansible_pkg_mgr == "apk" 23 | 24 | - name: Mark role as executed to prevent reruns 25 | ansible.builtin.set_fact: 26 | cacheable: true 27 | connect_role_executed: true 28 | -------------------------------------------------------------------------------- /data/templates/PKGBUILD.tmpl: -------------------------------------------------------------------------------- 1 | # Maintainer: Macklan Weinstein 2 | 3 | arch=('any') 4 | depends=('ansible>=2.13.0' 'bash>=4.0.0' 'curl>=7.0.0' 'git>=2.0.0') 5 | license=('MIT') 6 | pkgdesc='Bootstrap software installations with Ansible' 7 | pkgname=bootware 8 | pkgrel=0 9 | pkgver=${version} 10 | source=('bootware' 'bootware.1' 'bootware.bash' 'bootware.fish') 11 | url='https://github.com/scruffaluff/bootware' 12 | 13 | check() { 14 | ./bootware --version 15 | } 16 | 17 | package() { 18 | mkdir -p "${pkgdir}/usr/share/bash-completion/completions" \ 19 | "${pkgdir}/etc/fish/completions" "${pkgdir}/usr/share/man/man1" \ 20 | "${pkgdir}/usr/local/bin" 21 | mv bootware.bash "${pkgdir}/usr/share/bash-completion/completions/bootware" 22 | mv bootware.fish "${pkgdir}/etc/fish/completions/bootware.fish" 23 | mv bootware.1 "${pkgdir}/usr/share/man/man1/bootware.1" 24 | install -Dm 755 bootware "${pkgdir}/usr/bin/bootware" 25 | } 26 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lua/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Lua for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: lua54 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Lua for Linux 11 | ansible.builtin.package: 12 | name: "{{ lua_package.get(ansible_pkg_mgr, 'lua') }}" 13 | become: true 14 | tags: 15 | - install 16 | vars: 17 | lua_package: 18 | apk: lua5.4 19 | apt: lua5.3 20 | zypper: lua53 21 | when: ansible_system == "Linux" 22 | 23 | - name: Install Lua for MacOS 24 | become: true 25 | become_user: "{{ brew_user }}" 26 | community.general.homebrew: 27 | name: lua 28 | tags: 29 | - install 30 | when: ansible_system == "Darwin" 31 | 32 | - name: Install Lua for Windows 33 | community.windows.win_scoop: 34 | global: true 35 | name: lua 36 | tags: 37 | - install 38 | when: ansible_system == "Win32NT" 39 | -------------------------------------------------------------------------------- /data/templates/APKBUILD.tmpl: -------------------------------------------------------------------------------- 1 | # Maintainer: Macklan Weinstein 2 | 3 | arch="noarch" 4 | builddir="${srcdir}" 5 | depends="ansible bash curl git" 6 | license="MIT" 7 | pkgdesc="Bootstrap software installations with Ansible" 8 | pkgname=bootware 9 | pkgrel=0 10 | pkgver="${version}" 11 | source="bootware bootware.1 bootware.bash bootware.fish" 12 | url="https://github.com/scruffaluff/bootware" 13 | 14 | check() { 15 | ./bootware --version 16 | } 17 | 18 | package() { 19 | mkdir -p "${pkgdir}/usr/share/bash-completion/completions" \ 20 | "${pkgdir}/etc/fish/completions" "${pkgdir}/usr/share/man/man1" \ 21 | "${pkgdir}/usr/bin" 22 | mv bootware.bash "${pkgdir}/usr/share/bash-completion/completions/bootware" 23 | mv bootware.fish "${pkgdir}/etc/fish/completions/bootware.fish" 24 | mv bootware.1 "${pkgdir}/usr/share/man/man1/bootware.1" 25 | install -Dm 755 bootware "${pkgdir}/usr/bin/bootware" 26 | } 27 | 28 | prepare() { 29 | default_prepare 30 | } 31 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tailscale/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Tailscale for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: tailscale 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Tailscale for Linux 11 | ansible.builtin.shell: # noqa command-instead-of-module 12 | cmd: curl -LSfs https://tailscale.com/install.sh | sh 13 | creates: /usr/bin/tailscale 14 | become: true 15 | tags: 16 | - install 17 | when: ansible_system == "Linux" and systemd 18 | 19 | - name: Install Tailscale for MacOS 20 | become: true 21 | become_user: "{{ brew_user }}" 22 | community.general.homebrew: 23 | name: tailscale 24 | tags: 25 | - install 26 | when: ansible_system == "Darwin" 27 | 28 | - name: Install Tailscale for Windows 29 | community.windows.win_scoop: 30 | global: true 31 | name: tailscale 32 | tags: 33 | - install 34 | when: ansible_system == "Win32NT" 35 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/font/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install fonts for Unix 3 | ansible.builtin.include_tasks: 4 | file: unix.yaml 5 | loop: "{{ font_families }}" 6 | loop_control: 7 | loop_var: font_family 8 | tags: 9 | - install 10 | vars: 11 | font_folder: 12 | FreeBSD: /usr/local/share/fonts/{{ font_family.name }} 13 | Darwin: /Library/Fonts 14 | Linux: /usr/share/fonts/{{ font_family.name }} 15 | when: ansible_system != "Win32NT" and font_install 16 | 17 | - name: Install fonts for Windows 18 | ansible.builtin.include_tasks: 19 | file: windows.yaml 20 | loop: "{{ font_families }}" 21 | loop_control: 22 | loop_var: font_family 23 | tags: 24 | - install 25 | vars: 26 | font_folder: C:\Windows\Fonts 27 | when: ansible_system == "Win32NT" and font_install 28 | 29 | - name: Mark role as executed to prevent reruns 30 | ansible.builtin.set_fact: 31 | cacheable: true 32 | font_role_executed: true 33 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vscodium/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install VSCodium 3 | ansible.builtin.import_tasks: install.yaml 4 | when: >- 5 | ansible_system in ["Darwin", "Linux", "Win32NT"] and ansible_pkg_mgr != 6 | "apk" 7 | 8 | - name: Configure VSCodium user settings 9 | ansible.builtin.import_tasks: config.yaml 10 | when: >- 11 | ansible_system in ["Darwin", "Linux", "Win32NT"] and ansible_pkg_mgr != 12 | "apk" 13 | 14 | - name: Apply custom styles to VSCodium 15 | ansible.builtin.import_tasks: style.yaml 16 | when: >- 17 | vscodium_style and ansible_system in ["Darwin", "Linux", "Win32NT"] and 18 | ansible_pkg_mgr != "apk" 19 | 20 | - name: Set owner of VSCodium files for Windows 21 | ansible.windows.win_owner: 22 | path: "{{ user_home }}\\{{ item }}" 23 | recurse: true 24 | user: "{{ user_id }}" 25 | loop: 26 | - .vscode-oss 27 | - AppData\Roaming\VSCodium 28 | tags: 29 | - config 30 | when: ansible_system == "Win32NT" 31 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/readline/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Copy Readline configuration file for Unix 3 | ansible.builtin.copy: 4 | dest: "{{ user_home }}/.{{ item }}" 5 | force: true 6 | group: "{{ group_id }}" 7 | mode: "640" 8 | owner: "{{ user_id }}" 9 | src: "{{ item }}" 10 | become: true 11 | loop: 12 | - editrc 13 | - inputrc 14 | tags: 15 | - config 16 | when: ansible_system != "Win32NT" 17 | 18 | - name: Copy Readline configuration files for Windows 19 | ansible.windows.win_copy: 20 | dest: "{{ user_home }}\\.{{ item }}" 21 | force: true 22 | src: "{{ item }}" 23 | loop: 24 | - editrc 25 | - inputrc 26 | tags: 27 | - config 28 | when: ansible_system == "Win32NT" 29 | 30 | - name: Set owner of Readline files for Windows 31 | ansible.windows.win_owner: 32 | path: "{{ user_home }}\\{{ item }}" 33 | user: "{{ user_id }}" 34 | loop: 35 | - .editrc 36 | - .inputrc 37 | tags: 38 | - config 39 | when: ansible_system == "Win32NT" 40 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/readline/files/editrc: -------------------------------------------------------------------------------- 1 | # Editline configuration file. 2 | # 3 | # For more information, visit 4 | # https://linux.die.net/man/5/editrc. 5 | 6 | # Enable Editline. 7 | edit on 8 | 9 | # Undefine keybindings. 10 | bind -r "^d" 11 | 12 | # Use common shell keybindings. 13 | bind "^[b" ed-prev-word 14 | bind "^[f" em-next-word 15 | bind "^[w" em-delete-next-word 16 | bind "^[z" vi-undo 17 | bind "^a" ed-move-to-beg 18 | bind "^e" ed-move-to-end 19 | bind "^k" ed-kill-line 20 | bind "^l" ed-clear-screen 21 | bind "^r" em-inc-search-prev 22 | bind "^u" em-kill-line 23 | bind "^w" ed-delete-prev-word 24 | 25 | # Use Up and Down to search history for commands matching text before cursor. 26 | bind "^[[a" ed-prev-history 27 | bind "^[[b" ed-next-history 28 | 29 | # Use Shift+Left and Shift+Right to jump backwards and forwards. 30 | bind "^[[1;2D" ed-prev-word 31 | bind "^[[1;2C" em-next-word 32 | 33 | # Use Control+Left and Control+Right to jump backwards and forwards. 34 | bind "^[[1;5D" ed-prev-word 35 | bind "^[[1;5C" em-next-word 36 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/rust/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | rust_applications_: 3 | always: 4 | - cargo-audit 5 | - cargo-bloat 6 | - cargo-cache 7 | - cargo-edit 8 | - cargo-make 9 | - cargo-update 10 | - cargo-watch 11 | - cross 12 | - rust-script 13 | Darwin: 14 | amd64: [] 15 | always: [] 16 | arm64: [] 17 | FreeBSD: 18 | amd64: [] 19 | always: 20 | - cargo-binutils 21 | arm64: [] 22 | Linux: 23 | amd64: 24 | - cargo-expand 25 | - cargo-generate 26 | - cargo-tarpaulin 27 | always: 28 | - cargo-binutils 29 | arm64: [] 30 | Win32NT: 31 | amd64: [] 32 | always: [] 33 | arm64: [] 34 | rust_applications: >- 35 | {{ rust_applications_.always + rust_applications_.get(ansible_system, 36 | {}).get('always', []) + rust_applications_.get(ansible_system, 37 | {}).get(system_architecture, []) }} 38 | rust_components: 39 | - clippy 40 | - llvm-tools-preview 41 | - rust-src 42 | - rustfmt 43 | rust_targets: [] 44 | rust_toolchain: stable 45 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vscode/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install VSCode 3 | ansible.builtin.import_tasks: install.yaml 4 | when: >- 5 | vscode_style and ansible_system in ["Darwin", "Linux", "Win32NT"] and 6 | ansible_pkg_mgr not in ["apk", "pacman"] 7 | 8 | - name: Configure VSCode user settings 9 | ansible.builtin.import_tasks: config.yaml 10 | when: >- 11 | vscode_style and ansible_system in ["Darwin", "Linux", "Win32NT"] and 12 | ansible_pkg_mgr not in ["apk", "pacman"] 13 | 14 | - name: Apply custom styles to VSCode 15 | ansible.builtin.import_tasks: style.yaml 16 | when: >- 17 | vscode_style and ansible_system in ["Darwin", "Linux", "Win32NT"] and 18 | ansible_pkg_mgr not in ["apk", "pacman"] 19 | 20 | - name: Set owner of VSCode files for Windows 21 | ansible.windows.win_owner: 22 | path: "{{ user_home }}\\{{ item }}" 23 | recurse: true 24 | user: "{{ user_id }}" 25 | loop: 26 | - .vscode 27 | - AppData\Roaming\VSCode 28 | tags: 29 | - config 30 | when: ansible_system == "Win32NT" 31 | -------------------------------------------------------------------------------- /test/e2e/rpm.dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/fedora:43 AS build 2 | 3 | ARG version 4 | 5 | # Install Node and RPM Build. 6 | RUN dnf makecache && dnf install --assumeyes gettext perl-Digest-SHA rpm-build 7 | 8 | # # Copy bootware package build files. 9 | COPY data/ /bootware/data/ 10 | COPY script/ /bootware/script/ 11 | COPY src/ /bootware/src/ 12 | 13 | WORKDIR /bootware 14 | 15 | # Build Fedora package. 16 | RUN script/pkg.sh --version "${version?}" rpm 17 | 18 | FROM scratch AS dist 19 | 20 | COPY --from=build /bootware/build/dist/ / 21 | 22 | FROM docker.io/fedora:43 23 | 24 | ARG version 25 | 26 | # Install SHA checksum package. 27 | RUN dnf makecache && dnf install --assumeyes perl-Digest-SHA 28 | 29 | # Pull Fedora package from previous Docker stage. 30 | COPY --from=build /bootware/build/dist/ . 31 | 32 | # Verify checksum for Fedora package. 33 | RUN shasum --check --algorithm 512 "bootware-${version?}-0.fc33.noarch.rpm.sha512" 34 | 35 | # Install Fedora package. 36 | RUN dnf install --assumeyes "./bootware-${version?}-0.fc33.noarch.rpm" 37 | 38 | # Test package was installed successfully. 39 | RUN bootware --help 40 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/k3d/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Get latest K3d version for Linux 3 | ansible.builtin.uri: 4 | method: GET 5 | return_content: true 6 | url: https://formulae.brew.sh/api/formula/k3d.json 7 | register: k3d_formula 8 | tags: 9 | - install 10 | when: ansible_system == "Linux" 11 | 12 | - name: Install K3d for Linux 13 | ansible.builtin.get_url: 14 | dest: /usr/local/bin/k3d 15 | force: true 16 | mode: "755" 17 | url: >- 18 | https://github.com/k3d-io/k3d/releases/download/v{{ 19 | k3d_formula.json.versions.stable }}/k3d-linux-{{ system_architecture }} 20 | become: true 21 | tags: 22 | - install 23 | when: ansible_system == "Linux" 24 | 25 | - name: Install K3d for MacOS 26 | become: true 27 | become_user: "{{ brew_user }}" 28 | community.general.homebrew: 29 | name: k3d 30 | tags: 31 | - install 32 | when: ansible_system == "Darwin" 33 | 34 | - name: Install K3d for Windows 35 | community.windows.win_scoop: 36 | global: true 37 | name: k3d 38 | tags: 39 | - install 40 | when: ansible_system == "Win32NT" 41 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021-Present Macklan Weinstein 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/security/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Disable root user login for Unix 3 | ansible.builtin.user: 4 | name: root 5 | shell: /usr/sbin/nologin 6 | become: true 7 | when: ansible_system != "Win32NT" 8 | 9 | - name: Disable SSH password login for Unix 10 | ansible.builtin.lineinfile: 11 | create: true 12 | line: "{{ item.key }} {{ item.value }}" 13 | mode: "644" 14 | path: /etc/ssh/sshd_config 15 | regex: "^#?\\s*{{ item.key }}" 16 | state: present 17 | become: true 18 | loop: 19 | - key: PasswordAuthentication 20 | value: "no" 21 | - key: PermitRootLogin 22 | value: "no" 23 | when: ansible_system != "Win32NT" 24 | 25 | - name: Disable SSH password login for Windows 26 | community.windows.win_lineinfile: 27 | create: true 28 | line: "{{ item.key }} {{ item.value }}" 29 | path: C:\ProgramData\ssh\sshd_config 30 | regex: "^#?\\s*{{ item.key }}" 31 | state: present 32 | loop: 33 | - key: PasswordAuthentication 34 | value: "no" 35 | - key: PermitRootLogin 36 | value: "no" 37 | when: ansible_system == "Win32NT" 38 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/kdenlive/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Kdenlive for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: kdenlive 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Kdenlive for Linux 11 | ansible.builtin.package: 12 | name: kdenlive 13 | become: true 14 | ignore_errors: true 15 | register: kdenlive_linux 16 | tags: 17 | - install 18 | when: ansible_system == "Linux" 19 | 20 | - name: Install Kdenlive for Linux 21 | become: true 22 | community.general.flatpak: 23 | name: org.kde.kdenlive 24 | tags: 25 | - install 26 | when: ansible_system == "Linux" and kdenlive_linux is failed 27 | 28 | - name: Install Kdenlive for MacOS 29 | community.general.homebrew_cask: 30 | accept_external_apps: true 31 | name: kdenlive 32 | state: present 33 | tags: 34 | - install 35 | when: ansible_system == "Darwin" 36 | 37 | - name: Install Kdenlive for Windows 38 | community.windows.win_scoop: 39 | global: true 40 | name: kdenlive 41 | tags: 42 | - install 43 | when: ansible_system == "Win32NT" 44 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/firefox/tasks/debian.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Download Mozilla GPG key for Debian 3 | ansible.builtin.get_url: 4 | dest: /usr/share/keyrings/mozilla-archive-keyring.asc 5 | mode: "644" 6 | url: https://packages.mozilla.org/apt/repo-signing-key.gpg 7 | become: true 8 | tags: 9 | - install 10 | 11 | - name: Add Mozilla repository for Debian 12 | ansible.builtin.apt_repository: 13 | repo: >- 14 | deb [signed-by=/usr/share/keyrings/mozilla-archive-keyring.asc] 15 | https://packages.mozilla.org/apt mozilla main 16 | state: present 17 | filename: firefox 18 | become: true 19 | tags: 20 | - install 21 | 22 | - name: Prioritize Mozilla repository for Debian 23 | ansible.builtin.copy: 24 | content: | 25 | Package: * 26 | Pin: origin packages.mozilla.org 27 | Pin-Priority: 1000 28 | dest: /etc/apt/preferences.d/mozilla 29 | force: true 30 | mode: "644" 31 | become: true 32 | tags: 33 | - install 34 | 35 | - name: Install Firefox for Debian 36 | ansible.builtin.apt: 37 | name: firefox 38 | become: true 39 | tags: 40 | - install 41 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/image_magick/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Image Magick for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: ImageMagick7 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Image Magick for Linux 11 | ansible.builtin.package: 12 | name: "{{ image_magick_package.get(ansible_pkg_mgr, 'imagemagick') }}" 13 | become: true 14 | tags: 15 | - install 16 | vars: 17 | image_magick_package: 18 | apk: imagemagick 19 | apt: imagemagick 20 | dnf: ImageMagick 21 | dnf5: ImageMagick 22 | pacman: imagemagick 23 | zypper: ImageMagick 24 | when: ansible_system == "Linux" 25 | 26 | - name: Install Image Magick for MacOS 27 | become: true 28 | become_user: "{{ brew_user }}" 29 | community.general.homebrew: 30 | name: imagemagick 31 | tags: 32 | - install 33 | when: ansible_system == "Darwin" 34 | 35 | - name: Install Image Magick for Windows 36 | community.windows.win_scoop: 37 | global: true 38 | name: imagemagick 39 | tags: 40 | - install 41 | when: ansible_system == "Win32NT" 42 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/audacity/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Audacity for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: audacity 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Audacity for Linux 11 | ansible.builtin.package: 12 | name: audacity 13 | become: true 14 | ignore_errors: true 15 | register: audacity_linux 16 | tags: 17 | - install 18 | when: ansible_system == "Linux" 19 | 20 | - name: Install Audacity for Linux 21 | become: true 22 | community.general.flatpak: 23 | name: org.audacityteam.Audacity 24 | tags: 25 | - install 26 | when: ansible_system == "Linux" and audacity_linux is failed 27 | 28 | - name: Install Audacity for MacOS 29 | community.general.homebrew_cask: 30 | accept_external_apps: true 31 | name: audacity 32 | state: present 33 | tags: 34 | - install 35 | when: ansible_system == "Darwin" 36 | 37 | - name: Install Audacity for Windows 38 | community.windows.win_scoop: 39 | global: true 40 | name: audacity 41 | tags: 42 | - install 43 | when: ansible_system == "Win32NT" 44 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/files/ruff.toml: -------------------------------------------------------------------------------- 1 | # Ruff configuration file for linting Python code. 2 | # 3 | # For more information, visit https://docs.astral.sh/ruff/configuration. 4 | 5 | [format] 6 | docstring-code-format = true 7 | 8 | [lint] 9 | flake8-annotations = { allow-star-arg-any = true } 10 | pydocstyle = { convention = "google" } 11 | ignore = [ 12 | "COM", # Rule conflicts with formatter. 13 | "EXE003", # Uv should be shebang executor. 14 | "FBT", # Boolean function arguments are acceptable. 15 | "FIX", # Todo comments are acceptable. 16 | "ICN", # Import abbreviations reduce readability. 17 | "PLR2004", # Constant numerical comparisons are often readable. 18 | "S101", # Assert statements are standard for test functions. 19 | "S603", # Rule warns about using subprocess commands without a solution. 20 | "S607", # Partial paths for process executables is more cross platform. 21 | "T201", # Print statements are acceptable for CLI applications. 22 | "T203", # Print statements are acceptable for CLI applications. 23 | "TD", # Todo formatting is excessive for personal projects. 24 | ] 25 | select = ["ALL"] 26 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/android_tools/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Android platform tools for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: android-tools 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Android platform tools for MacOS 11 | community.general.homebrew_cask: 12 | accept_external_apps: true 13 | name: android-platform-tools 14 | state: present 15 | tags: 16 | - install 17 | when: ansible_system == "Darwin" 18 | 19 | - name: Install Android platform tools for Linux 20 | ansible.builtin.package: 21 | name: "{{ 'android-sdk' if ansible_pkg_mgr == 'apt' else 'android-tools' }}" 22 | become: true 23 | tags: 24 | - install 25 | when: ansible_system == "Linux" and ansible_pkg_mgr not in ["opkg", "zypper"] 26 | 27 | # TODO: FIgure out how to configure android-clt for Windows so adb does not need 28 | # to be separately installed. 29 | - name: Install Android platform tools for Windows 30 | community.windows.win_scoop: 31 | global: true 32 | name: 33 | - adb 34 | - android-clt 35 | tags: 36 | - install 37 | when: ansible_system == "Win32NT" 38 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vim/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Vim for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: vim 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Vim for Linux 11 | ansible.builtin.package: 12 | name: vim 13 | become: true 14 | tags: 15 | - install 16 | when: ansible_system == "Linux" 17 | 18 | - name: Install Vim for MacOS 19 | community.general.homebrew: 20 | name: vim 21 | tags: 22 | - install 23 | when: ansible_system == "Darwin" 24 | 25 | - name: Install Vim for Windows 26 | community.windows.win_scoop: 27 | global: true 28 | name: vim 29 | tags: 30 | - install 31 | when: ansible_system == "Win32NT" 32 | 33 | - name: Copy Vim settings file for Unix 34 | ansible.builtin.copy: 35 | dest: "{{ ansible_env.HOME }}/.vimrc" 36 | force: true 37 | mode: "644" 38 | src: vimrc 39 | tags: 40 | - config 41 | when: ansible_system != "Win32NT" 42 | 43 | - name: Copy Vim settings files for Windows 44 | ansible.windows.win_copy: 45 | dest: "{{ ansible_env.HOME }}/_vimrc" 46 | src: vimrc 47 | tags: 48 | - config 49 | when: ansible_system == "Win32NT" 50 | -------------------------------------------------------------------------------- /data/templates/bootware.spec.tmpl: -------------------------------------------------------------------------------- 1 | BuildArch: noarch 2 | License: MIT 3 | Name: bootware 4 | Packager: Macklan Weinstein 5 | Release: 0.fc33 6 | Requires: ansible >= 2.13.0, bash >= 4.0.0, curl >= 7.0.0, git >= 2.0.0 7 | Source: bootware-%{version}.tar.gz 8 | Summary: Bootstrap software installations with Ansible 9 | URL: https://github.com/scruffaluff/bootware 10 | Vendor: Macklan Weinstein 11 | Version: ${version} 12 | 13 | %check 14 | ./bootware --version 15 | 16 | %description 17 | Bootstrap software installations with Ansible 18 | 19 | %files 20 | /usr/share/bash-completion/completions/bootware 21 | /etc/fish/completions/bootware.fish 22 | /usr/bin/bootware 23 | /usr/share/man/man1/bootware.1.gz 24 | 25 | %install 26 | mkdir -p %{buildroot}/usr/share/bash-completion/completions \ 27 | %{buildroot}/etc/fish/completions %{buildroot}/usr/share/man/man1 \ 28 | %{buildroot}/usr/bin 29 | mv bootware.bash %{buildroot}/usr/share/bash-completion/completions/bootware 30 | mv bootware.fish %{buildroot}/etc/fish/completions/bootware.fish 31 | mv bootware.1 %{buildroot}/usr/share/man/man1/bootware.1 32 | install --mode 755 bootware %{buildroot}/usr/bin/bootware 33 | 34 | %prep 35 | %setup 36 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/obs/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install OBS Studio for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: obs-studio 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install OBS Studio for Linux 11 | ansible.builtin.package: 12 | name: obs-studio 13 | become: true 14 | ignore_errors: true 15 | register: obs_linux 16 | tags: 17 | - install 18 | when: ansible_system == "Linux" and system_architecture == "amd64" 19 | 20 | - name: Install OBS Studio for Linux 21 | become: true 22 | community.general.flatpak: 23 | name: com.obsproject.Studio 24 | tags: 25 | - install 26 | when: >- 27 | ansible_system == "Linux" and system_architecture == "amd64" and obs_linux 28 | is failed 29 | 30 | - name: Install OBS Studio for MacOS 31 | community.general.homebrew_cask: 32 | accept_external_apps: true 33 | name: obs 34 | state: present 35 | tags: 36 | - install 37 | when: ansible_system == "Darwin" 38 | 39 | - name: Install OBS Studio for Windows 40 | community.windows.win_scoop: 41 | global: true 42 | name: obs-studio 43 | tags: 44 | - install 45 | when: ansible_system == "Win32NT" 46 | -------------------------------------------------------------------------------- /test/e2e/deb.dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/debian:13 AS build 2 | 3 | ARG version 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update --ignore-missing && apt-get install --quiet --yes \ 7 | gettext-base libdigest-sha-perl 8 | 9 | # Copy bootware package build files. 10 | COPY data/ /bootware/data/ 11 | COPY script/ /bootware/script/ 12 | COPY src/ /bootware/src/ 13 | 14 | WORKDIR /bootware 15 | 16 | # Build Debian package. 17 | RUN script/pkg.sh --version "${version?}" deb 18 | 19 | FROM scratch AS dist 20 | 21 | COPY --from=build /bootware/build/dist/ / 22 | 23 | FROM docker.io/debian:13 24 | 25 | ARG version 26 | ENV DEBIAN_FRONTEND=noninteractive 27 | 28 | # Update Apt package cache. 29 | RUN apt-get update 30 | 31 | # Avoid APT interactively requesting to configure tzdata. 32 | RUN apt-get --quiet --yes install libdigest-sha-perl tzdata 33 | 34 | # Pull Debian package from previous Docker stage. 35 | COPY --from=build /bootware/build/dist/ . 36 | 37 | # Verify checksum for Debian package. 38 | RUN shasum --check --algorithm 512 "bootware_${version?}_all.deb.sha512" 39 | 40 | # Install Debian package. 41 | RUN apt-get install --quiet --yes "./bootware_${version?}_all.deb" 42 | 43 | # Test package was installed successfully. 44 | RUN bootware --help 45 | -------------------------------------------------------------------------------- /test/unit/config.test.ps1: -------------------------------------------------------------------------------- 1 | BeforeAll { 2 | $Bootware = "$PSScriptRoot/../../src/bootware.ps1" 3 | . $Bootware 4 | 5 | Mock Invoke-WebRequest { } 6 | } 7 | 8 | Describe 'Config' { 9 | It 'Subcommand makes empty configuration log' { 10 | $Env:BOOTWARE_NOLOG = '' 11 | $Expected = "Writing empty configuration file to '/dev/null'." 12 | 13 | $Actual = & $Bootware config -e --dest /dev/null 14 | $Actual | Should -Be $Expected 15 | } 16 | 17 | It 'Subcommand parses no parameters correctly' { 18 | $Env:BOOTWARE_NOLOG = 'true' 19 | 20 | & $Bootware config --source 'https://example.com/config.yaml' 21 | Assert-MockCalled Invoke-WebRequest -Times 1 -ParameterFilter { 22 | $OutFile -eq "$HOME\.bootware\config.yaml" -and 23 | $Uri -eq 'https://example.com/config.yaml' 24 | } 25 | } 26 | 27 | It 'Subcommand passes source to Invoke-WebRequest' { 28 | $Env:BOOTWARE_NOLOG = 'true' 29 | 30 | & $Bootware config --source https://fakedomain.com 31 | Assert-MockCalled Invoke-WebRequest -Times 1 -ParameterFilter { 32 | $OutFile -eq "$HOME\.bootware\config.yaml" -and 33 | $Uri -eq 'https://fakedomain.com' 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /doc/config.md: -------------------------------------------------------------------------------- 1 | # Configuration 2 | 3 | ## Configuration File 4 | 5 | Bootware uses the [YAML](https://yaml.org/) language for its configuration file. 6 | Bootware uses the first available path option as its configuration file. 7 | 8 | - `` (argument to -c/--config command line flag) 9 | - `bootware.yaml` (in the current directory) 10 | - `BOOTWARE_CONFIG` (environment variable) 11 | - `~/.bootware/config.yaml` (in the home directory) 12 | 13 | Bootware can generate a default configuration file in the user's home directory, 14 | by executing `bootware config`. 15 | 16 | ## Environment Variables 17 | 18 | Several Bootware options can also be specified with environment variables. 19 | 20 | - `BOOTWARE_CONFIG`: Set the configuration file path 21 | - `BOOTWARE_NOPASSWD`: Assume passwordless doas or sudo 22 | - `BOOTWARE_NOSETUP`: Skip Ansible install and system setup 23 | - `BOOTWARE_PLAYBOOK`: Set Ansible playbook name 24 | - `BOOTWARE_SKIP`: Set skip tags for Ansible roles 25 | - `BOOTWARE_TAGS`: Set tags for Ansible roles 26 | - `BOOTWARE_URL`: Set location of Ansible repository 27 | 28 | ## Command Line 29 | 30 | Many Bootware features can controlled directly fron the command line. For a list 31 | of options, execute `bootware --help` or `bootware --help` for a 32 | subcommand's specific options. 33 | -------------------------------------------------------------------------------- /test/unit/config.test.bats: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bats 2 | # shellcheck disable=SC2317,SC2329 3 | 4 | setup() { 5 | REPO_PATH="${BATS_TEST_DIRNAME}/../.." 6 | cd "${REPO_PATH}" || exit 7 | load "${REPO_PATH}/.vendor/lib/bats-assert/load" 8 | load "${REPO_PATH}/.vendor/lib/bats-file/load" 9 | load "${REPO_PATH}/.vendor/lib/bats-support/load" 10 | bats_require_minimum_version 1.5.0 11 | 12 | # Mock functions for child processes by printing received arguments. 13 | # 14 | # Args: 15 | # -f: Use override as a function instead of a variable. 16 | command() { 17 | echo '/bin/bash' 18 | } 19 | export -f command 20 | 21 | curl() { 22 | echo "curl $*" 23 | } 24 | export -f curl 25 | } 26 | 27 | config_subcommand_makes_empty_configuration_log() { # @test 28 | run bash src/bootware.sh config -e --dest /dev/null 29 | assert_success 30 | assert_output 'Writing empty configuration file to /dev/null.' 31 | } 32 | 33 | config_subcommand_passes_source_to_curl() { # @test 34 | # Disable logging to simplify stdout for testing. 35 | export BOOTWARE_NOLOG='true' 36 | 37 | run bash src/bootware.sh config --source https://fakedomain.com 38 | assert_success 39 | assert_output "curl --fail --location --show-error --silent --output ${HOME}/.bootware/config.yaml https://fakedomain.com" 40 | } 41 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/font/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | font_families: 3 | - check: FiraCode-Regular.ttf 4 | name: fira-code 5 | patterns: 6 | - FiraCode-*.ttf 7 | url: https://github.com/tonsky/FiraCode/releases/download/6.2/Fira_Code_v6.2.zip 8 | - check: FiraCodeNerdFont-Regular.ttf 9 | name: fira-code-nerd-font 10 | patterns: 11 | - FiraCodeNerdFont-*.ttf 12 | url: https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/FiraCode.zip 13 | - check: FiraMono-Regular.ttf 14 | name: fira-mono 15 | patterns: 16 | - FiraMono-*.ttf 17 | url: https://github.com/mozilla/Fira/archive/4.202.zip 18 | - check: FiraSans-Regular.ttf 19 | name: fira-sans 20 | patterns: 21 | - FiraSans-*.ttf 22 | url: https://github.com/mozilla/Fira/archive/4.202.zip 23 | - check: PTM55FT.ttf 24 | name: pt-mono 25 | patterns: 26 | - PT*.ttf 27 | url: https://www.fontsquirrel.com/fonts/download/pt-mono 28 | - check: PTS55F.ttf 29 | name: pt-sans 30 | patterns: 31 | - PT*.ttf 32 | url: https://www.fontsquirrel.com/fonts/download/pt-sans 33 | - check: PTF55F.ttf 34 | name: pt-serif 35 | patterns: 36 | - PT*.ttf 37 | url: https://www.fontsquirrel.com/fonts/download/pt-serif 38 | font_install: true 39 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/galaxy.yml: -------------------------------------------------------------------------------- 1 | # Ansible Galaxy collection metadata file. 2 | # 3 | # For more information, visit 4 | # https://docs.ansible.com/ansible/latest/dev_guide/collections_galaxy_meta.html#collections-galaxy-meta. 5 | 6 | --- 7 | authors: 8 | - Macklan Weinstein 9 | build_ignore: 10 | - .DS_Store 11 | - .classpath 12 | - .dockerignore 13 | - .editorconfig 14 | - .github 15 | - .localized 16 | - .shellcheckrc 17 | - .venv 18 | - PSScriptAnalyzerSettings.psd1 19 | - Thumbs.db 20 | - __pycache__ 21 | - completions 22 | - doc 23 | - node_modules 24 | - package-lock.json 25 | - package.json 26 | - pyproject.toml 27 | - script 28 | - test 29 | - tmp 30 | - uv.lock 31 | dependencies: 32 | chocolatey.chocolatey: ">=1.1.0" 33 | community.general: ">=4.0.0" 34 | community.windows: ">=1.9.0" 35 | description: software installers 36 | documentation: http://scruffaluff.github.io/bootware 37 | homepage: http://github.com/scruffaluff/bootware 38 | issues: http://github.com/scruffaluff/bootware/issues 39 | license: 40 | - MIT 41 | name: bootware 42 | namespace: scruffaluff 43 | readme: README.md 44 | repository: http://github.com/scruffaluff/bootware 45 | tags: 46 | - install 47 | - linux 48 | - tools 49 | - windows 50 | version: "0.9.1" 51 | -------------------------------------------------------------------------------- /test/e2e/brew.dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/homebrew/brew:4 AS build 2 | 3 | ARG version 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | # Update Apt package cache. 7 | RUN sudo -E apt-get update 8 | 9 | # Avoid APT interactively requesting to configure tzdata. 10 | RUN sudo -E apt-get --quiet --yes install curl gettext-base libdigest-sha-perl 11 | 12 | COPY data/ /bootware/data/ 13 | COPY script/ /bootware/script/ 14 | COPY src/ /bootware/src/ 15 | 16 | WORKDIR /bootware 17 | 18 | RUN sudo mkdir -p -m 777 build 19 | 20 | # Build Homebrew package. 21 | RUN script/pkg.sh --version "${version?}" brew 22 | 23 | FROM scratch AS dist 24 | 25 | COPY --from=build /bootware/build/dist/ / 26 | 27 | FROM docker.io/homebrew/brew:4 28 | 29 | ARG version 30 | 31 | # Update Apt package cache. 32 | RUN sudo -E apt-get update 33 | 34 | # Avoid APT interactively requesting to configure tzdata. 35 | RUN sudo -E apt-get --quiet --yes install libdigest-sha-perl tzdata 36 | 37 | # Pull Homebrew package from previous Docker stage. 38 | COPY --from=build /bootware/build/dist/ . 39 | 40 | # Verify checksum for Homebrew package. 41 | RUN shasum --check --algorithm 512 bootware.rb.sha512 42 | 43 | # Install Homebrew package. 44 | RUN brew install --build-from-source ./bootware.rb 45 | 46 | # Test package was installed successfully. 47 | RUN bootware --help 48 | -------------------------------------------------------------------------------- /test/unit/install.test.ps1: -------------------------------------------------------------------------------- 1 | BeforeAll { 2 | # Path normalization required for Assert-MockCalled parameter filters. 3 | $Install = [System.IO.Path]::GetFullPath("$PSScriptRoot/../../src/install.ps1") 4 | . $Install 5 | 6 | Mock Invoke-WebRequest { } 7 | Mock Test-Path { 1 } 8 | } 9 | 10 | Describe 'Install' { 11 | It 'Write error for nonexistant option at end of call' { 12 | $Env:BOOTWARE_NOLOG = '' 13 | $Actual = & $Install --preserve-env -v develop notanoption 14 | $Actual | Should -Be @( 15 | "error: No such option 'notanoption'.", 16 | "Run 'install-bootware --help' for usage." 17 | ) 18 | } 19 | 20 | It 'Pass local path to Invoke-WebRequest' { 21 | if (Get-Command -ErrorAction SilentlyContinue bootware) { 22 | Mock bootware { '' } 23 | } 24 | else { 25 | function bootware() { '' } 26 | } 27 | 28 | $Env:BOOTWARE_NOLOG = 'true' 29 | 30 | & $Install --preserve-env --version develop 31 | Assert-MockCalled Invoke-WebRequest -Times 1 -ParameterFilter { 32 | $OutFile -eq "$Env:LocalAppData\Programs\Bootware\bootware.ps1" -and 33 | $Uri -eq 'https://raw.githubusercontent.com/scruffaluff/bootware/develop/src/bootware.ps1' 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /.vitepress/config.ts: -------------------------------------------------------------------------------- 1 | // VitePress documentation configuration file. 2 | // 3 | // This configuration uses the default VitePress theme, whose details can be 4 | // found at https://vitepress.dev/reference/default-theme-config. For more 5 | // information on VitePress configuration, visit 6 | // https://vitepress.dev/reference/site-config. 7 | 8 | import { defineConfig } from "vitepress"; 9 | 10 | export default defineConfig({ 11 | base: "/bootware/", 12 | description: "Shell scripts for bootstrapping computers with Ansible.", 13 | head: [["link", { rel: "icon", href: "/bootware/favicon.ico" }]], 14 | lastUpdated: true, 15 | outDir: "build/site", 16 | srcDir: "doc", 17 | themeConfig: { 18 | aside: false, 19 | footer: { 20 | message: "Released under the MIT License.", 21 | copyright: "Copyright © 2021-Present Macklan Weinstein", 22 | }, 23 | nav: [ 24 | { text: "Home", link: "/" }, 25 | { text: "Install", link: "/install" }, 26 | { text: "Software", link: "/software" }, 27 | { text: "Config", link: "/config" }, 28 | ], 29 | search: { 30 | provider: "local", 31 | }, 32 | socialLinks: [ 33 | { icon: "github", link: "https://github.com/scruffaluff/bootware" }, 34 | ], 35 | }, 36 | title: "Bootware", 37 | vite: { publicDir: "../data/public" }, 38 | }); 39 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/python/files/sitecustomize.py: -------------------------------------------------------------------------------- 1 | """Custom utilities for Python. 2 | 3 | For more information, visit https://docs.python.org/3/library/site.html. 4 | """ 5 | 6 | import builtins 7 | import importlib 8 | import os 9 | import subprocess 10 | import sys 11 | from pathlib import Path 12 | 13 | 14 | def debugadapt(host: str = "localhost", port: int = 5678) -> None: 15 | """Start a debug adapter protocol session with debugpy.""" 16 | os.environ["DEBUGPY_LOG_DIR"] = str(Path(__file__).parent / "log") 17 | packages = str(Path(__file__).parent / "package") 18 | sys.path.append(packages) 19 | try: 20 | debugpy = importlib.import_module("debugpy") 21 | except ModuleNotFoundError: 22 | subprocess.run( 23 | [ 24 | sys.executable, 25 | "-m", 26 | "pip", 27 | "install", 28 | "--target", 29 | packages, 30 | "debugpy", 31 | ], 32 | check=True, 33 | ) 34 | debugpy = importlib.import_module("debugpy") 35 | 36 | debugpy.listen((host, port)) 37 | print(f"Debugpy session listening at {host}:{port}.") 38 | debugpy.wait_for_client() 39 | 40 | 41 | # Export utilities as Python builtins. 42 | builtins.debugadapt = debugadapt # type: ignore[attr-defined] 43 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/flatpak/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Flatpak for Linux 3 | ansible.builtin.package: 4 | name: flatpak 5 | state: present 6 | become: true 7 | tags: 8 | - install 9 | when: ansible_system == "Linux" 10 | 11 | - name: Add Flathub remote repository for Linux 12 | ansible.builtin.command: 13 | cmd: >- 14 | flatpak remote-add --if-not-exists flathub 15 | https://flathub.org/repo/flathub.flatpakrepo 16 | become: true 17 | # Command does not provide stdout information to determine a change. 18 | changed_when: true 19 | tags: 20 | - install 21 | when: ansible_system == "Linux" 22 | 23 | - name: Enable Flathub remote repository for Linux 24 | ansible.builtin.command: 25 | cmd: flatpak remote-modify --enable flathub 26 | become: true 27 | # Command does not provide stdout information to determine a change. 28 | changed_when: true 29 | tags: 30 | - install 31 | when: ansible_system == "Linux" 32 | 33 | - name: Install Flatpak packages for Linux 34 | become: true 35 | community.general.flatpak: 36 | name: "{{ item }}" 37 | loop: "{{ flatpak_packages }}" 38 | tags: 39 | - install 40 | when: ansible_system == "Linux" 41 | 42 | - name: Mark role as executed to prevent reruns 43 | ansible.builtin.set_fact: 44 | cacheable: true 45 | flatpak_role_executed: true 46 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/tmux/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # TODO: Add Tmate when it is available on stable Alpine. Check 3 | # https://pkgs.alpinelinux.org/packages?name=tmate for status. 4 | - name: Install Tmux for Alpine 5 | become: true 6 | community.general.apk: 7 | name: tmux 8 | tags: 9 | - install 10 | when: ansible_pkg_mgr == "apk" 11 | 12 | - name: Install Tmux for FreeBSD 13 | become: true 14 | community.general.pkgng: 15 | name: 16 | - tmate 17 | - tmux 18 | tags: 19 | - install 20 | when: ansible_system == "FreeBSD" 21 | 22 | - name: Install Tmux for Linux 23 | ansible.builtin.package: 24 | name: 25 | - tmate 26 | - tmux 27 | become: true 28 | tags: 29 | - install 30 | when: ansible_system == "Linux" and ansible_pkg_mgr != "apk" 31 | 32 | - name: Install Tmux for MacOS 33 | become: true 34 | become_user: "{{ brew_user }}" 35 | community.general.homebrew: 36 | name: 37 | - tmate 38 | - tmux 39 | tags: 40 | - install 41 | when: ansible_system == "Darwin" 42 | 43 | - name: Copy Tmux settings file for Unix 44 | ansible.builtin.template: 45 | dest: "{{ user_home }}/.tmux.conf" 46 | force: true 47 | group: "{{ group_id }}" 48 | mode: "640" 49 | owner: "{{ user_id }}" 50 | src: tmux.conf.j2 51 | become: true 52 | tags: 53 | - config 54 | when: ansible_system != "Win32NT" 55 | -------------------------------------------------------------------------------- /test/unit/install.test.bats: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bats 2 | # shellcheck disable=SC2317,SC2329 3 | 4 | setup() { 5 | REPO_PATH="${BATS_TEST_DIRNAME}/../.." 6 | cd "${REPO_PATH}" || exit 7 | load "${REPO_PATH}/.vendor/lib/bats-assert/load" 8 | load "${REPO_PATH}/.vendor/lib/bats-file/load" 9 | load "${REPO_PATH}/.vendor/lib/bats-support/load" 10 | bats_require_minimum_version 1.5.0 11 | 12 | # Avoid mutating user shell configuration during testing. 13 | install_completions() { 14 | echo "$@" 15 | } 16 | export -f install_completions 17 | } 18 | 19 | global_owner_is_root() { # @test 20 | local dst_dir 21 | dst_dir="$(mktemp -d)" 22 | 23 | run bash src/install.sh --preserve-env --quiet --global --dest "${dst_dir}" 24 | assert_success 25 | assert_file_owner root "${dst_dir}/bootware" 26 | } 27 | 28 | prints_version() { # @test 29 | run bash src/install.sh --preserve-env --dest "$(mktemp -d)" 30 | assert_success 31 | assert_output --partial 'Installed Bootware 0.' 32 | } 33 | 34 | quiet_is_silent() { # @test 35 | run bash src/install.sh --preserve-env --quiet --dest "$(mktemp -d)" 36 | assert_success 37 | assert_output '' 38 | } 39 | 40 | shows_error_usage_for_bad_argument() { # @test 41 | run bash src/install.sh --dst 42 | assert_failure 43 | assert_output "$( 44 | cat << EOF 45 | error: No such option '--dst'. 46 | Run 'install-bootware --help' for usage. 47 | EOF 48 | )" 49 | } 50 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/essential/defaults/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | essential_linux_packages_: 3 | always: 4 | - acl 5 | - bzip2 6 | - ca-certificates 7 | - curl 8 | - findutils 9 | - gzip 10 | - tar 11 | - unzip 12 | apk: 13 | - 7zip 14 | - gnupg 15 | - openssl 16 | - openssl-dev 17 | - openssl-libs-static 18 | - which 19 | - xz 20 | - zip 21 | apt: 22 | - 7zip 23 | - apt-file 24 | - apt-transport-https 25 | - gnupg 26 | - libssl-dev 27 | - lsb-release 28 | - openssl 29 | - pbuilder 30 | - ubuntu-dev-tools 31 | - xz-utils 32 | - zip 33 | dnf: 34 | - dnf-plugins-core 35 | - gnupg 36 | - openssl 37 | - openssl-devel 38 | - p7zip 39 | - which 40 | - xz 41 | - zip 42 | dnf5: 43 | - dnf-plugins-core 44 | - gnupg 45 | - openssl 46 | - openssl-devel 47 | - p7zip 48 | - which 49 | - xz 50 | - zip 51 | opkg: 52 | - which 53 | - xz 54 | pacman: 55 | - gnupg 56 | - openssl 57 | - p7zip 58 | - which 59 | - xz 60 | - zip 61 | zypper: 62 | - gnupg 63 | - libopenssl-devel 64 | - openssl 65 | - p7zip 66 | - python3-dnf 67 | - which 68 | - xz 69 | - zip 70 | essential_linux_packages: >- 71 | {{ essential_linux_packages_.always + 72 | essential_linux_packages_.get(ansible_pkg_mgr, []) }} 73 | -------------------------------------------------------------------------------- /script/test_e2e.nu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env nu 2 | 3 | # Run all container end to end tests for an architecture. 4 | def main [ 5 | --arch (-a): string = "" # Chip architecture 6 | --cache (-c) # Use container cache 7 | --dists (-d): string = "alpine,arch,debian,fedora,ubuntu" # Linux distributions list 8 | --extra (-e): string = "" # Extra variables for Ansible 9 | --skip (-s): string = "none" # Ansible roles to skip 10 | --tags (-t): string = "all,never" # Ansible roles to keep 11 | ] { 12 | const script = path self 13 | cd ($script | path dirname --num-levels 2) 14 | 15 | let arch = if ($arch | is-empty) { 16 | match $nu.os-info.arch { "aarch64" => "arm64", "x86_64" => "amd64" } 17 | } else { 18 | $arch 19 | } 20 | let args = if $cache { [] } else { ["--no-cache"] } 21 | let dists_ = $dists | split row "," 22 | let runner = if (which podman | is-empty) { "docker" } else { "podman" } 23 | 24 | for $dist in $dists_ { 25 | ( 26 | ^$runner build ...$args --file $"test/e2e/($dist).dockerfile" --tag 27 | $"docker.io/scruffaluff/bootware:($dist)" --platform 28 | $"linux/($arch)" . --build-arg $"extra=($extra)" --build-arg 29 | $"skip=($skip)" --build-arg $"tags=($tags)" --build-arg test=true 30 | ) 31 | print $"End to end test ($dist) passed." 32 | } 33 | 34 | print "All end to end tests passed." 35 | } 36 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/musescore/files/macos.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # 3 | # Configure desktop settings for MacOS. To get nested settings in XML format use 4 | # command `defaults export -`. 5 | 6 | # Exit immediately if a command exits or pipes a non-zero return code. 7 | # 8 | # Flags: 9 | # -e: Exit immediately when a command pipeline fails. 10 | # -u: Throw an error when an unset variable is encountered. 11 | set -eu 12 | 13 | defaults write org.musescore.MuseScore4 application.checkForUpdate -bool false 14 | defaults write org.musescore.MuseScore4 application.hasCompletedFirstLaunchSetup -bool true 15 | defaults write org.musescore.MuseScore4 application.paths.myPlugins -string "${HOME}/Music/MuseScore/Plugins" 16 | defaults write org.musescore.MuseScore4 application.paths.myScores -string "${HOME}/Music/MuseScore/Scores" 17 | defaults write org.musescore.MuseScore4 application.paths.mySoundfonts -string "${HOME}/Music/MuseScore/SoundFonts" 18 | defaults write org.musescore.MuseScore4 application.paths.myStyles -string "${HOME}/Music/MuseScore/Styles" 19 | defaults write org.musescore.MuseScore4 application.paths.myTemplates -string "${HOME}/Music/MuseScore/Templates" 20 | defaults write org.musescore.MuseScore4 application.startup.modeStart -int 1 21 | defaults write org.musescore.MuseScore4 project.alsoShareAudioCom -bool false 22 | defaults write org.musescore.MuseScore4 project.autoSaveEnabled -bool false 23 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/powershell/files/SSHCompletion.psm1: -------------------------------------------------------------------------------- 1 | # PowerShell module to enable SSH completions from SSH config file. 2 | # 3 | # Forked from 4 | # https://gist.github.com/backerman/2c91d31d7a805460f93fe10bdfa0ffb0?permalink_comment_id=4131763#gistcomment-4131763. 5 | 6 | # Find all hosts beginning with input. 7 | function CompleteHosts($Partial) { 8 | $SSHFolder = "$HOME/.ssh" 9 | $SSHConfig = "$SSHFolder/config" 10 | 11 | $Hosts = Get-Content -Path "$SSHConfig" | 12 | Select-String -Pattern '^Include ' | 13 | ForEach-Object { $_ -replace 'Include ', '' } | 14 | ForEach-Object { GetHosts "$SSHFolder/$_" } 15 | 16 | $Hosts += GetHosts "$SSHConfig" 17 | $HostMatches = $( 18 | $Hosts | Where-Object { $_ -like "$Partial*" } | ForEach-Object { $_ } 19 | ) 20 | 21 | return $HostMatches 22 | } 23 | 24 | # Find all hosts from SSH config file. 25 | function GetHosts($ConfigPath) { 26 | $Text = $(Get-Content -Path $ConfigPath) 27 | $Lines = $($Text | Select-String -Pattern '^Host ') 28 | $Hosts = $($Lines | ForEach-Object { $_ -replace 'Host ', '' } | 29 | ForEach-Object { $_ -split ' ' } | Sort-Object -Unique 30 | ) 31 | 32 | return $Hosts | Select-String -Pattern '^.*[*!?].*$' -NotMatch 33 | } 34 | 35 | Register-ArgumentCompleter -Native -CommandName 'scp', 'sftp', 'ssh' -ScriptBlock { 36 | param($WordToComplete) 37 | CompleteHosts $WordToComplete 38 | } 39 | -------------------------------------------------------------------------------- /test/unit/bootware.test.bats: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bats 2 | # shellcheck disable=SC2317 3 | 4 | setup() { 5 | REPO_PATH="${BATS_TEST_DIRNAME}/../.." 6 | cd "${REPO_PATH}" || exit 7 | load "${REPO_PATH}/.vendor/lib/bats-assert/load" 8 | load "${REPO_PATH}/.vendor/lib/bats-file/load" 9 | load "${REPO_PATH}/.vendor/lib/bats-support/load" 10 | bats_require_minimum_version 1.5.0 11 | 12 | # Disable logging to simplify stdout for testing. 13 | export BOOTWARE_NOLOG='true' 14 | } 15 | 16 | bootware_throws_error_for_unknown_subcommand() { # @test 17 | run bash src/bootware.sh notasubcommand 18 | assert_failure 2 19 | assert_output --partial "No such subcommand or option 'notasubcommand'" 20 | } 21 | 22 | function_find_config_path_returns_given_executable_files() { # @test 23 | BATS_SOURCE_ONLY='true' source src/bootware.sh 24 | find_config_path '/bin/bash' 25 | actual="${RET_VAL}" 26 | assert_equal "${actual}" '/bin/bash' 27 | } 28 | 29 | function_find_config_path_returns_environment_variable() { # @test 30 | BATS_SOURCE_ONLY='true' source src/bootware.sh 31 | BOOTWARE_CONFIG='/usr/bin/cat' find_config_path 32 | actual="${RET_VAL}" 33 | assert_equal "${actual}" '/usr/bin/cat' 34 | } 35 | 36 | function_find_config_path_returns_default_when_given_non_executable_file() { # @test 37 | BATS_SOURCE_ONLY='true' source src/bootware.sh 38 | find_config_path '/dev/null' 39 | actual="${RET_VAL}" 40 | assert_equal "${actual}" "${HOME}/.bootware/config.yaml" 41 | } 42 | -------------------------------------------------------------------------------- /test/e2e/alpm.dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/archlinux:latest AS build 2 | 3 | ARG version 4 | 5 | RUN pacman --noconfirm --refresh --sync --sysupgrade \ 6 | && pacman --noconfirm --sync base-devel pacman-contrib perl 7 | 8 | # Create non-priviledged user and grant user passwordless sudo. 9 | RUN useradd --create-home --no-log-init arch \ 10 | && groupadd sudo \ 11 | && usermod --append --groups sudo arch \ 12 | && printf "arch ALL=(ALL) NOPASSWD:ALL\n" >> /etc/sudoers 13 | 14 | ENV HOME=/home/arch USER=arch 15 | USER arch 16 | 17 | # Copy bootware package build files. 18 | COPY --chown="${USER}" data/ /bootware/data/ 19 | COPY --chown="${USER}" script/ /bootware/script/ 20 | COPY --chown="${USER}" src/ /bootware/src/ 21 | 22 | WORKDIR /bootware 23 | 24 | # Build Arch package. 25 | RUN script/pkg.sh --version "${version?}" alpm 26 | 27 | FROM scratch AS dist 28 | 29 | COPY --from=build /bootware/build/dist/ / 30 | 31 | FROM docker.io/archlinux 32 | 33 | ARG version 34 | 35 | RUN pacman --noconfirm --refresh --sync --sysupgrade \ 36 | && pacman --noconfirm --sync perl 37 | 38 | # Pull Arch package from previous Docker stage. 39 | COPY --from=build /bootware/build/dist/ . 40 | 41 | # Verify checksum for Arch package. 42 | RUN sha512sum --check "bootware-${version}-0-any.pkg.tar.zst.sha512" 43 | 44 | # Install Arch package. 45 | RUN pacman --noconfirm --upgrade "./bootware-${version}-0-any.pkg.tar.zst" 46 | 47 | # Test package was installed successfully. 48 | RUN bootware --help 49 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/yazi/files/yazi.toml: -------------------------------------------------------------------------------- 1 | # Yazi configuration file for file management. 2 | # 3 | # For more information, visit https://yazi-rs.github.io/docs/configuration/yazi. 4 | 5 | [mgr] 6 | ratio = [0, 1, 2] 7 | 8 | [open] 9 | prepend_rules = [ 10 | { mime = "audio/*", use = [ 11 | "sound", 12 | "reveal", 13 | ] }, 14 | { mime = "image/*", use = [ 15 | "show", 16 | "reveal", 17 | ] }, 18 | ] 19 | 20 | [opener] 21 | edit = [ 22 | { block = true, desc = "$EDITOR", for = "unix", run = '${EDITOR:-vi} "$@"' }, 23 | { block = true, desc = "%EDITOR%", for = "windows", run = '%EDITOR% %*' }, 24 | ] 25 | show = [ 26 | { block = true, desc = "chafa", for = "unix", run = 'chafa --clear --align center --duration infinite --scale max "$1"; clear' }, 27 | { block = true, desc = "chafa", for = "windows", run = 'chafa --clear --align center --duration infinite --scale max %1; clear' }, 28 | { block = true, desc = "mediainfo", for = "unix", run = 'mediainfo "$1"; echo "Press enter to exit"; read _' }, 29 | ] 30 | sound = [ 31 | { block = true, desc = "mpv", for = "unix", run = 'mpv --no-video "$1"; clear' }, 32 | { block = true, desc = "mpv", for = "windows", run = 'mpv --no-video %1; clear' }, 33 | { block = true, desc = "mediainfo", for = "unix", run = 'mediainfo "$1"; echo "Press enter to exit"; read _' }, 34 | ] 35 | 36 | [plugin] 37 | preloaders = [] 38 | 39 | [preview] 40 | max_height = 1080 41 | max_width = 1920 42 | 43 | [tasks] 44 | image_bound = [0, 0] 45 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/vim/files/vimrc: -------------------------------------------------------------------------------- 1 | " Vim configuration file for text editing. 2 | " 3 | " For more information, visit https://vimhelp.org/usr_05.txt.html. 4 | 5 | " General settings. 6 | 7 | highlight linenr ctermbg=lightgrey 8 | set backspace=indent,eol,start " Make insert mode backspace always delete. 9 | set belloff=all " Disable error sounds. 10 | set hlsearch " Highlight all search results. 11 | set laststatus=2 " Always show the status line. 12 | set nohlsearch " Disable search highlights since they persist. 13 | set number " Show line numbers. 14 | set ruler " Show row and column rulers. 15 | set showmatch " Highlight matching braces. 16 | set statusline=\ %f\ %m%=%l:%c\ \ %{&fileformat}\ 17 | set wildmenu " Enable tab completion menu in command prompt. 18 | 19 | " Enable syntax highlighting if supported. 20 | if has('syntax') 21 | syntax enable 22 | endif 23 | 24 | " Cursor settings. 25 | 26 | set guicursor=a:ver100 27 | 28 | " Indentation settings. 29 | 30 | set autoindent " Auto-indent new lines. 31 | set expandtab 32 | set shiftwidth=4 " Number of auto-indent spaces. 33 | set smartindent " Enable smart-indent. 34 | set smarttab " Enable smart-tabs. 35 | set softtabstop=4 " Number of spaces per Tab. 36 | set tabstop=4 37 | 38 | " Keybinding settings. 39 | 40 | noremap ; l 41 | noremap l k 42 | noremap k j 43 | noremap j h 44 | inoremap j 45 | inoremap k 46 | inoremap l 47 | inoremap ; 48 | vmap y ygv " Yank text without moving cursor. 49 | 50 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/firefox/tasks/ubuntu.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Check if Firefox is a Snap package for Ubuntu 3 | ansible.builtin.command: 4 | cmd: snap list firefox 5 | become: true 6 | changed_when: false 7 | failed_when: false 8 | register: firefox_snap_list 9 | tags: 10 | - install 11 | 12 | - name: Uninstall Firefox Snap package for Ubuntu 13 | ansible.builtin.command: 14 | cmd: snap remove --purge firefox 15 | become: true 16 | changed_when: "'firefox removed' in firefox_snap_purge.stdout" 17 | register: firefox_snap_purge 18 | tags: 19 | - install 20 | when: "'mozilla' in firefox_snap_list.stdout" 21 | 22 | - name: Add Mozilla repository for Ubuntu 23 | ansible.builtin.apt_repository: 24 | filename: mozilla 25 | repo: ppa:mozillateam/ppa 26 | state: present 27 | become: true 28 | tags: 29 | - install 30 | 31 | - name: Prioritize Mozilla repository for Ubuntu 32 | ansible.builtin.copy: 33 | dest: /etc/apt/preferences.d/mozilla-firefox 34 | force: true 35 | mode: "644" 36 | src: preferences 37 | become: true 38 | tags: 39 | - install 40 | 41 | - name: Enable Mozilla repository upgrades for Ubuntu 42 | ansible.builtin.copy: 43 | dest: /etc/apt/apt.conf.d/51unattended-upgrades-firefox 44 | force: true 45 | mode: "644" 46 | src: upgrades 47 | become: true 48 | tags: 49 | - install 50 | 51 | - name: Install Firefox for Ubuntu 52 | ansible.builtin.apt: 53 | name: firefox 54 | become: true 55 | tags: 56 | - install 57 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/shellcheck/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install ShellCheck for Alpine 3 | become: true 4 | community.general.apk: 5 | name: shellcheck 6 | repository: http://dl-cdn.alpinelinux.org/alpine/edge/community 7 | state: latest 8 | update_cache: true 9 | tags: 10 | - install 11 | when: ansible_pkg_mgr == "apk" 12 | 13 | # Ansible pkgng module is case sensitive to package names, but pkg cli is not. 14 | - name: Install ShellCheck for FreeBSD 15 | become: true 16 | community.general.pkgng: 17 | name: hs-ShellCheck 18 | tags: 19 | - install 20 | when: ansible_system == "FreeBSD" 21 | 22 | - name: Install ShellCheck for Linux 23 | ansible.builtin.package: 24 | name: >- 25 | {{ 'ShellCheck' if ansible_pkg_mgr in ['dnf', 'zypper'] else 'shellcheck' 26 | }} 27 | become: true 28 | tags: 29 | - install 30 | when: ansible_system == "Linux" and ansible_pkg_mgr not in ["apk", "opkg"] 31 | 32 | - name: Install ShellCheck for MacOS 33 | become: true 34 | become_user: "{{ brew_user }}" 35 | community.general.homebrew: 36 | name: shellcheck 37 | tags: 38 | - install 39 | when: ansible_system == "Darwin" 40 | 41 | - name: Copy Shellcheck settings file for Unix 42 | ansible.builtin.copy: 43 | dest: "{{ user_home }}/.shellcheckrc" 44 | force: true 45 | group: "{{ group_id }}" 46 | mode: "644" 47 | owner: "{{ user_id }}" 48 | src: shellcheckrc 49 | become: true 50 | tags: 51 | - config 52 | when: ansible_system != "Win32NT" 53 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/lldb/files/lldbinit.py: -------------------------------------------------------------------------------- 1 | """LLDB settings script.""" 2 | 3 | # ruff: noqa: ARG001 4 | 5 | import re 6 | 7 | from lldb import SBCommandReturnObject, SBDebugger 8 | 9 | 10 | def cmd_cb( 11 | debugger: SBDebugger, 12 | command: str, 13 | result: SBCommandReturnObject, 14 | internal_dict: dict, 15 | ) -> None: 16 | """Add command to continue to temporary breakpoint.""" 17 | interpreter = debugger.GetCommandInterpreter() 18 | interpreter.HandleCommand(f"b {command}", result) 19 | if result.Succeeded(): 20 | match = re.match(r"^Breakpoint (\d):.*", result.GetOutput()) 21 | if match is None: 22 | return 23 | 24 | id_ = match.group(1) 25 | interpreter.HandleCommand("continue", result) 26 | interpreter.HandleCommand(f"breakpoint delete {id_}", result) 27 | 28 | 29 | def cmd_pdb( 30 | debugger: SBDebugger, 31 | command: str, 32 | result: SBCommandReturnObject, 33 | internal_dict: dict, 34 | ) -> None: 35 | """Add command to debug LLDBInit.""" 36 | breakpoint() # noqa: T100 37 | 38 | 39 | def __lldb_init_module(debugger: SBDebugger, internal_dict: dict) -> None: 40 | """LLDB entrypoint for customization.""" 41 | result = SBCommandReturnObject() 42 | interpreter = debugger.GetCommandInterpreter() 43 | 44 | interpreter.HandleCommand( 45 | "command script add --function lldbinit.cmd_cb cb", result 46 | ) 47 | interpreter.HandleCommand( 48 | "command script add --function lldbinit.cmd_pdb pdb", result 49 | ) 50 | -------------------------------------------------------------------------------- /.ansible-lint: -------------------------------------------------------------------------------- 1 | # Ansible Lint configuration file for settings role and playbook rules. 2 | # 3 | # For more information, visit 4 | # https://ansible.readthedocs.io/projects/lint/configuring. 5 | 6 | --- 7 | skip_list: 8 | # Main playbook should be one long play. 9 | - complexity[play] 10 | # Changelog is in root directory of project. It is copied into the collection 11 | # during publishing. 12 | - galaxy[no-changelog] 13 | # Requiring that collection version is greater than 1.0.0 is ridiculous. 14 | - galaxy[version-incorrect] 15 | # In Bootware, always using the latest Git commit is desired. 16 | - git-latest 17 | # Project should support older versions of Ansible. 18 | - meta-runtime[unsupported-version] 19 | # Setting pipefail may cause errors on Linux systems where Bash is not the 20 | # default shell. For more information, visit 21 | # https://github.com/ansible/ansible-lint/issues/497. 22 | - risky-shell-pipe 23 | # Variable names in package/defaults/main.yaml and variable/defaults/main.yaml 24 | # are chosen for user convenience. Since disabling an Ansible lint rule for an 25 | # entire file still gives a warning as specified at 26 | # https://ansible.readthedocs.io/projects/lint/configuring/#ignoring-rules-for-entire-files, 27 | # the variable naming rule is disabled. Maintainers should occasionally check 28 | # variable naming is consistent for all other files by commenting the next 29 | # line. 30 | - var-naming[no-role-prefix] 31 | # Prettier already enforces line length, so YamlLint only complains about long 32 | # URLs. 33 | - yaml[line-length] 34 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/ffmpeg/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install RPM Fusion for Fedora 3 | ansible.builtin.dnf: 4 | disable_gpg_check: true 5 | name: >- 6 | https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-{{ 7 | ansible_distribution_major_version }}.noarch.rpm 8 | become: true 9 | tags: 10 | - install 11 | when: ansible_pkg_mgr in ["dnf", "dnf5"] 12 | 13 | - name: Install FFmpeg for Fedora 14 | ansible.builtin.command: 15 | cmd: dnf swap --allowerasing --assumeyes ffmpeg-free ffmpeg 16 | become: true 17 | changed_when: "'Nothing to do' not in ffmpeg_install_fedora.stdout" 18 | register: ffmpeg_install_fedora 19 | tags: 20 | - install 21 | when: ansible_pkg_mgr in ["dnf", "dnf5"] 22 | 23 | - name: Install FFmpeg for FreeBSD 24 | become: true 25 | community.general.pkgng: 26 | name: ffmpeg 27 | tags: 28 | - install 29 | when: ansible_system == "FreeBSD" 30 | 31 | - name: Install FFmpeg for Linux 32 | ansible.builtin.package: 33 | name: ffmpeg 34 | become: true 35 | tags: 36 | - install 37 | when: ansible_system == "Linux" and ansible_pkg_mgr not in ["dnf", "dnf5"] 38 | 39 | - name: Install FFmpeg for MacOS 40 | become: true 41 | become_user: "{{ brew_user }}" 42 | community.general.homebrew: 43 | name: ffmpeg 44 | tags: 45 | - install 46 | when: ansible_system == "Darwin" 47 | 48 | - name: Install FFmpeg for Windows 49 | community.windows.win_scoop: 50 | global: true 51 | name: ffmpeg 52 | tags: 53 | - install 54 | when: ansible_system == "Win32NT" 55 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/hadolint/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Hadolint for Linux 3 | ansible.builtin.package: 4 | name: hadolint 5 | become: true 6 | ignore_errors: true 7 | register: hadolint_linux 8 | tags: 9 | - install 10 | when: ansible_system == "Linux" 11 | 12 | - name: Get latest Hadolint version for Linux 13 | ansible.builtin.uri: 14 | method: GET 15 | return_content: true 16 | url: https://formulae.brew.sh/api/formula/hadolint.json 17 | register: hadolint_formula 18 | tags: 19 | - install 20 | when: ansible_system == "Linux" and hadolint_linux is failed 21 | 22 | - name: Install Hadolint for Linux 23 | ansible.builtin.get_url: 24 | dest: /usr/local/bin/hadolint 25 | force: true 26 | mode: "755" 27 | url: >- 28 | https://github.com/hadolint/hadolint/releases/download/v{{ 29 | hadolint_formula.json.versions.stable }}/hadolint-Linux-{{ 30 | hadolint_arch[system_architecture] }} 31 | become: true 32 | tags: 33 | - install 34 | vars: 35 | hadolint_arch: 36 | amd64: x86_64 37 | arm64: arm64 38 | when: ansible_system == "Linux" and hadolint_linux is failed 39 | 40 | - name: Install Hadolint for MacOS 41 | become: true 42 | become_user: "{{ brew_user }}" 43 | community.general.homebrew: 44 | name: hadolint 45 | tags: 46 | - install 47 | when: ansible_system == "Darwin" 48 | 49 | - name: Install Hadolint for Windows 50 | community.windows.win_scoop: 51 | global: true 52 | name: hadolint 53 | tags: 54 | - install 55 | when: ansible_system == "Win32NT" 56 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/sops/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Sops for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: sops 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Sops for Linux 11 | ansible.builtin.package: 12 | name: sops 13 | become: true 14 | ignore_errors: true 15 | register: sops_linux 16 | tags: 17 | - install 18 | when: ansible_system == "Linux" 19 | 20 | - name: Get latest Sops version for Linux 21 | ansible.builtin.uri: 22 | method: GET 23 | return_content: true 24 | url: https://formulae.brew.sh/api/formula/sops.json 25 | register: sops_formula 26 | tags: 27 | - install 28 | when: ansible_system == "Linux" and sops_linux is failed 29 | 30 | - name: Install Sops for Linux 31 | ansible.builtin.get_url: 32 | dest: /usr/local/bin/sops 33 | force: true 34 | mode: "755" 35 | url: >- 36 | https://github.com/mozilla/sops/releases/download/v{{ 37 | sops_formula.json.versions.stable }}/sops-v{{ 38 | sops_formula.json.versions.stable }}.linux.{{ system_architecture }} 39 | become: true 40 | tags: 41 | - install 42 | when: ansible_system == "Linux" and sops_linux is failed 43 | 44 | - name: Install Sops for MacOS 45 | become: true 46 | become_user: "{{ brew_user }}" 47 | community.general.homebrew: 48 | name: sops 49 | tags: 50 | - install 51 | when: ansible_system == "Darwin" 52 | 53 | - name: Install Sops for Windows 54 | community.windows.win_scoop: 55 | global: true 56 | name: sops 57 | tags: 58 | - install 59 | when: ansible_system == "Win32NT" 60 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/prettier/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Prettier for Unix 3 | ansible.builtin.copy: 4 | content: | 5 | #!/usr/bin/env sh 6 | set -eu 7 | deno run --allow-all --no-config --quiet --node-modules-dir=none npm:prettier "$@" 8 | dest: /usr/local/bin/prettier 9 | force: true 10 | mode: "755" 11 | become: true 12 | tags: 13 | - install 14 | when: ansible_system != "Win32NT" 15 | 16 | - name: Install Prettier for Windows 17 | ansible.windows.win_copy: 18 | content: | 19 | @echo off 20 | deno run --allow-all --no-config --quiet --node-modules-dir=none npm:prettier %* 21 | dest: "C:\\Program Files\\Bin\\prettier.cmd" 22 | force: true 23 | tags: 24 | - install 25 | when: ansible_system == "Win32NT" 26 | 27 | - name: Copy Prettier settings file for Unix 28 | ansible.builtin.copy: 29 | dest: "{{ user_home }}/.prettierrc.yaml" 30 | force: true 31 | group: "{{ group_id }}" 32 | mode: "644" 33 | owner: "{{ user_id }}" 34 | src: prettierrc.yaml 35 | become: true 36 | tags: 37 | - config 38 | when: ansible_system != "Win32NT" 39 | 40 | - name: Copy Prettier settings file for Unix 41 | ansible.windows.win_copy: 42 | dest: "{{ user_home }}\\.prettierrc.yaml" 43 | force: true 44 | src: prettierrc.yaml 45 | tags: 46 | - config 47 | when: ansible_system == "Win32NT" 48 | 49 | - name: Set owner of Prettier file for Windows 50 | ansible.windows.win_owner: 51 | path: "{{ user_home }}\\.prettierrc.yaml" 52 | recurse: true 53 | user: "{{ user_id }}" 54 | tags: 55 | - config 56 | when: ansible_system == "Win32NT" 57 | -------------------------------------------------------------------------------- /ansible_collections/scruffaluff/bootware/roles/shfmt/tasks/main.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Install Shfmt for FreeBSD 3 | become: true 4 | community.general.pkgng: 5 | name: shfmt 6 | tags: 7 | - install 8 | when: ansible_system == "FreeBSD" 9 | 10 | - name: Install Shfmt for Linux 11 | ansible.builtin.package: 12 | name: shfmt 13 | become: true 14 | ignore_errors: true 15 | register: shfmt_linux 16 | tags: 17 | - install 18 | when: ansible_system == "Linux" 19 | 20 | - name: Get latest Shfmt version for Linux 21 | ansible.builtin.uri: 22 | method: GET 23 | return_content: true 24 | url: https://formulae.brew.sh/api/formula/shfmt.json 25 | register: shfmt_formula 26 | tags: 27 | - install 28 | when: ansible_system == "Linux" and shfmt_linux is failed 29 | 30 | - name: Install Shfmt for Linux 31 | ansible.builtin.get_url: 32 | dest: /usr/local/bin/shfmt 33 | force: true 34 | mode: "755" 35 | url: >- 36 | https://github.com/mvdan/sh/releases/download/v{{ 37 | shfmt_formula.json.versions.stable }}/shfmt_v{{ 38 | shfmt_formula.json.versions.stable }}_linux_{{ system_architecture }} 39 | become: true 40 | tags: 41 | - install 42 | when: ansible_system == "Linux" and shfmt_linux is failed 43 | 44 | - name: Install Shfmt for MacOS 45 | become: true 46 | become_user: "{{ brew_user }}" 47 | community.general.homebrew: 48 | name: shfmt 49 | tags: 50 | - install 51 | when: ansible_system == "Darwin" 52 | 53 | - name: Install Shfmt for Windows 54 | community.windows.win_scoop: 55 | global: true 56 | name: shfmt 57 | tags: 58 | - install 59 | when: ansible_system == "Win32NT" 60 | -------------------------------------------------------------------------------- /src/completion/bootware.man: -------------------------------------------------------------------------------- 1 | \" Bootware man page, written in the Troff markup language. 2 | \" 3 | \" For a tutorial on writing man pages in Troff, visit https://liw.fi/manpages. 4 | \" For a man page macro reference, visit https://linux.die.net/man/7/man. 5 | 6 | .TH BOOTWARE 1 7 | 8 | .SH NAME 9 | bootware \- bootstrap software installations with Ansible 10 | 11 | .SH SYNOPSIS 12 | .B bootware 13 | [-h|--help|-v|--version] 14 | .PP 15 | .B bootware 16 | bootstrap [OPTIONS] 17 | .PP 18 | .B bootware 19 | config [OPTIONS] 20 | .PP 21 | .B bootware 22 | roles [OPTIONS] 23 | .PP 24 | .B bootware 25 | setup [OPTIONS] 26 | .PP 27 | .B bootware 28 | update [OPTIONS] 29 | .PP 30 | .B bootware 31 | uninstall [OPTIONS] 32 | 33 | .SH DESCRIPTION 34 | .B Bootware 35 | bootstraps software installations with Ansible. 36 | 37 | .SH OPTIONS 38 | .TP 39 | .BR \-\-debug 40 | Enable shell debug traces 41 | .TP 42 | .BR \-h ", " \-\-help 43 | Print help information 44 | .TP 45 | .BR \-h ", " \-\-version 46 | Print vesrion information 47 | 48 | .SH COMMANDS 49 | Use "bootware -h" or "bootware \-\-help" to get an overview of available 50 | commands. 51 | 52 | .SH EXAMPLES 53 | .PP 54 | For specific client examples please see the man page for the specific Bootware 55 | command. For example: 56 | 57 | .PP 58 | .RS 59 | 60 | .nf 61 | man bootware\-bootstrap 62 | 63 | .fi 64 | .RE 65 | 66 | .SH ENVIRONMENT 67 | 68 | .SH FILES 69 | 70 | .SH AUTHOR 71 | Macklan Weinstein 72 | 73 | .SH COPYRIGHT 74 | Copyright © 2021-Present Macklan Weinstein. Bootware is distributed under the 75 | MIT license. 76 | 77 | .SH SEE ALSO 78 | Full documentation is available at . 79 | --------------------------------------------------------------------------------