├── .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 |
--------------------------------------------------------------------------------