install.fairie/scripts/software.yml.backup
2024-03-23 06:29:45 -04:00

13609 lines
560 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# eslint-disable eslint-comments/disable-enable-pair, max-len, max-lines, no-warning-comments
#
# `softwarePackages` is a map of possible package managers to use while installing a program. The installer will
# look at the `installerPreference` variable and find the first package manager that is in the package's possible
# installation method and then use that. It is also sensitive to the type of operating system so a package with
# only `apt` defined will not install on macOS.
#
# Everything should be fairly straight forward. Take a look at the `installerPreference` for a list of package managers. If a package
# has dependencies, the dependencies are defined under the `_deps` key. All of the `_deps` should also be defined in the
# `softwarePackages` map. The installer will check for the presence of the package's key in the PATH. If the package's key
# does not match the executable's name, then the `_bin` key can be defined so that the installer will look at that instead.
#
# Full example of a softwarePackage:
# altair:
# _appimageName: SwitchHosts.AppImage # Name of file that the appimage: field downloads to
# _bin: ng # Instead of checking if the object key (altair) is in the PATH, check if "ng" is in the PATH and only proceed if it is not available
# _deps: # Any piece of data can be a string or array. _deps will take each dep and run that through the installer first. If you need to just install dependencies with apt (for instance), you can also set the _deps equals to [altair:deps] and then define the apt dependencies like that instead of creating a new entry for each apt dependency.
# - angular-cli
# _docker: docker run --rm bannmann/docker-cheat # Command that the _bin value should alias to (similar to Whalebrew)
# _groups: # Groups that should be created / user added to
# - docker
# _when: | # Run the script defined with _when and only proceed if it exits with a 0
# test -f /usr
# _pre: |
# echo "_pre allows you to define a script that runs before the installation"
# _post:brew:debian: |
# echo "_post allows you to define a script that runs after the installation"
# _service: smbd # System service to enable, restart, and/or start (can also be an array).
# _restricted: true # True if it should be skipped on a restricted machine (i.e. a work machine).
# _epel: true # True if https://docs.fedoraproject.org/en-US/epel/ should be enabled
# ansible: professormanhattan.docker
# apk: altair
# appimage: https://developers.yubico.com/yubikey-manager-qt/Releases/yubikey-manager-qt-1.2.4b-linux.AppImage
# appinstaller: https://example.com/package.appinstaller # TODO - https://pieces.app has example of this type of file
# basher: xwmx/nb
# binary:darwin: https://dl.min.io/client/mc/release/darwin/mc # Any piece of data can have the OS type (darwin, linux, windows) or release ID (arch, debian, ubuntu, centos, fedora) added to the end. The script will try to execute it first before trying to run other items.
# binary:linux: https://dl.min.io/client/mc/release/linux-amd64/mc
# binary:windows: https://dl.min.io/client/mc/release/windows-amd64/mc.exe
# bpkg: xwmx/nb
# brew: altair
# cargo: tree-sitter-cli
# cask: altair-graphql-client
# crew: altair
# choco: altair-graphql
# _rpmFusion: true # Enable the RPM Fusion Free repository if true
# dnf: altair
# flatpak: com.yubico.yubioath
# gem: altair
# go: github.com/ProfessorManhattan/blockinfile@latest
# krew:
# - ctx
# - ns
# nix: emplace
# npm: altair
# pacman: altair
# pipx: altair
# pkg-darwin: https://google.com/macos-pkgfile.pkg
# pkg-freebsd: altair
# pkg-termux: altair
# port: altair
# scoop: altair
# script >-
# curl -sS https://getcomposer.org/installer | php
# sudo mv composer.phar /usr/local/bin/composer
# sudo chmod +x /usr/local/bin/composer
# _snapClassic: true # Install the snap in classic mode
# snap: altair
# whalebrew:
# winget: Neovim.Neovim
# xbps: altair
# yay: altair
# zypper: altair
# angular-cli:
# _bin: ng # Only install if "ng" is not available in the PATH
# _name: Gitify # Pretty name of the package
# _home: https://angular.io/ # Homepage if there is one
# _desc: GitHub notifications on the menu bar # Short description of the package
# _docs: https://docs.angular.io/ # Link to documentation (if available)
# _github: https://github.com/manosim/gitify # GitHub link to the package
# _type: menubar # Type of package (either application, cli, webapp, or menubar)
# npm:
# - '@angular/cli'
# - gulp
installerPreference:
apt:
- flatpak
- snap
- whalebrew
- apt
- brew
- go
- cargo
- npm
- pipx
- pip
- gem
- appimage
- script
- ansible
- binary
darwin:
- whalebrew
- cask
- brew
# Removed because port installation from default list because encountered this error: Creating user "macports" make: *** [install] Killed: 9 --- might be due to remote managed macOS settings.
# - port
- go
- cargo
- npm
- pipx
- pip
- gem
- pkg-darwin
- script
- ansible
- binary
dnf:
- flatpak
- snap
- whalebrew
- dnf
- brew
- go
- cargo
- npm
- pipx
- pip
- gem
- appimage
- script
- ansible
- binary
freebsd:
- pkg
- go
- cargo
- npm
- gem
- script
pacman:
- flatpak
- snap
- whalebrew
- pacman
- brew
- yay
- go
- cargo
- npm
- pipx
- pip
- gem
- appimage
- script
- ansible
- binary
ubuntu:
- snap
- flatpak
- whalebrew
- apt
- brew
- go
- cargo
- npm
- pipx
- pip
- gem
- appimage
- script
- ansible
- binary
windows:
- choco
- scoop
- winget
- go
- cargo
- npm
- pipx
- gem
- script
- ansible
- binary
zypper:
- flatpak
- snap
- whalebrew
- zypper
- brew
- go
- cargo
- npm
- pipx
- gem
- appimage
- script
- ansible
- binary
softwarePackages:
_envchain:deps:
_github: false
apt:
- gnome-keyring
- gcc
- gnome-keyring
- libsecret-1-dev
- make
- libreadline-dev
dnf:
- gcc
- gnome-keyring
- libsecret-devel
- make
- readline-devel
pacman:
- gcc
- gnome-keyring
- libsecret
- make
- readline
_kde:
_github: false
_deps:
- kde-plasma-desktop
_misc-flatpaks:
_github: false
_deps:
- bottles
- cockpit-client
- connections
- dconf-editor
- deja-dup
- dialect
- drawing
- flatseal
- forklift
- gnome-calendar
- gnome-document-viewer
- gnome-extension-manager
- gnome-eyedropper
- gnome-file-roller
- gnome-image-viewer
- gnome-network-displays
- gnome-passwords-keys
- gnome-photos
- gnome-sound-recorder
# OSes usually have a text editor preinstalled
# - gnome-text-editor
- gnome-video-player
- gnome-weather
- junction
- kooha
- newsflash
- pinapp
- vup
- warp-transfer
- web-font-generator
- what-ip
- live-captions
- libre-menu-editor
- iso-image-writer
- trayscale
_nautilus-extensions:
_github: false
_deps:
- nautilus-brasero
- nautilus-gtkhash
- nautilus-gsconnect
- nautilus-image-converter
- nautilus-python
- nautilus-seahorse
- nautilus-search-tool
- nautilus-share
- nautilus-wipe
ack:
_bin: ack
_github: https://github.com/beyondgrep/ack3
_name: Ack
apt: ack
brew: ack
choco: ack
dnf: ack
pacman: ack
port: perl/p5-app-ack
act:
_bin: act
_desc: '[Act](https://github.com/nektos/act) Run GitHub actions locally'
_docs: https://github.com/nektos/act#example-commands
_github: https://github.com/nektos/act
_home: https://github.com/nektos/act
_name: Act
brew: act
choco: act-cli
go: github.com/nektos/act@
nix: nixpkgs.act
port: act
scoop: act
yay: act
adobe-creative-cloud:
_bin: adobe-creative-cloud
_name: Adobe Creative Cloud
_github: false
_when:cask: '! test -d "/Applications/Adobe Creative Cloud" && ! test -d "$HOME/Applications/Adobe Creative Cloud"'
cask: adobe-creative-cloud
ai-shell:
_bin: ai
_github: https://github.com/BuilderIO/ai-shell
_name: AI Shell
npm: '@builder.io/ai-shell'
aiac:
_bin: aiac
_github: https://github.com/gofireflyio/aiac
_name: AIAC
brew: gofireflyio/aiac/aiac
go: github.com/gofireflyio/aiac/v3@latest
aicommits:
_bin: aicommits
_github: https://github.com/Nutlope/aicommits
_name: AI Commits
brew: aicommits
npm: aicommits
aider:
_bin: aider
_github: https://github.com/paul-gauthier/aider
_name: Aider AI Chat
pipx: aider-chat
aifiles:
_bin: aifiles
_deps:
- pandoc
- exiftool
- poppler
- csvkit
_github: https://github.com/jjuliano/aifiles
_name: AI Files
_todo: Implement this when XDG spec is supported so we can store configs in ~/.config
npm: aifiles
airdrop-cli:
_bin: airdrop
_github: https://github.com/vldmrkl/airdrop-cli
_name: Airdrop CLI
brew:darwin: vldmrkl/formulae/airdrop-cli
airtame:
_app: Airtame.app
_bin: airtame
_github: false
_name: Airtame
cask: airtame
choco: airtame
flatpak: com.airtame.Client
snap: airtame-application
alda:
_bin: alda
_github: https://github.com/alda-lang/alda
_name: Alda
brew: alda
allure:
_bin: allure
_desc: '[Allure Report](https://docs.qameta.io/allure-testops/) is a flexible, lightweight multi-language test reporting tool. It provides clear graphical reports and allows everyone involved in the development process to extract the maximum of information from the everyday testing process.'
_docs: https://docs.qameta.io/allure-report/
_github: https://github.com/allure-framework/allure2
_home: https://docs.qameta.io/allure-testops/
_name: Allure
_post:binary:darwin: |
#!/usr/bin/env bash
echo "TODO"
_post:binary:linux: |
#!/usr/bin/env bash
# TODO How to pass the path of the file downloaded in `binary` step? That can replace the `wget` command below
mkdir -p /usr/local/share/allure
cd /usr/local/share/allure
wget https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.20.1/allure-commandline-2.20.1.zip -O /usr/local/share/allure/allure.zip
unzip -o allure.zip
ln -s /usr/local/share/allure/allure<version>/bin/allure
_post:binary:windows: |
# TODO
binary: https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.20.1/allure-commandline-2.20.1.zip
# TODO: Find latest version from https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/maven-metadata.xml and use it in the _binary_ URL
brew: allure
scoop: allure
yay: allure
alt-tab:
_app: AltTab.app
_bin: alt-tab
_github: https://github.com/lwouis/alt-tab-macos
_name: Alt+Tab for macOS that works like alt+tab on Windows
cask: alt-tab
altair:
_app: Altair GraphQL Client.app
_bin:snap: altair
_desc: '[Altair GraphQL Client](https://altairgraphql.dev/) A beautiful feature-rich GraphQL Client for all platforms.'
_docs: https://altairgraphql.dev/docs/
_env:
ALTAIR_APPDATA:
cask: "$HOME/Library/Application Support/Altair GraphQL Client"
choco: "TODO"
snap: "$HOME/snap/altair/current/.config/Altair GraphQL Client"
_github: https://github.com/altair-graphql/altair
_home: https://altairgraphql.dev/
_name: Altair GraphQL Client
cask: altair-graphql-client
choco: altair-graphql
snap: altair
yay: altair
amethyst:
_app: Amethyst.app
_bin: amethyst
_github: https://github.com/ianyh/Amethyst
_name: Amethyst
cask: amethyst
android-commandlinetools:
_bin: false
_deps:
- java
_github: false
_name: Android Studio Command Line Tools
_when:cask: '! test -d "${HOMEBREW_PREFIX:-/opt/homebrew}/share/android-commandlinetools"'
cask: android-commandlinetools
android-platform-tools:
_bin: adb
_github: false
_name: Android Platform Tools
cask: android-platform-tools
android-studio:
_app: Android Studio.app
_github: false
_bin: android-studio
_deps:
- android-commandlinetools
- java
_desc: >-
[Android Studio](https://developer.android.com/studio) is the official integrated development environment for Google's Android operating system, built on JetBrains' IntelliJ IDEA software and designed specifically for Android development. This role installs Android Studio on nearly any operating system and also ensures a configurable list of command-line tools and SDKs are installed and seamlessly integrated with the system (i.e. the role adds the appropriate items to the `PATH` environment variable).
_docs: https://developer.android.com/docs
_env:
ANDROID_STUDIO_APPDATA:
cask: "TODO"
choco: "TODO"
flatpak: "TODO"
snap: "TODO"
_home: https://developer.android.com/studio
_name: Android Studio
cask: android-studio
choco: androidstudio
flatpak: com.google.AndroidStudio
snap: android-studio
yay: android-studio
angular-cli:
_bin: ng
_desc: '[Angular](https://angular.io) The web development framework for building the future'
_docs: https://angular.io/docs
_github: https://github.com/angular/angular
_home: https://angular.io
_name: Angular
brew: angular-cli
npm: '@angular/cli'
ansible:
_bin: ansible
_desc: '[Ansible](https://www.ansible.com/) Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy and maintain'
_docs: https://docs.ansible.com/
_github: https://github.com/ansible/ansible
_home: https://www.ansible.com/
_name: Ansible
_post:pipx: |
#!/usr/bin/env bash
pipx inject ansible PyObjC PyObjC-core docker lxml netaddr pexpect python-vagrant pywinrm requests-credssp watchdog
# brew: ansible
# dnf: ansible
pipx: ansible
ansible-lint:
_bin: ansible-lint
_desc: '[Ansible Lint](https://github.com/ansible/ansible-lint/) is a command-line tool for linting playbooks, roles and collections aimed toward any Ansible users'
_docs: https://ansible-lint.readthedocs.io/
_github: https://github.com/ansible/ansible-lint/
_home: https://github.com/ansible/ansible-lint/
_name: Ansible Lint
pipx: ansible-lint
ansibleconnect:
_bin: ansibleconnect
_deps:
- sshpass
- tmux
_desc: '[ansibleconnect](https://github.com/psykulsk/ansibleconnect) allows you to connect to all hosts from the inventory with one command'
_docs: https://github.com/psykulsk/ansibleconnect
_github: https://github.com/psykulsk/ansibleconnect
_home: https://github.com/psykulsk/ansibleconnect
_name: Ansibleconnect
pipx: ansibleconnect
ansibler:
_bin: ansibler
_desc: Megabyte Labs Python project used to extract test information from Molecule and save it as JSON that can be rendered into charts
_docs: https://pypi.org/project/ansibler/
_github: https://github.com/megabyte-labs/ansibler
_home: https://pypi.org/project/ansibler/
_name: Ansibler
pipx: ansibler
ansifilter:
_bin: ansifilter
_name: Ansifilter
_github: false
brew: ansifilter
choco: ansifilter
port: ansifilter
apktool:
_bin: apktool
_github: https://github.com/iBotPeaches/Apktool
_name: APKTool
brew: apktool
choco: apktool
appium:
_bin: appium
_desc: '[Appium](https://appium.io/) is an open source automation tool for running scripts and testing native applications, mobile-web applications and hybrid applications on Android or iOS using a webdriver.'
_docs: https://appium.io/docs/en/about-appium/intro/
_github: https://github.com/appium/appium
_home: https://appium.io/
_name: Appium
_service: appium
brew: appium
npm: appium
appium-desktop:
_app: Appium Server GUI.app
_bin: appium-desktop
_github: https://github.com/appium/appium-desktop
_name: Appium Desktop
appimage: appium/appium-desktop
cask: appium
choco: appium-desktop
appium-inspector:
_app: Appium Inspector.app
_bin: appium-inspector
_github: https://github.com/appium/appium-inspector
_name: Appium Inspector
appimage: appium/appium-inspector
cask: appium-inspector
choco: appium-desktop
appnest-readme:
_bin: readme
_desc: '[Readme](https://github.com/andreasbm/readme/) automatically generate a beautiful best-practice README file based on the contents of your repository'
_docs: https://github.com/andreasbm/readme/
_github: https://github.com/andreasbm/readme/
_home: https://github.com/andreasbm/readme/
_name: Readme
npm: '@appnest/readme'
apprise:
_bin: apprise
_deps:
- pywin32
- terminal-notifier
_github: https://github.com/caronc/apprise
_name: Apprise
dnf: apprise
pipx: apprise
apt-cacher-ng:
_bin: null
_desc: '[Apt-Cacher-NG](https://wiki.debian.org/AptCacherNg) is a caching proxy server (or apt proxy) for Debian based distributions like Ubuntu, Kubuntu, Xubuntu, Edubuntu, Linux Mint, etc, which is used to cache the downloaded packages locally on your server.'
_docs: https://www.unix-ag.uni-kl.de/~bloch/acng/html/index.html
_github: https://salsa.debian.org/blade/apt-cacher-ng
_home: https://wiki.debian.org/AptCacherNg
_name: AptCacherNG
_systemd: apt-cacher-ng
ansible: professormanhattan.aptcacherng
aqua:
_bin: aqua
_desc: '[aqua](https://aquaproj.github.io/) is a Declarative CLI Version manager written in Go. It supports Lazy Install, Registry, and continuous update with Renovate.'
_docs: https://aquaproj.github.io
_github: https://github.com/aquaproj/aqua
_home: https://aquaproj.github.io
_name: aqua
_post: |
#!/usr/bin/env bash
# @file Aqua Initialization
# @brief Updates and installs any Aqua dependencies that are defined in Aqua's configuration file.
# @description
# This script updates Aqua and then installs any Aqua dependencies that are defined.
if command -v aqua > /dev/null; then
logg info 'Updating Aqua'
aqua update-aqua
logg info 'Installing Aqua dependencies (if any are defined)'
aqua install -a
else
logg info 'Skipping aqua install script because aqua was not installed'
fi
binary:linux: https://github.com/aquaproj/aqua/releases/download/v2.0.0-0/aqua_linux_amd64.tar.gz
binary:windows: https://github.com/aquaproj/aqua/releases/download/v2.0.0-0/aqua_windows_amd64.tar.gz
brew: aquaproj/aqua/aqua
go: github.com/aquaproj/aqua/v2/cmd/aqua@latest
arduino-ide:
_app: Arduino.app
_bin: arduino
_github: https://github.com/arduino/arduino-ide
cask: arduino
choco: arduino
flatpak: cc.arduino.IDE2
argc:
_bin: argc
_github: https://github.com/sigoden/argc
_name: Argc
cargo: argc
argo-cli:
_bin: argocd
_desc: ArgoCD is a declarative GitOps continuous delivery platform.
_docs: https://argoproj.github.io/argo-workflows/walk-through/argo-cli/
_github: https://github.com/argoproj/argo-cd
_home: https://argo-cd.readthedocs.io/en/stable/
_name: argo
brew: argocd
choco: argocd-cli
github: https://github.com/argoproj/argo-workflows
pacman:
- argocd
- argocd-cli
aria2:
_bin: aria2c
_desc: '[aria2](https://aria2.github.io/) is a lightweight multi-protocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. [AriaNg](http://ariang.mayswind.net/) is a modern web frontend that makes working with aria2 easier.'
_docs: https://aria2.github.io/manual/en/html/
_github: https://github.com/aria2/aria2
_name: Aria2/AriaNg
ansible: professormanhattan.aria
apt: aria2
brew: aria2
choco: aria2
dnf:fedora: aria2
pacman: aria2
port: aria2
scoop: aria2
ariang:
_app: AriaNg Native.app
_github: https://github.com/mayswind/AriaNg
cask: ariang
arping:
_bin: arping
_github: https://github.com/ThomasHabets/arping
_name: ARPing
apt: arping
brew: arping
choco: arping
dnf: arping
pacman: arping
asciinema:
_bin: asciinema
_desc: '[Asciinema](https://asciinema.org) allows you to record and share your terminal sessions, the simple way'
_docs: https://asciinema.org/docs/
_github: https://github.com/asciinema/asciinema
_home: https://asciinema.org/
_name: asciinema
apk: asciinema
apt: asciinema
brew: asciinema
dnf: asciinema
pacman: asciinema
pipx: asciinema
asdf:
_bin: asdf
_desc: '[asdf](https://asdf-vm.com/#/) is a CLI tool that can manage multiple language runtime versions on a per-project basis or globally. It is like gvm, nvm, rbenv, and pyenv all in one. This role installs asdf on Linux or macOS.'
_docs: https://asdf-vm.com/guide/introduction.html
_github: https://github.com/asdf-vm/asdf
_home: https://asdf-vm.com/
_name: asdf-vm
ansible: professormanhattan.asdf
assh:
_bin: assh
_desc: '[assh](https://manfred.life/assh) makes your ssh client smarter'
_docs: https://github.com/moul/assh
_github: https://github.com/moul/assh
_home: https://manfred.life/assh
_name: assh
brew: assh
go: moul.io/assh/v2
yay: assh
astronvim:
_deps:
- bottom
- lazygit
- neovim
- node
- python
- ripgrep
- tree-sitter
_desc: '[AstroNvim](https://astronvim.github.io/) is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins'
_docs: https://astronvim.github.io/
_github: https://github.com/AstroNvim/AstroNvim
_home: https://astronvim.github.io/
_name: AstroNvim
# TODO: Add timeouts to all commands in install-program
_post: |
#!/usr/bin/env bash
echo "Waiting on command that installs nvim plugins"
# bash -ci "nvim --headless -c 'quitall'"
atuin:
_bin: atuin
_github: https://github.com/ellie/atuin
_name: Atuin
_post: |
#!/usr/bin/env bash
source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/private.sh"
atuin register -u "$ATUIN_USERNAME" -e "$ATUIN_EMAIL" -p "$ATUIN_PASSWORD"
atuin import auto
atuin sync
brew: atuin
cargo: atuin
pacman: atuin
pkg-termux: atuin
port: atuin
audacity:
_app: Audacity.app
_bin: audacity
_desc: An open-source audio editor
_docs: https://support.audacityteam.org/
_github: https://github.com/audacity/audacity
_home: https://www.audacityteam.org/
_name: Audacity
appimage: Audacity
apt: audacity
cask: audacity
choco: audacity
dnf: audacity
flatpak: org.audacityteam.Audacity
scoop: extras/audacity
snap: audacity
auto-install:
_bin: auto-install
_desc: '[auto-install](https://github.com/siddharthkp/auto-install) installs dependencies as you code'
_docs: https://github.com/siddharthkp/auto-install
_github: https://github.com/siddharthkp/auto-install
_home: https://github.com/siddharthkp/auto-install
_name: auto-install
npm: auto-install
autodoc:
_bin: doc
_github: https://github.com/context-labs/autodoc
_name: Autodoc
npm: '@context-labs/autodoc'
autokey:
_bin: null
_desc: '[AutoKey](https://github.com/autokey/autokey) is a free, open-source scripting application for Linux. AutoKey allows the user to define hotkeys and trigger phrases which expand to predefined text, automating frequent or repetitive tasks such as correcting typographical errors or common spelling mistakes and inserting boiler plate sections of text. [AutoHotKey](https://www.autohotkey.com/) is a similar piece of software that is only available on the Windows platform.'
_docs: https://autokey.github.io/
_github: https://github.com/autokey/autokey
_home: https://code.google.com/archive/p/autokey/
_name: Autokey
ansible:linux: professormanhattan.autokey
ansible:windows: professormanhattan.autokey
apt: autokey
choco: autohotkey
dnf: autokey
yay: autokey-gtk
automake:
_bin: automake
_github: false
_desc: '[GNU Automake](https://www.gnu.org/software/automake/) is a tool for automatically generating Makefile.in files compliant with the GNU Coding Standards'
_docs: https://www.gnu.org/software/automake/manual/automake.html
_home: https://www.gnu.org/software/automake/
_name: GNU Automake
apk: automake
apt: automake
brew: automake
dnf: automake
pacman: automake
pkg: automake
autorestic:
_bin: autorestic
_desc: '[Autorestic](https://autorestic.vercel.app/) is a wrapper around [Restic](https://restic.net/). The Restic CLI can be a bit overwhelming and difficult to manage if you have many different location that you want to backup to multiple locations. Autorestic makes managing all your S3 backups easier by making it config / cron driven.'
_docs: https://autorestic.vercel.app/quick
_github: https://github.com/cupcakearmy/autorestic/
_home: https://autorestic.vercel.app/
_name: Autorestic
ansible: professormanhattan.autorestic
brew: autorestic
aws-shell:
_bin: aws-shell
_desc: An integrated shell for working with the AWS CLI.
_docs: https://github.com/awslabs/aws-shell
_github: https://github.com/awslabs/aws-shell
_home: https://pypi.org/project/aws-shell/
_name: AWS Shell
brew: aws-shell
pipx: aws-shell
awscli:
_bin: aws
_desc: 'The [AWS CLI](https://aws.amazon.com/cli/) is a unified tool to manage your AWS services. With just one tool to download and configure, you can control multiple AWS services from the command line and automate them through scripts.'
_docs: https://docs.aws.amazon.com/cli/index.html
_github: https://github.com/aws/aws-cli
_home: https://aws.amazon.com/
_name: AWS CLI
ansible: professormanhattan.awscli
binary:darwin: https://awscli.amazonaws.com/AWSCLIV2.pkg
binary:linux: https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip
binary:windows: https://awscli.amazonaws.com/AWSCLIV2.msi
brew: awscli@2
choco: awscli
awxcli:
_bin: awx
_desc: '[ansible-tower-cli](https://docs.ansible.com/ansible-tower/latest/html/towercli/index.html) is a CLI program that interacts with Ansible Tower or AWX. It is the official command-line client for both Ansible Tower and AWX. It uses naming and structure consistent with the AWX HTTP API, provides consistent output formats with optional machine-parsable formats, and auto-detects API versions, available endpoints, and feature support.'
_docs: https://docs.ansible.com/ansible-tower/latest/html/towercli/index.html
_github: https://github.com/ansible/awx
_home: https://docs.ansible.com/automation.html
_name: AWX CLI
ansible: professormanhattan.awxcli
pipx: https://releases.ansible.com/ansible-tower/cli/ansible-tower-cli-latest.tar.gz
axel:
_bin: axel
_github: https://github.com/axel-download-accelerator/axel
_name: Axel
apt: axel
brew: axel
choco: axel
dnf:fedora: axel
pacman: axel
port: axel
azure-cli:
_bin: az
_desc: 'The [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/) is a set of commands used to create and manage Azure resources. The Azure CLI is available across Azure services and is designed to get you working quickly with Azure, with an emphasis on automation. It is the official CLI, released by Microsoft.'
_docs: https://docs.microsoft.com/en-us/cli/azure/
_github: https://github.com/Azure/azure-cli
_home: https://azure.microsoft.com/
_name: Azure CLI
ansible: professormanhattan.azurecli
brew: azure-cli
choco: azure-cli
winget: Microsoft.AzureCLI
yay: azure-cli
azure-functions:
_bin: func
_desc: '[azure-functions-core-tools](https://github.com/Azure/azure-functions-core-tools) A local development experience for creating, developing, testing, running, and debugging Azure Functions'
_github: https://github.com/Azure/azure-functions-core-tools
_name: azure-functions-core-tools
brew: azure/functions/azure-functions-core-tools@4
choco: azure-functions-core-tools
github: github.com/Azure/azure-functions-core-tools
npm: azure-functions-core-tools@4
backup:
_bin: backup
_github: https://github.com/backup/backup
_name: Backup
gem: backup -v5.0.0.beta.1
balenaetcher:
_app: balenaEtcher.app
_appImageName: balenaEtcher.AppImage
_bin: null
_desc: '[balenaEtcher](https://www.balena.io/etcher/) is a powerful OS image flasher built with web technologies to ensure flashing an SDCard or USB drive is a pleasant and safe experience. It protects from accidentally writing to hard-drives, ensures every byte of data was written correctly, and much more. It can also directly flash Raspberry Pi devices that support USB device boot mode. It will run on any platform officially supported by Electron.'
_docs: https://www.balena.io/docs/learn/welcome/introduction/
_github: https://github.com/balena-io/etcher
_home: https://www.balena.io/etcher/
_name: balenaEtcher
ansible:linux: professormanhattan.etcher
# Waiting for zap to allow headless automation of AppImage Catalog images
# Currently, it fails because there are multiple versions to select
# appimage: etcher
appimage: etcher
cask: balenaetcher
choco: etcher
yay: balena-etcher
bandwhich:
_bin: bandwhich
_desc: '[Bandwhich](https://github.com/imsnif/bandwhich) is a CLI utility for displaying current network utilization by process, connection and remote IP/hostname.'
_github: https://github.com/imsnif/bandwhich
_name: Bandwhich
ansible: professormanhattan.bandwhich
brew: bandwhich
github: github.com/imsnif/bandwhich
pacman: bandwhich
pkg: bandwhich
bane:
_bin: bane
_desc: '[bane](https://github.com/genuinetools/bane) Custom & better AppArmor profile generator for Docker containers'
_github: https://github.com/genuinetools/bane
_name: bane
github: github.com/genuinetools/bane
go: github.com/genuinetools/bane@latest
barrier:
_app: Barrier.app
_bin: barrier
_github: https://github.com/debauchee/barrier
_name: Barrier
_todo: TODO
cask: barrier
choco: barrier
flatpak: com.github.debauchee.barrier
bash-completion:
_bin: null
_docs: https://docs.brew.sh/Shell-Completion
_name: Bash Completion Formula
_github: https://github.com/scop/bash-completion
apt: bash-completion
brew: bash-completion@2
dnf: bash-completion
pacman: bash-completion
bashly:
_bin: bashly
_github: https://github.com/DannyBen/bashly
_name: Bashly
gem: bashly
basictex:
_github: false
_name: Basictex
_when: '! test -d /Library/TeX'
cask: basictex
bat:
_bin: bat
_desc: '[bat](https://github.com/sharkdp/bat) is a cat(1) clone with syntax highlighting and Git integration.'
_github: https://github.com/sharkdp/bat
_name: bat
ansible: professormanhattan.bat
apk: bat
apt: bat
brew: bat
cargo: bat
choco: bat
pacman: bat
pkg: bat
port: bat
scoop: bat
zypper: bat
bat-extras:
_bin: batman
_github: https://github.com/eth-p/bat-extras
_name: Bat Extras
brew: bat-extras
emerge: sys-apps/bat-extras
pacman: bat-extras
bats:
_bin: bats
_github: https://github.com/bats-core/bats-core
_name: Bats Bash Testing
brew: bats-core
npm: bats
bazelisk:
_bin: bazelisk
_desc: A user-friendly launcher for Bazel.
_docs: https://bazel.build/docs
_github: https://github.com/bazelbuild/bazelisk
_home: https://bazel.build/
_name: Bazel
brew: bazelisk
choco: bazelisk
go: github.com/bazelbuild/bazelisk@latest
npm: '@bazel/bazelisk'
scoop: main/bazel
beekeeper-studio:
_app: Beekeeper Studio.app
_github: https://github.com/beekeeper-studio/beekeeper-studio
_name: Beekeeper Studio
_bin: beekeeper-studio
cask: beekeeper-studio
choco: beekeeper-studio
flatpak: io.beekeeperstudio.Studio
beets:
_bin: beet
_desc: 'The purpose of [Beets](https://beets.io/) is to get your music collection right once and for all. It catalogs your collection, automatically improving its metadata as it goes using the MusicBrainz database. Then it provides a bouquet of tools for manipulating and accessing your music.'
_docs: https://beets.readthedocs.io/en/stable/
_github: https://github.com/beetbox/beets
_home: https://beets.io/
_name: Beets
ansible: professormanhattan.beets
pipx: beets
betwixt:
_app: Betwixt.app
_bin: null
_desc: Web Debugging Proxy based on Chrome DevTools Network panel
_docs: https://github.com/kdzwinel/betwixt
_github: https://github.com/kdzwinel/betwixt
_home: https://github.com/kdzwinel/betwixt
_name: Betwixt
cask: betwixt
bfg:
_bin: bfg
_docs: https://rtyley.github.io/bfg-repo-cleaner/
_github: https://github.com/rtyley/bfg-repo-cleaner
_home: https://rtyley.github.io/bfg-repo-cleaner/
_name: BFG Repo Cleaner
brew: bfg
choco: bfg-repo-cleaner
port: bfg
bin:
_bin: bin
_desc: Effortless binary manager
_github: https://github.com/marcosnils/bin
_name: bin
github: github.com/marcosnils/bin
go: github.com/marcosnils/bin@latest
binwalk:
_bin: binwalk
_github: https://github.com/ReFirmLabs/binwalk
_name: Binwalk
apt: binwalk
brew: binwalk
choco: binwalk
dnf: binwalk
pacman: binwalk
bismuth:
_bin: bismuth
_github: https://github.com/Bismuth-Forge/bismuth
_name: Bismuth
apt: kwin-bismuth
dnf: bismuth
pacman: kwin-bismuth
bitly:
_bin: bitly
_desc: Shorten links with Bitly in your terminal!
_github: https://github.com/xxczaki/bitly-cli-client
_name: bitly
npm: bitly-cli-client
bitwarden:
_app: Bitwarden.app
_bin: bitwarden
_desc: The desktop vault (Windows, macOS, & Linux)
_github: https://github.com/bitwarden/desktop
_name: BitWarden
cask: bitwarden
choco: bitwarden
flatpak: com.bitwarden.desktop
github: github.com/bitwarden/desktop
mas: 1352778147
snap: bitwarden
yay: bitwarden-git
bitwarden-cli:
_bin: bw
_desc: '[Bitwarden CLI](https://github.com/bitwarden/cli) (i.e. bw) is a free and open-source official CLI for the [Bitwarden](https://bitwarden.com/) password manager. bw is available on Linux, macOS, and Microsoft Windows.'
_docs: https://bitwarden.com/help/
_github: https://github.com/bitwarden/clients
_home: https://bitwarden.com/
_name: Bitwarden CLI
ansible: professormanhattan.bw
brew: bitwarden-cli
choco: bitwarden-cli
npm: '@bitwarden/cli'
scoop: bitwarden-cli
snap: bw
bivac:
_bin: null
_desc: '[Bivac](https://bivac.io/) - Backup Interface for Volumes Attached to Containers - allows to backup Container volumes using Restic'
_github: https://github.com/camptocamp/bivac
_home: https://bivac.io/
_name: bivac
github: github.com/camptocamp/bivac
blackhole:
_bin: false
_desc: Audio loopback device for macOS (supports sound passthrough to screen recording software on macOS)
_docs: https://github.com/ExistentialAudio/BlackHole#user-guides
_github: https://github.com/ExistentialAudio/BlackHole
_home: https://github.com/ExistentialAudio/BlackHole
_name: BlackHole
_when:cask: '! test -d /Library/Audio/Plug-Ins/HAL/BlackHole16ch.driver && ! test -d ~/Library/Audio/Plug-Ins/HAL/BlackHole16ch.driver'
cask: blackhole-16ch
blender:
_app: Blender.app
_bin: blender
_desc: Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
_docs: https://docs.blender.org/manual/en/latest/
_github: https://github.com/blender/blender
_home: https://www.blender.org/
_name: Blender
apt: blender
cask: blender
choco: blender
dnf: blender
flatpak: org.blender.Blender
scoop: extras/blender
snap: blender --classic
blocky:
_bin: blocky
_github: https://github.com/0xERR0R/blocky
_name: Blocky
_post:brew: |
#!/usr/bin/env bash
cp -f "$HOME/.local/etc/blocky/config.yaml" "$(brew --prefix)/etc/blocky/config.yaml"
_post:linux: |
#!/usr/bin/env bash
sudo mkdir -p /usr/local/etc/blocky
if [ -d /usr/lib/systemd/system ]; then
sudo cp -f "$HOME/.local/etc/blocky/config.yaml" /usr/local/etc/blocky/config.yaml
sudo cp -f "$HOME/.local/etc/blocky/blocky.service" /usr/lib/systemd/system/blocky.service
else
echo "/usr/lib/systemd/system is missing from the file system"
fi
_service: blocky
_service:brew:
- name: blocky
sudo: true
_serviceEnabled: true
brew: blocky
go: github.com/0xERR0R/blocky@mastergithub.com/0xERR0R/blocky@master
blueutil:
_bin: blueutil
_github: https://github.com/toy/blueutil
_name: BlueUtil
brew:darwin: blueutil
boilr:
_bin: null
_desc: boilerplate template manager that generates files or directories from template repositories
_github: https://github.com/tmrts/boilr
_name: boilr
github: github.com/tmrts/boilr
go: github.com/tmrts/boilr@latest
boringtun:
_bin: boringtun-cli
_desc: BoringTun is an implementation of the WireGuard® protocol designed for portability and speed.
_github: https://github.com/cloudflare/boringtun
_name: BoringTun
_todo: Add sudo boringtun-cli utun
brew: boringtun
cargo:darwin: boringtun-cli
cargo:linux: boringtun-cli
bottles:
_bin: bottles
_github: https://github.com/bottlesdevs/Bottles
flatpak: com.usebottles.bottles
bottom:
_bin: bottom
_bin:brew: btm
_desc: '[bottom](https://clementtsang.github.io/bottom/) is yet another cross-platform graphical process/system monitor. It is a customizable cross-platform graphical process/system monitor for the terminal that supports Linux, macOS, and Windows'
_docs: https://clementtsang.github.io/bottom/nightly/
_github: https://github.com/ClementTsang/bottom
_home: https://clementtsang.github.io/
_name: bottom
brew: bottom
pacman: bottom
scoop: bottom
snap: bottom
brasero:
_bin: brasero
_name: Brasero
_github: https://github.com/GNOME/brasero
apt: brasero
dnf: brasero
pacman: brasero
brave-browser:
_app: Brave Browser.app
_bin: brave
_desc: '[Brave Browser](https://brave.com/) is a free and open-source web browser developed by Brave Software, Inc. based on the Chromium web browser. It includes the ability to access Tor websites and has a built-in plugin that replaces ads and pays you to surf the web. It is a privacy-focused browser, which automatically blocks online advertisements and website trackers in its default settings. It also supports Chrome extensions.'
_docs: https://support.brave.com/hc/en-us/articles/360035410812-Quickstart-guide-New-to-Brave-Start-here-
_env:
BRAVE_BROWSER_APPDATA:
cask: "$HOME/Library/Application Support/BraveSoftware/Brave-Browser/Default"
choco: "%APPDATA%/Local/BraveSoftware/Brave-Browser/User Data"
flatpak: "$HOME/.var/app/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default"
snap: "$HOME/snap/brave/current/.config/BraveSoftware/Brave-Browser/Default"
_github: https://github.com/brave/brave-browser
_home: https://brave.com/
_name: Brave Browser
_post: |
#!/usr/bin/env bash
# @brief See `google-chrome` `_post` script for more details
function chromeSetUp() {
### Ensure Chrome policies directory is present
logg info 'Processing policy directories for Chromium based browsers'
for POLICY_DIR in "/etc/brave/policies"; do
if [ -d "$(dirname "$POLICY_DIR")" ]; then
### Managed policies
if [ ! -f "$POLICY_DIR/managed/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/managed exists"
sudo mkdir -p "$POLICY_DIR/managed"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json to $POLICY_DIR/managed/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json" "$POLICY_DIR/managed/policies.json"
fi
### Recommended policies
if [ ! -f "$POLICY_DIR/recommended/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/recommended exists" && sudo mkdir -p "$POLICY_DIR/recommended"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json to $POLICY_DIR/recommended/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json" "$POLICY_DIR/recommended/policies.json"
fi
else
logg info "Skipping extension injection into $POLICY_DIR - create these folders prior to running to create managed configs"
fi
done
### Add Chrome extension JSON
logg info 'Populating Chrome extension JSON'
for EXTENSION_DIR in "/etc/brave/extensions" "$HOME/Library/Application Support/BraveSoftware/Brave-Browser/External Extensions"; do
### Ensure program-type is installed
if [ -d "$(dirname "$EXTENSION_DIR")" ]; then
### Ensure extension directory exists
if [[ "$EXTENSION_DIR" == '/opt/'* ]] || [[ "$EXTENSION_DIR" == '/etc/'* ]]; then
if [ ! -d "$EXTENSION_DIR" ]; then
logg info "Creating directory $EXTENSION_DIR" && sudo mkdir -p "$EXTENSION_DIR"
fi
else
if [ ! -d "$EXTENSION_DIR" ]; then
logg info "Creating directory $EXTENSION_DIR" && mkdir -p "$EXTENSION_DIR"
fi
fi
### Add extension JSON
logg info "Adding Chrome extensions to $EXTENSION_DIR"
for EXTENSION in {{ list (.chromeExtensions | toString | replace "[" "" | replace "]" "") | uniq | join " " }}; do
logg info "Adding Chrome extension manifest ($EXTENSION)"
if ! echo "$EXTENSION" | grep 'https://chrome.google.com/webstore/detail/' > /dev/null; then
EXTENSION="https://chrome.google.com/webstore/detail/$EXTENSION"
fi
EXTENSION_ID="$(echo "$EXTENSION" | sed 's/^.*\/\([^\/]*\)$/\1/')"
if [[ "$EXTENSION_DIR" == '/opt/'* ]] || [[ "$EXTENSION_DIR" == '/etc/'* ]]; then
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/extension.json" "$EXTENSION_DIR/${EXTENSION_ID}.json"
else
cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/extension.json" "$EXTENSION_DIR/${EXTENSION_ID}.json"
fi
done
else
logg info "$EXTENSION_DIR does not exist"
fi
done
}
chromeSetUp
cask: brave-browser
choco: brave
flatpak: com.brave.Browser
snap: brave
brew-gem:
_bin: brew-gem
_github: https://github.com/sportngin/brew-gem
_name: Homebrew RubyGems
brew: brew-gem
brew-pkg:
_github: https://github.com/timsutton/brew-pkg
_name: Homebrew Pkg
_when:brew:darwin: '! brew list brew-pkg'
brew:darwin: timsutton/formulae/brew-pkg
broot:
_bin: broot
_desc: '[broot](https://dystroy.org/broot/) offers a new way to see and navigate directory trees.'
_docs: https://dystroy.org/broot/documentation/usage/
_github: https://github.com/Canop/broot
_home: https://dystroy.org/broot/
_name: Broot
ansible: professormanhattan.broot
apk: broot
brew: broot
cargo: broot
emerge: broot
pkgin: broot
port: broot
browser-sync:
_bin: browser-sync
_desc: '[Browsersync](https://browsersync.io/) allows you to keep multiple browsers & devices in sync when building websites'
_docs: https://browsersync.io/docs
_github: https://github.com/BrowserSync/browser-sync
_home: https://browsersync.io/
_name: Browsersync
npm: browser-sync
browserosaurus:
_app: Browserosaurus.app
_bin: null
_desc: The browser prompter for macOS
_docs: https://github.com/will-stone/browserosaurus
_github: https://github.com/will-stone/browserosaurus
_home: https://browserosaurus.com/
_name: Browserosaurus
cask: browserosaurus
budibase-cli:
_bin: budi
_desc: '[Budibase](https://budibase.com) The Budibase CLI is how you initialise, manage and update your Budibase installation'
_docs: https://docs.budibase.com/docs/budibase-cli-reference
_github: https://github.com/Budibase/budibase
_home: https://budibase.com
_name: budibase-cli
github: github.com/Budibase/budibase
npm: '@budibase/cli'
buildkite-agent:
_bin: buildkite-agent
_github: https://github.com/buildkite/agent
_name: BuildKite Agent
brew: buildkite/buildkite/buildkite-agent
bun:
_bin: bun
_github: https://github.com/oven-sh/bun
_name: Bun
brew: oven-sh/bun/bun
npm: bun
proto: bun
bundler:
_bin: bundler
_desc: '[Bundler](https://bundler.io/) provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed'
_docs: https://bundler.io/docs.html
_github: https://github.com/rubygems/rubygems/tree/master/bundler
_home: https://bundler.io/
_name: Bundler
gem: bundler
caddy:
_bin: caddy
_github: https://github.com/caddyserver/caddy
_name: Caddy
_service: caddy
brew: caddy
choco: caddy
scoop: caddy
cakebrew:
_app: Cakebrew.app
_bin: null
_desc: Manage your Homebrew formulas with style using Cakebrew.
_docs: https://www.cakebrew.com/
_github: https://github.com/brunophilipe/Cakebrew
_home: http://www.cakebrew.com/
_name: Cakebrew
cask: cakebrew
caniuse:
_bin: caniuse
_desc: caniuse-cmd is a caniuse command line tool, providing all the power of caniuse.com with none of the nice UI or interactivity
_github: https://github.com/sgentle/caniuse-cmd
npm: caniuse-cmd
capacitor:
_bin: cap
_github: https://github.com/ionic-team/capacitor
_name: Capacitor
npm: '@capacitor/cli'
captain:
_bin: captain
_desc: Helps manage docker-compose.yml files from anywhere in the file system
_github: https://github.com/jenssegers/captain
_name: captain
go: github.com/jenssegers/captain@latest
carapace:
_bin: carapace
_github: https://github.com/rsteube/carapace-bin
_name: Carapace
brew: rsteube/tap/carapace
nix-shell: carapace
pacman: carapace-bin
scoop: extras/carapace-bin
winget: rsteube.Carapace
carbon-now:
_bin: carbon-now
_desc: '[Carbon](https://carbon.now.sh/) lets you create and share beautiful images of your source code'
_github: https://github.com/carbon-app/carbon
_home: https://carbon.now.sh/
_name: Carbon
npm: carbon-now-cli
carthage:
_bin: carthage
_desc: A simple, decentralized dependency manager for Cocoa
_github: https://github.com/Carthage/Carthage
_name: Carthage
brew:darwin: carthage
catfs:
_bin: catfs
_deps:
- fuse
_desc: Cache anything filesystem written in Rust
_docs: https://github.com/kahing/catfs#usage
_github: https://github.com/kahing/catfs
_home: https://github.com/kahing/catfs
_name: Catfs
ansible:linux: professormanhattan.s3filesystem
cargo:linux: catfs
catlight:
_app: Catlight.app
_github: https://github.com/catlightio/CatLight
_name: Catlight
cask: catlight
deb: https://catlight.io/downloads/linux/beta
ccat:
_bin: ccat
_github: https://github.com/owenthereal/ccat
_name: ccat
brew: ccat
go: github.com/owenthereal/ccat@latest
pacman: ccat
ceph:
_bin: ceph-client
_deps:
- dokany
_github: https://github.com/ceph/ceph
_name: CephFS
apt: cephadm
brew: megabyte-labs/tap/ceph-client
dnf: cephadm
zypper: cephadm
cerebro:
_app: Cerebro.app
_bin: null
_desc: Open-source productivity booster with a brain
_github: https://github.com/cerebroapp/cerebro
_name: Cerebro
cask: cerebro
choco: cerebro
github: github.com/cerebroapp/cerebro
yay: cerebro
certbot:
_bin: certbot
_desc: >-
[Certbot](https://certbot.eff.org/) is part of EFFs effort to encrypt the entire Internet. Secure communication over the Web relies on HTTPS, which requires the use of a digital certificate that lets browsers verify the identity of web servers (e.g., is that really google.com?). Web servers obtain their certificates from trusted third parties called certificate authorities (CAs). Certbot is an easy-to-use client that fetches a certificate from [Lets Encrypt](https://letsencrypt.org/)—an open certificate authority launched by the EFF, Mozilla, and others—and deploys it to a web server.
_docs: https://eff-certbot.readthedocs.io/en/stable/
_github: https://github.com/certbot/certbot
_home: https://certbot.eff.org/
_name: CertBot
_post: |
#!/usr/bin/env bash
pipx inject certbot certbot-dns-cloudflare
_post:windows: |
#!/usr/bin/env bash
echo "Add method for Windows"
pipx: certbot
cf-terraforming:
_bin: cf-terraforming
_github: https://github.com/cloudflare/cf-terraforming
_name: CloudFlare Terraforming
cask: cloudflare/cloudflare/cf-terraforming
cfssl:
_bin: cfssl
_desc: "[CFSSL](https://cfssl.org/) is CloudFlare's PKI/TLS swiss army knife. It is both a command line tool and an HTTP API server for signing, verifying, and bundling TLS certificates"
_github: https://github.com/cloudflare/cfssl
_home: https://cfssl.org/
_name: CFSSL
brew: cfssl
pacman: cfssl
charm:
_bin: charm
_desc: The Charm Tool and Library
_docs: https://github.com/charmbracelet/charm
_github: https://github.com/charmbracelet/charm
_home: https://charm.sh
_name: Charm
brew: charmbracelet/tap/charm
go: github.com/charmbracelet/charm@main
nix-env: nixpkgs.charm
pacman: charm
chatgpt-menubar:
_app: Chatgpt.app
_bin: null
_desc: ChatGPT for Mac, living in your menubar.
_docs: https://github.com/vincelwt/chatgpt-mac
_github: https://github.com/vincelwt/chatgpt-mac
_home: https://github.com/vincelwt/chatgpt-mac
_name: ChatGPT Menubar for macOS
cask: vincelwt-chatgpt
chatgpt-nofwl:
_app: NoFWL.app
_bin: null
_desc: ChatGPT desktop application (Mac, Windows and Linux)
_docs: https://app.nofwl.com/docs/chatgpt/config
_github: https://github.com/lencx/nofwl
_home: https://app.nofwl.com/
_name: ChatGPT Desktop (NoFWL Version)
appimage: lencx/nofwl
apt: https://github.com/lencx/nofwl/releases/download/v0.1.0/NoFWL_0.1.0_linux_x86_64.deb
cask: lencx/nofwl/nofwl --no-quarantine
msi: https://github.com/lencx/nofwl/releases/download/v0.1.0/NoFWL_0.1.0_windows_x86_64.msi
cheat:
_bin: cheat
_desc: Cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind *nix system administrators of options for commands that they use frequently, but not frequently enough to remember.
_docker: docker run --rm bannmann/docker-cheat
_docs: https://github.com/cheat/cheat
_github: https://github.com/cheat/cheat
_home: https://github.com/cheat/cheat
_name: Cheat
brew: cheat
go: github.com/cheat/cheat/cmd/cheat@latest
nix: nixos.cheat
snap: cheat
yay: cheat
chef-workstation:
_app: Chef Workstation App.app
_bin: chef-workstation
_github: https://github.com/chef/chef
_name: Chef Workstation
apt: https://packages.chef.io/files/stable/chef-workstation/21.10.640/ubuntu/20.04/chef-workstation_21.10.640-1_amd64.deb
cask: chef-workstation
choco: chef-workstation
dnf: https://packages.chef.io/files/stable/chef-workstation/21.10.640/el/8/chef-workstation-21.10.640-1.el8.x86_64.rpm
chezmoi:
_bin: chezmoi
_desc: Manage your dotfiles across multiple diverse machines, securely.
_docs: https://www.chezmoi.io/user-guide/command-overview/
_github: https://github.com/twpayne/chezmoi
_home: https://www.chezmoi.io/
_name: Chezmoi
apk: chezmoi
brew: chezmoi
choco: chezmoi
nix: chezmoi
pacman: chezmoi
pkg: chezmoi
snap: chezmoi --classic
xbps: chezmoi
zypper: chezmoi
chrome-cli:
_bin: chrome-cli
_desc: chrome-cli is a command line utility for controlling Google Chrome compatible browsers on OS X. It is a native binary that uses the Scripting Bridge to communicate with Chrome
_github: https://github.com/prasmussen/chrome-cli
brew:darwin: chrome-cli
chrome-gnome-shell:
_bin: null
_desc: Browser extension for Google Chrome/Chromium, Firefox, Vivaldi (and other Browser Extension, Chrome Extension or WebExtensions capable browsers) and native host messaging connector that provides integration with GNOME Shell and the corresponding extensions repository
_github: https://gitlab.gnome.org/GNOME/gnome-browser-extension
_home: ttps://wiki.gnome.org/Projects/GnomeShellIntegration
apt: chrome-gnome-shell
dnf: chrome-gnome-shell
pacman: chrome-gnome-shell
chromium:
_bin: chromium
_github: https://github.com/chromium/chromium
_deps:
- chrome-gnome-shell
_post: |
#!/usr/bin/env bash
function chromeSetUp() {
### Ensure Chrome policies directory is present
logg info 'Processing policy directories for Chromium based browsers'
for POLICY_DIR in "/etc/chromium/policies"; do
if [ -d "$(dirname "$POLICY_DIR")" ]; then
### Managed policies
if [ ! -f "$POLICY_DIR/managed/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/managed exists"
sudo mkdir -p "$POLICY_DIR/managed"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json to $POLICY_DIR/managed/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json" "$POLICY_DIR/managed/policies.json"
fi
### Recommended policies
if [ ! -f "$POLICY_DIR/recommended/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/recommended exists" && sudo mkdir -p "$POLICY_DIR/recommended"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json to $POLICY_DIR/recommended/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json" "$POLICY_DIR/recommended/policies.json"
fi
else
logg info "Skipping extension injection into $POLICY_DIR - create these folders prior to running to create managed configs"
fi
done
### Add Chrome extension JSON
logg info 'Populating Chrome extension JSON'
### TODO - Find `EXTENSION_DIR` for macOS in Application Support folder like `$HOME/Library/Application Support/Google/Chrome/External Extensions` for Google Chrome
for EXTENSION_DIR in "/etc/chromium/extensions"; do
### Ensure program-type is installed
if [ -d "$(dirname "$EXTENSION_DIR")" ]; then
### Ensure extension directory exists
if [[ "$EXTENSION_DIR" == '/opt/'* ]] || [[ "$EXTENSION_DIR" == '/etc/'* ]]; then
if [ ! -d "$EXTENSION_DIR" ]; then
logg info "Creating directory $EXTENSION_DIR" && sudo mkdir -p "$EXTENSION_DIR"
fi
else
if [ ! -d "$EXTENSION_DIR" ]; then
logg info "Creating directory $EXTENSION_DIR" && mkdir -p "$EXTENSION_DIR"
fi
fi
### Add extension JSON
logg info "Adding Chrome extensions to $EXTENSION_DIR"
for EXTENSION in {{ list (.chromeExtensions | toString | replace "[" "" | replace "]" "") | uniq | join " " }}; do
logg info "Adding Chrome extension manifest ($EXTENSION)"
if ! echo "$EXTENSION" | grep 'https://chrome.google.com/webstore/detail/' > /dev/null; then
EXTENSION="https://chrome.google.com/webstore/detail/$EXTENSION"
fi
EXTENSION_ID="$(echo "$EXTENSION" | sed 's/^.*\/\([^\/]*\)$/\1/')"
if [[ "$EXTENSION_DIR" == '/opt/'* ]] || [[ "$EXTENSION_DIR" == '/etc/'* ]]; then
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/extension.json" "$EXTENSION_DIR/${EXTENSION_ID}.json"
else
cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/extension.json" "$EXTENSION_DIR/${EXTENSION_ID}.json"
fi
done
else
logg info "$EXTENSION_DIR does not exist"
fi
done
}
chromeSetUp
apt: chromium
dnf: chromium
flatpak: org.chromium.Chromium
snap: chromium
clair:
_bin: clair
_desc: Vulnerability Static Analysis for Containers
_docs: https://quay.github.io/clair/
_github: https://github.com/quay/clair
_name: clair
brew: clair
github: github.com/quay/clair
clamav:
_bin: clamav-config
_desc: '[ClamAV](https://www.clamav.net/) is an open-source antivirus engine for detecting trojans, viruses, malware & other malicious threats.'
_docs: https://docs.clamav.net/
_github: https://github.com/Cisco-Talos/clamav
_home: https://www.clamav.net/
_name: ClamAV
_post: |
#!/usr/bin/env bash
### Add freshclam.conf
if [ -f "$HOME/.local/etc/clamav/freshclam.conf" ]; then
sudo mkdir -p /usr/local/etc/clamav
sudo cp -f "$HOME/.local/etc/clamav/freshclam.conf" /usr/local/etc/clamav/freshclam.conf
if [ -d "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/clamav" ] && [ ! -f "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/clamav/freshclam.conf" ]; then
ln -s /usr/local/etc/clamav/freshclam.conf "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/clamav/freshclam.conf"
fi
fi
### Add clamd.conf
if [ -f "$HOME/.local/etc/clamav/clamd.conf" ]; then
sudo mkdir -p /usr/local/etc/clamav
sudo cp -f "$HOME/.local/etc/clamav/clamd.conf" /usr/local/etc/clamav/clamd.conf
if [ -d "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/clamav" ] && [ ! -f "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/clamav/clamd.conf" ]; then
ln -s /usr/local/etc/clamav/clamd.conf "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/clamav/clamd.conf"
fi
fi
### Update database
freshclam
### Setting up launchd services on macOS
if [ -d /Applications ] && [ -d /System ]; then
sudo mkdir -p /var/log/clamav
# sudo chown $USER /var/log/clamav
sudo cp -f "$HOME/.local/etc/clamav/clamdscan.plist.tmpl" /Library/LaunchDaemons/clamdscan.plist
sudo cp -f "$HOME/.local/etc/clamav/freshclam.plist.tmpl" /Library/LaunchDaemons/freshclam.plist
sudo launchctl load -w /Library/LaunchDaemons/clamdscan.plist
sudo launchctl load -w /Library/LaunchDaemons/freshclam.plist
fi
_service:apt: clamav-freshclam
_service:brew:
- name: clamav
sudo: true
_service:dnf: clamd-freshclam
_service:pacman: clamav-freshclam
_serviceEnabled: true
apt:
- clamav
- clamdscan
brew: clamav
dnf:
- clamav
- clamav-update
pacman: clamav
clangd:
_bin: clangd
_desc: '[clangd](https://clangd.llvm.org/) is an language server that understands your C++ code and adds smart features to your editor'
_docs: https://clangd.llvm.org/guides/
_github: https://github.com/llvm/llvm-project/tree/main/clang-tools-extra/clangd
_home: https://clangd.llvm.org/
_name: clangd
apt: clangd
brew: llvm
choco: llvm
dnf: clang-tools-extra
pacman: clang
scoop: llvm
clipboard:
_bin: cb
_github: https://github.com/Slackadays/Clipboard.git
_name: Clipboard
apk: clipboard
brew: clipboard
emerge: app-misc/clipboard
flatpak: app.getclipboard.Clipboard
nix-env: nixpkgs.clipboard-jh
scoop: clipboard
snap: clipboard
xbps: clipboard
yay: clipboard
cloc:
_bin: cloc
_github: https://github.com/AlDanial/cloc
_name: Cloc
apk: cloc
apt: cloc
brew: cloc
choco: cloc
dnf: cloc
emerge: dev-util/cloc
npm: cloc
pacman: cloc
pkg-freebsd: cloc
pkg_add: cloc
port: cloc
scoop: cloc
clocker:
_app: Clocker.app
_bin: null
_desc: Clocker is designed to help you keep track of your friends and colleagues in different time zones.
_github: https://github.com/n0shake/clocker
cask: clocker
cloudflare-cli:
_bin: cfcli
_github: https://github.com/danielpigott/cloudflare-cli
_name: CloudFlare CLI
npm: cloudflare-cli
cloudflared:
_bin: cloudflared
_desc: '[CloudFlare Argo Tunnel Client](https://developers.cloudflare.com/argo-tunnel/) contains the command-line client for CloudFlare Argo Tunnel, a tunneling daemon that proxies any local webserver through the Cloudflare network.'
_github: https://github.com/cloudflare/cloudflared
_name: CloudFlared
_post: |
#!/usr/bin/env bash
{{- $registrationToken := "" }}
{{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "cloudflared" .host.hostname)) -}}
{{- $registrationToken = (includeTemplate (print "cloudflared/" .host.hostname) | decrypt) -}}
{{- end }}
### Set up CloudFlare tunnels
if command -v cloudflared > /dev/null && [ -d "$HOME/.local/etc/cloudflared" ]; then
# Show warning message about ~/.cloudflared already existing
if [ -d "$HOME/.cloudflared" ]; then
logg warn '~/.cloudflared is already in the home directory - to ensure proper deployment, remove previous tunnel configuration folders'
fi
### Ensure /usr/local/etc/cloudflared exists
if [ -d /usr/local/etc/cloudflared ]; then
logg info 'Creating folder /usr/local/etc/cloudflared'
sudo mkdir -p /usr/local/etc/cloudflared
fi
# Copy over configuration files
logg info 'Ensuring /usr/local/etc/cloudflared exists' && sudo mkdir -p /usr/local/etc/cloudflared
logg info 'Copying over configuration files from ~/.local/etc/cloudflared to /usr/local/etc/cloudflared'
sudo cp -f "$HOME/.local/etc/cloudflared/cert.pem" /usr/local/etc/cloudflared/cert.pem
sudo cp -f "$HOME/.local/etc/cloudflared/config.yml" /usr/local/etc/cloudflared/config.yml
# Register tunnel (if not already registered)
if sudo cloudflared tunnel list | grep "host-{{ .host.hostname }}" > /dev/null; then
logg info 'CloudFlare tunnel is already registered'
else
logg info 'Creating a CloudFlare tunnel to this host'
sudo cloudflared tunnel create "host-{{ .host.hostname }}"
fi
TUNNEL_ID="$(sudo cloudflared tunnel list | grep 'host-{{ .host.hostname }}' | sed 's/ .*//')"
logg info "Tunnel ID: $TUNNEL_ID"
if [ -f "/usr/local/etc/cloudflared/${TUNNEL_ID}.json" ]; then
logg info 'Symlinking tunnel configuration to /usr/local/etc/cloudflared/credentials.json'
rm -f /usr/local/etc/cloudflared/credentials.json
sudo ln -s "/usr/local/etc/cloudflared/${TUNNEL_ID}.json" /usr/local/etc/cloudflared/credentials.json
else
logg info 'Handling case where the tunnel registration is not present in /usr/local/etc/cloudflared'
{{ if eq $registrationToken "" -}}
logg warn 'Registration token is unavailable - you might have to delete the pre-existing tunnel or set up secrets properly'
{{- else -}}
logg info 'Registration token retrieved from encrypted blob stored at home/.chezmoitemplates/cloudflared/{{ .host.hostname }}'
{{ if eq (substr 0 1 $registrationToken) "{" -}}
logg info 'Registration token stored in credential file form'
echo -n '{{ $registrationToken }}' | sudo tee /usr/local/etc/cloudflared/credentials.json > /dev/null
{{ else }}
logg info 'Registration token is in token form - it will be used in conjunction with sudo cloudflared service install'
{{- end }}
{{- end }}
fi
# Set up service
if [ -d /Applications ] && [ -d /System ]; then
# System is macOS
if [ -f /Library/LaunchDaemons/com.cloudflare.cloudflared.plist ]; then
logg info 'cloudflared service is already installed'
else
logg info 'Running sudo cloudflared service install'
sudo cloudflared service install{{ if and (ne $registrationToken "") (eq (substr 0 1 $registrationToken) "{") -}} {{ $registrationToken }}{{ end }}
fi
logg info 'Ensuring cloudflared service is installed'
sudo launchctl start com.cloudflare.cloudflared
elif [ -f /etc/os-release ]; then
# System is Linux
if systemctl --all --type service | grep -q "cloudflared" > /dev/null; then
logg info 'cloudflared service is already available as a service'
else
logg info 'Running sudo cloudflared service install'
sudo cloudflared service install{{ if and (ne $registrationToken "") (eq (substr 0 1 $registrationToken) "{") -}} {{ $registrationToken }}{{ end }}
fi
logg info 'Ensuring cloudflared service is started'
sudo systemctl start cloudflared
logg info 'Enabling cloudflared as a boot systemctl service'
sudo systemctl enable cloudflared
else
# System is Windows
cloudflared service install
mkdir C:\Windows\System32\config\systemprofile\.cloudflared
# Copy same cert.pem as being used above
# copy C:\Users\%USERNAME%\.cloudflared\cert.pem C:\Windows\System32\config\systemprofile\.cloudflared\cert.pem
# https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/local/as-a-service/windows/
fi
else
logg info 'cloudflared was not installed so CloudFlare Tunnels cannot be enabled. (Or the ~/.local/etc/cloudflared folder is not present)'
fi
ansible: professormanhattan.cloudflared
binary:linux: https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
brew:darwin: cloudflare/cloudflare/cloudflared
github: github.com/cloudflare/cloudflared
cmake:
_bin: cmake
_desc: CMake is an open-source, cross-platform family of tools designed to build, test and package software.
_docs: https://cmake.org/documentation/
_github: https://github.com/Kitware/CMake
_home: https://cmake.org/
_name: Chezmoi
brew: cmake
choco: cmake
snap: cmake --classic
cmctl:
_bin: cmctl
_desc: A CLI tool that can help you to manage cert-manager resources inside your cluster
_docs: https://cert-manager.io/docs/
_github: https://github.com/cert-manager/cert-manager
_home: https://cert-manager.io/docs/usage/cmctl/
_name: cmctl
brew: cmctl
cockpit:
_bin: cockpit
_desc: '[Cockpit](https://cockpit-project.org/) allows you to view many aspects of system performance and make configuration changes, though the task list may depend on the particular flavor of Linux that you are using.'
_docs: https://cockpit-project.org/documentation.html
_github: https://github.com/cockpit-project/cockpit
_home: https://cockpit-project.org/
_name: Cockpit
_post: |
#!/usr/bin/env bash
sudo usermod -a -G libvirtdbus libvirt
_service:pacman: cockpit.socket
_systemd: cockpit
_systemd:pacman: cockpit.socket
ansible:linux: professormanhattan.cockpit
apt:
- 389-ds-base
- cockpit
- cockpit-389-ds
- cockpit-machines
- cockpit-networkmanager
- cockpit-packagekit
- cockpit-podman
- cockpit-storaged
- libvirt-dbus
dnf:centos:
- 389-ds-base
- cockpit
- cockpit-machines
- cockpit-networkmanager
- cockpit-packagekit
- cockpit-podman
- cockpit-storaged
- libvirt-dbus
dnf:fedora:
- 389-ds-base
- cockpit
- cockpit-389-ds
- cockpit-machines
- cockpit-networkmanager
- cockpit-packagekit
- cockpit-podman
- cockpit-storaged
- libvirt-dbus
pacman:
- 389-ds-base
- cockpit
- cockpit-389-ds
- cockpit-machines
- cockpit-networkmanager
- cockpit-packagekit
- cockpit-podman
- cockpit-storaged
- libvirt-dbus
cockpit-client:
_bin: cockpit-client
_github: https://github.com/cockpit-project/cockpit
_home: https://cockpit-project.org/
_name: Cockpit Desktop Client
flatpak: org.cockpit_project.CockpitClient
cocoapods:
_bin: null
_desc: '[CocoaPods](https://cocoapods.org/) is an application level dependency manager for Objective-C, Swift and any other languages that run on the Objective-C runtime, such as RubyMotion, that provides a standard format for managing external libraries.'
_docs: https://guides.cocoapods.org/using/getting-started.html
_github: https://github.com/CocoaPods/CocoaPods
_home: https://cocoapods.org/
_name: cocoapods
ansible:darwin: professormanhattan.cocoapods
brew:darwin: cocoapods
gem:darwin: cocoapods
cod:
_bin: cod
_desc: Cod is a completion daemon for bash/fish/zsh that automatically adds auto-completions when --help is used
_docs: https://github.com/dim-an/cod
_github: https://github.com/dim-an/cod
_home: https://github.com/dim-an/cod
_name: Cod
_todo: Check for brew install later on (5/14/2023)
go: github.com/dim-an/cod@master
codeclimate:
_bin: codeclimate
_github: https://github.com/codeclimate/codeclimate
_name: CodeClimate
_todo: Add check to ensure Docker is loaded / running
_usesDocker: true
brew: codeclimate/formulae/codeclimate
brew:darwin: codeclimate/formulae/codeclimate
script:linux: cd /tmp && curl -L https://github.com/codeclimate/codeclimate/archive/master.tar.gz | tar xvz && cd codeclimate-* && sudo make install
codeedit:
_app: CodeEdit.app
_bin: codeedit
_github: https://github.com/CodeEditApp/CodeEdit
_name: CodeEdit
_todo: TODO once this is out of alpha
cask: codeedit
coder:
_bin: coder
_desc: A tool that provisions remote development environments via Terraform
_docs: https://coder.com/docs/v1/latest
_github: https://github.com/coder/coder
_home: https://coder.com/
_name: Coder
brew: coder
cointop:
_bin: cointop
_desc: '[Cointop](https://github.com/miguelmota/cointop) is a fast and lightweight interactive terminal based UI application for tracking and monitoring cryptocurrency coin stats in real-time.'
_docs: https://docs.cointop.sh/
_github: https://github.com/cointop-sh/cointop
_home: https://cointop.sh/
_name: Cointop
ansible:darwin: professormanhattan.cointop
ansible:linux: professormanhattan.cointop
brew: cointop
port: cointop
commitizen:
_bin: cz
_desc: Commitizen is a tool designed for teams. Its main purpose is to define a standard way of committing rules and communicating it
_docs: https://commitizen-tools.github.io/commitizen/
_github: https://github.com/commitizen/cz-cli
_home: https://commitizen-tools.github.io/commitizen/
_name: commitizen
npm: commitizen
commitlint:
_bin: commitlint
_desc: Lint commit messages
_docs: https://commitlint.js.org/#/?id=documentation
_github: https://github.com/conventional-changelog/commitlint
_home: https://commitlint.js.org
_name: commitlint
npm: '@commitlint/cli'
common:
_bin: null
_github: false
_desc: 'For example, this role sets the timezone, sets the hostname, sets up the swap space, ensures auto-login is either disabled or enabled, and customizes GRUB (on Linux). It also ensures that specified groups are present on the system. On Windows, the role ensures all the available updates are installed, ensures [Scoop](https://scoop.sh/) is installed, and ensures common dependencies like [Bandizip](https://en.bandisoft.com/bandizip/) (a compressed-file manager) are installed.'
_name: Common
ansible: professormanhattan.common
composer:
_bin: composer
_desc: '[Composer](https://getcomposer.org/) is an application-level package manager for the PHP programming language that provides a standard format for managing dependencies of PHP software and required libraries. It was developed by Nils Adermann and Jordi Boggiano, who continue to manage the project.'
_docs: https://getcomposer.org/doc/
_github: https://github.com/composer/composer
_home: https://getcomposer.org/
_name: Composer
ansible: professormanhattan.composer
brew: composer
choco: composer
pacman: composer
scoop: composer
script:darwin: cd ~ && curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer && sudo chmod +x /usr/local/bin/composer
script:linux: cd ~ && curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer && sudo chmod +x /usr/local/bin/composer
confd:
_bin: confd
_desc: Manage local application configuration files using templates and data from etcd or consul
_github: https://github.com/kelseyhightower/confd
_name: confd
brew: confd
choco: confd
github: github.com/kelseyhightower/confd
yay: confd
connections:
_bin: connections
_github: false
_gitlab: https://gitlab.gnome.org/GNOME/connections
flatpak: org.gnome.Connections
consul-cli:
_bin: consul
_desc: '[Consul](https://www.consul.io/) uses service identities and traditional networking practices to help organizations securely connect applications running in any environment'
_docs: https://developer.hashicorp.com/consul/docs
_github: https://www.github.com/hashicorp/consul
_home: https://www.consul.io/
_name: Consul
_service: consul
apt: consul
brew: consul
pkg: consul
yay: consul-bin
consul-template:
_bin: consul-template
_desc: '[Consul-Template](https://github.com/hashicorp/consul-template) provides a convenient way to populate values from [Consul](https://www.consul.io/) into the file system using the consul-template daemon. It was created by [HashiCorp](https://www.hashicorp.com/) (the creators of Consul).'
_docs: https://learn.hashicorp.com/tutorials/consul/consul-template
_github: https://github.com/hashicorp/consul-template
_home: https://www.hashicorp.com/
_name: Consul Template
ansible: professormanhattan.consultemplate
brew: consul-template
choco: consul-template
scoop: main/consul
container-structure-test:
_github: https://github.com/GoogleContainerTools/container-structure-test
_bin: container-structure-test
_desc: The Container Structure Tests provide a powerful framework to validate the structure of a container image. These tests can be used to check the output of commands in an image, as well as verify metadata and contents of the filesystem
_name: Container Structure Tests
_post:binary:linux: |
#!/usr/bin/env bash
echo "TODO"
binary:linux: https://storage.googleapis.com/container-structure-test/latest/container-structure-test-linux-amd64
brew: container-structure-test
yay: container-structure-test
cookiecutter:
_bin: cookiecutter
_desc: A cross-platform command-line utility that creates projects from cookiecutters (project templates)
_docs: https://cookiecutter.readthedocs.io/
_github: https://github.com/cookiecutter/cookiecutter
_name: cookiecutter
brew: cookiecutter
pipx: cookiecutter
cordova:
_bin: cordova
_desc: >-
[Apache Cordova](https://cordova.apache.org/) is a tool to create cross-platform apps from standard web technologies (HTML, CSS, and JavaScript). Its primary purpose is to provide a bridge for native device API access and to bundle for distribution
_docs: https://cordova.apache.org/docs/en/latest/
_github: https://github.com/apache/cordova
_home: https://cordova.apache.org/
_name: Apache Cordova
npm: cordova
coreutils:
_bin:
- cat
- ls
- rm
_bin:darwin: gchown
_github: false
apt: coreutils
brew: coreutils
dnf: coreutils
pacman: coreutils
croc:
_bin: croc
_desc: Easily and securely send things from one computer to another
_github: https://github.com/schollz/croc
_name: croc
brew: croc
choco: croc
github: github.com/schollz/croc
go: github.com/schollz/croc/v9@latest
pacman: croc
pkg: croc
scoop: croc
crunch:
_app: Crunch.app
_bin: crunch
_desc: The crunch command line executable is a *nix executable that supports parallel PNG image optimization with local (off of the system PATH) installs of the pngquant and zopflipng project dependencies.
_docs: https://github.com/chrissimpkins/Crunch
_github: https://github.com/chrissimpkins/Crunch
_home: https://github.com/chrissimpkins/Crunch
_name: Crunch
cask: crunch
script: cd /tmp && rm -rf Crunch && git clone https://github.com/chrissimpkins/Crunch.git && make build-dependencies && make install-executable && cd /tmp && rm -rf Crunch && rm -rf ~/zopfli && rm -rf ~/pngquant && echo "TODO WARNING - The ~/zopfli and ~/pngquant directories were deleted and may be required (but were removed due to HOME directory pollution)"
crunch-app:
_app: Crunch.app
_bin: null
_desc: The macOS companion app for the crunch CLI tool that compresses PNG images.
_docs: https://github.com/chrissimpkins/Crunch/blob/master/docs/MACOSGUI.md
_github: https://github.com/chrissimpkins/Crunch
_home: https://github.com/chrissimpkins/Crunch
_name: Crunch macOS App
cask: crunch
cryptomator:
_app: Cryptomator.app
_github: https://github.com/cryptomator/cryptomator
_bin: cryptomator
cask: cryptomator
choco: cryptomator
flatpak: org.cryptomator.Cryptomator
csvkit:
_bin: csvcut
_github: https://github.com/wireservice/csvkit
brew: csvkit
ctop:
_bin: ctop
_desc: Top-like interface for container metrics
_github: https://github.com/bcicen/ctop
_name: ctop
brew: ctop
github: github.com/bcicen/ctop
yay: ctop-bin
cumulus:
_app: Cumulus.app
_bin: null
_desc: A SoundCloud player that lives in the menubar
_github: https://github.com/gillesdemey/Cumulus
_name: Cumulus
cask: cumulus
github: github.com/gillesdemey/Cumulus
cups:
_bin: cupsctl
_desc: '[CUPS](https://www.cups.org/) is a modular printing system for Unix-like computer operating systems which allows a computer to act as a print server. A computer running CUPS is a host that can accept print jobs from client computers, process them, and send them to the appropriate printer.'
_github: https://github.com/apple/cups
_name: CUPS
_ports:
- port: 631
proto: tcp
_systemd: smbd
ansible: professormanhattan.cups
apt:
- avahi-daemon
- cups
brew: cups
dnf: cups
pacman:
- avahi-daemon
- cups
curator:
_bin: curator
_desc: Elasticsearch Curator helps you curate, or manage, your Elasticsearch indices and snapshots
_docs: https://www.elastic.co/guide/en/elasticsearch/client/curator
_github: https://github.com/elastic/curator
_home: https://www.elastic.co/guide/en/elasticsearch/client/curator
_name: curator
pipx: elasticsearch-curator
curl:
_bin: curl
_desc: cURL is a computer software project providing a library (libcurl) and command-line tool (curl) for transferring data using various network protocols.
_docs: https://curl.se/docs/
_github: https://github.com/curl/curl
_home: https://curl.se/
_name: cURL
apk: curl
apt: curl
brew: curl
choco: curl
dnf: curl
pacman: curl
pkg: curl
scoop: curl
xbps: curl
zypper: curl
curlie:
_bin: curlie
_desc: Curlie is a frontend to curl that adds the ease of use of httpie, without compromising on features and performance.
_docs: https://curlie.io/
_github: https://github.com/rs/curlie
_home: https://curlie.io/
_name: Curlie
brew: curlie
go: github.com/rs/curlie@latest
pkg: curlie
port: curlie
scoop: curlie
cutter:
_app: Cutter.app
_github: https://github.com/rizinorg/cutter
_bin: cutter
cask: cutter
choco: cutter
flatpak: re.rizin.cutter
d2vm:
_bin: d2vm
_github: https://github.com/linka-cloud/d2vm
_name: Docker 2 VM
brew: linka-cloud/tap/d2vm
dagu:
_bin: dagu
_github: https://github.com/dagu-dev/dagu
_name: Dagu
_post: |
#!/usr/bin/env bash
sudo mkdir -p /var/log/dagu
brew: yohamta/tap/dagu
dasel:
_bin: dasel
_desc: Select, put and delete data from JSON, TOML, YAML, XML and CSV files with a single tool
_github: https://github.com/TomWright/dasel
_name: dasel
brew: dasel
github: github.com/TomWright/dasel
go: github.com/tomwright/dasel/cmd/dasel@master
dat:
_bin: dat
_desc: Peer-to-peer sharing & live syncronization of files via command line
_github: https://github.com/datproject/dat
_name: dat
github: github.com/dat-ecosystem-archive/dat
npm: dat@next
dat-desktop:
_app: Dat Desktop.app
_bin: null
_desc: Peer to peer data syncronization
_github: https://github.com/datproject/dat-desktop
_name: Dat Desktop
appimage: dat-ecosystem-archive/dat-desktop
cask: dat
exe: https://github.com/dat-ecosystem-archive/dat-desktop/releases/download/v3.0.1/Dat-Desktop-Setup-3.0.1.exe
dconf-editor:
_bin: dconf-editor
_github: https://github.com/GNOME/dconf-editor/tree/master
_gitlab: https://gitlab.gnome.org/GNOME/dconf-editor
flatpak: ca.desrt.dconf-editor
debloat:
_bin: null
_github: false
_desc: This repository is the home of an Ansible role that Debloats Windows
_name: Debloat Windows
ansible: professormanhattan.debloat
debsecan:
_bin: debsecan-by-type
_github: false
_desc: debsecan analyzes the list of installed packages on the current host and reports vulnerabilities found on the system.
_gitlab: https://gitlab.com/fweimer/debsecan
_home: https://wiki.debian.org/DebianSecurity/debsecan
_name: Debian Security Analyzer
apt: debsecan
defaultbrowser:
_bin: null
_github: false
_desc: This role performs the necessary logic to set the default browser on nearly any platform.
_name: Default Browser Setter
ansible: professormanhattan.defaultbrowser
deja-dup:
_bin: dejadup
_home: https://apps.gnome.org/DejaDup/
_gitlab: https://gitlab.gnome.org/World/deja-dup
_github: false
flatpak: org.gnome.DejaDup
delta:
_bin: delta
_desc: '[delta](https://github.com/dandavison/delta) is a viewer for git and diff output'
_docs: https://dandavison.github.io/delta/
_github: https://github.com/dandavison/delta
_home: https://github.com/dandavison/delta
_name: Delta
ansible: professormanhattan.delta
brew: git-delta
cargo: git-delta
choco: delta
dnf:fedora: git-delta
pacman: git-delta
pkg: git-delta
scoop: delta
delve:
_bin: dlv
_desc: Delve is a debugger for the Go programming language.
_docs: https://github.com/go-delve/delve/tree/master/Documentation
_github: https://github.com/go-delve/delve
_home: https://github.com/go-delve/delve
_name: Delve
brew: delve
go: github.com/go-delve/delve/cmd/dlv@latest
deno:
_bin: deno
_desc: '[Deno](https://deno.land/) is a modern runtime for JavaScript and TypeScript. It is advertised as a simple runtime that uses V8 and Rust. It is boasted as secure-by-default because there is no file, network, or environment access unless explicitly enabled. Deno compiles apps into single executables. An app made with Deno generally specifies its dependencies as URLs mainly hosted in the [Deno standard module repository](https://deno.land/std).'
_docs: https://deno.land/manual
_github: https://github.com/denoland/deno
_home: https://deno.land/
_name: Deno
ansible: professormanhattan.deno
brew: deno
cargo: deno
choco: deno
nix: deno
scoop: deno
desed:
_bin: desed
_desc: Debugger for sed used to demystify and debug the sed scripts, from comfort of terminal
_docs: https://github.com/SoptikHa2/desed#controls
_github: https://github.com/SoptikHa2/desed
_home: https://github.com/SoptikHa2/desed
_name: desed
cargo: desed
dnf:fedora: desed
github: github.com/SoptikHa2/desed
pkg: desed
xbps-freebsd: desed
desk:
_bin: desk
_github: https://github.com/jamesob/desk
_name: Desk
brew: desk
desktop:
_bin: null
_github: false
_desc: This role is essentially the place where all desktop-specific tasks that are substantial enough for their own role are placed.
_name: Desktop
ansible: professormanhattan.desktop
deta:
_bin: deta
_desc: Command line interface for managing Deta micros and deployments
_docs: https://docs.deta.sh/docs/cli/install
_github: https://github.com/deta/deta-cli
_home: https://www.deta.sh/
_name: deta
github: github.com/deta/deta-cli
script:darwin: curl -fsSL https://get.deta.dev/cli.sh | sh
script:linux: curl -fsSL https://get.deta.dev/cli.sh | sh
script:windows: iwr https://get.deta.dev/cli.ps1 -useb | iex
devbox:
_bin: devbox
_github: https://github.com/jetpack-io/devbox
_todo: Revisit because install via script would require expect since piping y to the installer is not working
# nix-env: nixpkgs.devbox
# script: curl -fsSL https://get.jetpack.io/devbox | bash
devpod:
_bin: devpod
_github: https://github.com/loft-sh/devpod
_name: DevPod
cask: devpod
devspace:
_bin: devspace
_github: https://github.com/devspace-sh/devspace
_name: DevSpace
brew: devspace
npm: devspace
scoop: devspace
devtoys:
_app: DevToys.app
_bin: devtoys
_github: https://github.com/ObuchiYuki/DevToysMac
cask: devtoys
devtoys-windows:
_bin: devtoys
_github: https://github.com/veler/DevToys
_name: Windows DevToys
choco: devtoys
winget: devtoys
dframe:
_bin: dframe
_desc: Put device frames around your mobile/web/progressive app screenshots
_github: https://github.com/c0bra/deviceframe
npm: deviceframe
dialect:
_bin: dialect
_github: https://github.com/dialect-app/dialect/
apt: dialect
dnf: dialect
flatpak: app.drey.Dialect
dialog:
_bin: dialog
_github: false
_home: https://invisible-island.net/dialog/
_name: Dialog
apt: dialog
brew: dialog
choco: dialog
dnf: dialog
pacman: dialog
difftastic:
_bin: difft
_desc: Difftastic is a structural diff tool that understands syntax.
_docs: https://difftastic.wilfred.me.uk/git.html
_github: https://github.com/Wilfred/difftastic
_home: https://difftastic.wilfred.me.uk/
_name: Difftastic
brew: difftastic
cargo: difftastic
direnv:
_bin: direnv
_desc: '[direnv](https://direnv.net/) is an extension for your shell. It augments existing shells with a new feature that can load and unload environment variables depending on the current directory.'
_docs: https://direnv.net/
_github: https://github.com/direnv/direnv
_home: https://direnv.net/
_name: direnv
ansible: professormanhattan.direnv
apt: direnv
brew: direnv
github: github.com/direnv/direnv
discord:
_github: false
_app: Discord.app
_bin: discord
_name: Discord
cask: discord
choco: discord
flatpak: com.discordapp.Discord
distrobox:
_bin: distrobox
_github: https://github.com/89luca89/distrobox
_name: Distrobox
apk: distrobox
apt: distrobox
dnf: distrobox
pacman: distrobox
dive:
_bin: dive
_desc: '[dive](https://github.com/wagoodman/dive) is a tool for exploring a docker image, layer contents, and discovering ways to shrink the size of the Docker/OCI image.'
_description: A tool for exploring each layer in a docker image
_github: https://github.com/wagoodman/dive
_home: https://github.com/wagoodman/dive
_name: dive
ansible: professormanhattan.dive
brew: dive
github: github.com/wagoodman/dive
go: github.com/wagoodman/dive@latest
yay: dive
dns:
_bin: null
_github: false
_desc: This role ensures that DNS requests are encrypted if you supply it the appropriate configuration. It uses systemd on Linux. On macOS/Windows, it installs and configures [Stubby](https://github.com/getdnsapi/stubby).
_name: DNS
ansible: professormanhattan.dns
dnsmasq:
_bin: dnsmasq
_desc: '[Dnsmasq](https://wiki.debian.org/dnsmasq) is free software providing Domain Name System caching, a Dynamic Host Configuration Protocol server, router advertisement and network boot features, intended for small computer networks.'
_docs: https://thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html
_github: https://github.com/imp/dnsmasq
_name: dnsmasq
_service: dnsmasq
ansible: professormanhattan.dnsmasq
apt: dnsmasq
brew: dnsmasq
dnf: dnsmasq
pacman: dnsmasq
port: dnsmasq
docker:
_github: https://github.com/microsoft/docker
_bin: docker
_deps:
- docker-images
_name: Docker CLI
apt:
- containerd.io
- docker-ce
- docker-ce-cli
- docker-compose-plugin
dnf:
- containerd.io
- docker-ce
- docker-ce-cli
- docker-compose-plugin
pacman:
- containerd.io
- docker-ce
- docker-ce-cli
- docker-compose-plugin
script:darwin: echo "Docker CLI installed by Docker Desktop on macOS"
zypper:
- containerd.io
- docker-ce
- docker-ce-cli
- docker-compose-plugin
docker-credential-helper:
_bin:darwin: docker-credential-osxkeychain
_bin:linux: docker-credential-secretservice
_bin:windows: docker-credential-wincred
_desc: Programs to keep Docker login credentials safe by storing in platform keystores
_docs: https://github.com/docker/docker-credential-helpers
_github: https://github.com/docker/docker-credential-helpers
_home: https://github.com/docker/docker-credential-helpers
_name: Docker Credential Helper
_preload: true
brew: docker-credential-helper
docker-desktop:
_app: Docker.app
_desc: '[Docker](https://www.docker.com/) is a set of platform-as-a-service products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels. [Docker Desktop](https://www.docker.com/products/docker-desktop/) adds a sleek UI for Docker and makes it easier to manage Docker on macOS and Windows.'
_docs: https://docs.docker.com/
_github: https://github.com/docker/compose
_home: https://www.docker.com/
_name: Docker Desktop
_post: "#!/usr/bin/env bash\n# @file DockerHub Login\n# @brief Logs into DockerHub for Docker Desktop\n# @description\n# This script logs into DockerHub so that Docker Desktop is pre-authenticated. This\n# functionality requires that the `DOCKERHUB_USER` be passed in as an environment variable (or \n# directly editted in the `~/.config/chezmoi/chezmoi.yaml` file) and that the `DOCKERHUB_TOKEN`\n# be passed in as a secret (either via the encrypted secret method or passed in as an environment\n# variable).\n\n### Login to DockerHub\nif command -v docker > /dev/null; then\n DOCKERHUB_TOKEN=\"{{ if (stat (joinPath .chezmoi.sourceDir \".chezmoitemplates\" \"secrets\" \"DOCKERHUB_TOKEN\")) }}{{- includeTemplate \"secrets/DOCKERHUB_TOKEN\" | decrypt | trim -}}{{ else }}{{- env \"DOCKERHUB_TOKEN\" -}}{{ end }}\"\n DOCKERHUB_USER=\"{{ .user.docker.username }}\"\n if [ -d \"/Applications/Docker.app\" ] || [ -d \"$HOME/Applications/Docker.app\" ]; then\n logg info 'Ensuring Docker.app is open' && open --background -a Docker --args --accept-license --unattended\n fi\n logg info 'Headlessly authenticating with DockerHub registry' && echo \"$DOCKERHUB_TOKEN\" | docker login -u \"$DOCKERHUB_USER\" --password-stdin > /dev/null && logg success 'Successfully authenticated with DockerHub registry'\nfi\n\n### Symlink on macOS\nif [ -f \"$HOME/Library/Containers/com.docker.docker/Data/docker.raw.sock\" ]; then\n logg info 'Symlinking /var/run/docker.sock to macOS Library location' && sudo ln -s \"$HOME/Library/Containers/com.docker.docker/Data/docker.raw.sock\" /var/run/docker.sock\nfi\n"
apt: https://desktop.docker.com/linux/main/amd64/docker-desktop-4.16.2-amd64.deb
cask: docker
choco: docker-desktop
dnf: https://desktop.docker.com/linux/main/amd64/docker-desktop-4.16.2-x86_64.rpm
pacman: https://desktop.docker.com/linux/main/amd64/docker-desktop-4.16.2-x86_64.pkg.tar.zst
docker-images:
_github: false
_desc: This entry is used to trigger a post-installation docker image pre-load. See the `docker-images` entry in `.chezmoidata.yaml`.
script: echo "Enabling docker-images pre-load"
docker-langserver:
_bin: docker-langserver
_desc: A Docker language server
_docs: https://github.com/rcjsuen/dockerfile-language-server-nodejs
_github: https://github.com/rcjsuen/dockerfile-language-server-nodejs
_home: https://github.com/rcjsuen/dockerfile-language-server-nodejs
_name: Docker Language Server
npm: dockerfile-language-server-nodejs
docker-plugins:
_github: false
_desc: This entry is used to trigger a post-installation Docker plugin installation. See `docker-plugins` entry in `.chezmoidata.yaml`.
docker-pushrm:
_bin: docker-pushrm
_github: https://github.com/christian-korneck/docker-pushrm
_name: Docker PushRM
script: |
if [ ! -f "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins/docker-pushrm" ]; then
logg info 'Acquiring release information for Docker push-rm'
RELEASE_TAG="$(curl -sSL https://api.github.com/repos/christian-korneck/docker-pushrm/releases/latest | jq -r '.tag_name')"
mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins"
logg info 'Downloading Docker push-rm' && curl https://github.com/christian-korneck/docker-pushrm/releases/download/$RELEASE_TAG/docker-pushrm_darwin_amd64 -o "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins/docker-pushrm"
chmod +x "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins/docker-pushrm"
logg success 'Added Docker push-rm'
else
logg info 'Docker push-rm already added'
fi
docker-slim:
_bin: slim
_desc: "[DockerSlim](https://dockersl.im/) will optimize and secure your containers by understanding your application and what it needs using various analysis techniques. It will throw away what you don't need, reducing the attack surface of your container. What if you need some of those extra things to debug your container? You can use dedicated debugging side-car containers for that."
_docs: https://github.com/docker-slim/docker-slim#basic-usage-info
_github: https://github.com/docker-slim/docker-slim
_home: https://dockersl.im/
_name: Docker Slim
brew: docker-slim
dnf:fedora: golang-github-docker-slim
github: github.com/docker-slim/docker-slim
yay: docker-slim
dockfmt:
_bin: dockfmt
_github: https://github.com/jessfraz/dockfmt
_name: dockfmt
go: github.com/jessfraz/dockfmt@latest
dockle:
_bin: dockle
_desc: Container Image Linter for Security, Helping build the Best-Practice Docker Image, Easy to start
_github: https://github.com/goodwithtech/dockle
_name: dockle
brew: goodwithtech/r/dockle
github: github.com/goodwithtech/dockle
yay: dockle-bin
dockly:
_bin: dockly
_github: https://github.com/lirantal/dockly
_name: Dockly
npm: dockly
dockutil:
_bin: dockutil
_github: https://github.com/kcrawford/dockutil
_name: DockUtil
brew:darwin: dockutil
doctl:
_bin: doctl
_desc: The official command line interface for the DigitalOcean API
_github: https://github.com/digitalocean/doctl
_name: doctl
brew: doctl
github: github.com/digitalocean/doctl
pacman: doctl
pkg: doctl
snap: doctl
dog:
_bin: dog
_desc: A command-line DNS client
_github: https://github.com/ogham/dog
_name: dog
brew: dog
github: github.com/ogham/dog
pacman: dog
pkg: dog
doitlive:
_bin: doitlive
_github: https://github.com/sloria/doitlive
_name: Do It Live!
brew: doitlive
pipx: doitlive
dokany:
_bin: dokany
_github: https://github.com/dokan-dev/dokany
_name: Dokany
_note: Required for CephFS on Windows
choco: dokany
dotenv-linter:
_bin: dotenv-linter
_desc: '[Dotenv Linter](https://dotenv-linter.github.io) is a lightning-fast linter for .env files. Written in Rust'
_github: https://github.com/dotenv-linter/dotenv-linter
_home: https://dotenv-linter.github.io/
_name: Dotenv Linter
brew: dotenv-linter
cargo: dotenv-linter
scoop: dotenv-linter
yay: dotenv-linter
dotenv-vault:
_bin: dotenv-vault
_name: Dotenv Vault
_github: https://github.com/dotenv-org/dotenv-vault
brew: dotenv-org/brew/dotenv-vault
npm: dotenv-vault
dotnet:
_bin: dotnet
_desc: "[.Net](https://dotnet.microsoft.com/) lets you create beautiful apps and scalable cloud services, faster and easier with the free, open-source platform that's loved by developers and trusted by organizations"
_docs: https://learn.microsoft.com/en-us/dotnet/
_github: https://github.com/dotnet
_home: https://dotnet.microsoft.com/
_name: .Net
brew: dotnet
choco: dotnet
yay: dotnet-sdk-bin
dprint:
_bin: dprint
_desc: '[dprint](https://dprint.dev/) is a pluggable and configurable code formatting platform written in Rust.'
_docs: https://dprint.dev/
_github: https://github.com/dprint
_home: https://dprint.dev/
_name: DPrint
brew: dprint
cargo: dprint
npm: dprint
scoop: dprint
script:darwin: curl -fsSL https://dprint.dev/install.sh | sh
script:linux: curl -fsSL https://dprint.dev/install.sh | sh
script:windows: iwr https://dprint.dev/install.ps1 -useb | iex
drawing:
_bin: drawing
_github: https://github.com/maoschanz/drawing
flatpak: com.github.maoschanz.drawing
drawio:
_app: draw.io.app
_bin: null
_desc: Desktop version of the popular diagrams.net diagramming software
_docs: https://www.drawio.com/doc/
_github: https://github.com/jgraph/drawio-desktop
_home: https://www.diagrams.net/
_name: DrawIO Desktop
appimage: draw.io
cask: drawio
choco: drawio
drone-cli:
_bin: drone
_desc: The Drone command line tools are used to interact with the Drone from the command line, and provide important utilities for managing users and repository settings
_docs: https://docs.drone.io/cli/install/
_github: https://github.com/harness/drone-cli
_home: https://www.drone.io/
_name: Drone CLI
brew: drone/drone/drone
github: github.com/harness/drone-cli
scoop: drone
dua:
_bin: dua
_github: https://github.com/Byron/dua-cli
brew: dua-cli
cargo: dua-cli
dnf:fedora: dua-cli
pacman: dua-cli
pkgin: dua-cli
port: dua-cli
scoop: dua
xbps: dua-cli
duf:
_bin: duf
_desc: "[duf](https://github.com/muesli/duf) is a Disk Usage/Free Utility - a better 'df' alternative. It displays a chart within your terminal that gives you an overview of hard-drive usage statistics."
_docs: https://github.com/muesli/duf#usage
_github: https://github.com/muesli/duf
_home: https://github.com/muesli/duf
_name: duf
ansible: professormanhattan.duf
brew: duf
choco: duf
github: github.com/muesli/duf
pacman: duf
pkg: duf
scoop: duf
dust:
_bin: dust
_desc: A more intuitive version of du in rust
_docs: https://github.com/bootandy/dust#usage
_github: https://github.com/bootandy/dust
_home: https://github.com/bootandy/dust
_name: dust
apk: dust
brew:darwin: dust
brew:linux: tgotwig/linux-dust/dust
cargo: du-dust
github: github.com/bootandy/dust
pacman: dust
duti:
_bin: duti
_github: https://github.com/moretension/duti
_name: Duti
brew:darwin: duti
eartrumpet:
_bin: null
_desc: Advanced, sleek volume controls for Windows
_docs: https://github.com/File-New-Project/EarTrumpet
_github: https://github.com/File-New-Project/EarTrumpet
_home: https://eartrumpet.app/
_name: EarTrumpet
choco: eartrumpet
winget: File-New-Project.EarTrumpet
easyengine:
_bin: ee
_desc: "[EasyEngine](https://easyengine.io/) is a command-line control panel for Nginx to manage WordPress sites running on Nginx, PHP, MySQL, and Let's Encrypt."
_docs: https://easyengine.io/handbook/
_github: https://github.com/EasyEngine/easyengine
_home: https://easyengine.io/
_name: EasyEngine
_post: |
#!/usr/bin/env bash
if [ -n "$CLOUDFLARE_EMAIL" ] && [ -n "$CLOUDFLARE_API_KEY" ]; then
ee config set le-mail "$CLOUDFLARE_EMAIL"
ee config set cloudflare-api-key "$CLOUDFLARE_API_KEY"
fi
brew: easyengine
script:linux: wget -qO ee rt.cx/ee4 && sudo bash ee
edex-ui:
_app: eDEX-UI.app
_bin: edex-ui
_desc: A cross-platform, customizable science fiction terminal emulator with advanced monitoring & touchscreen support.
_docs: https://github.com/GitSquared/edex-ui
_github: https://github.com/GitSquared/edex-ui
_home: https://github.com/GitSquared/edex-ui
_name: EDEX UI
appimage: edex-ui
cask: edex-ui
port: edex-ui
editly:
_bin: editly
_desc: Editly is a tool and framework for declarative NLE (non-linear video editing) using Node.js and ffmpeg. Editly allows you to easily and programmatically create a video from a set of clips, images, audio and titles, with smooth transitions and music overlaid.
_docs: https://github.com/mifi/editly#usage-command-line-video-editor
_github: https://github.com/mifi/editly
_home: https://github.com/mifi/editly
_name: Editly
npm: editly
eget:
_bin: eget
_github: https://github.com/zyedidia/eget
_name: eget
brew: eget
choco: eget
go: github.com/zyedidia/eget@latest
ejs:
_bin: ejs
_github: https://github.com/mde/ejs
_name: EJS
npm: ejs
electron:
_app: Electron.app
_bin: electron
_desc: '[Electron](https://www.electronjs.org/) allows you to build cross-platform desktop apps with JavaScript, HTML, and CSS'
_docs: https://www.electronjs.org/docs/latest/
_github: https://github.com/electron/electron
_home: https://www.electronjs.org/
_name: Electron
cask: electron
choco: electron
npm: electron
element:
_app: Element.app
_bin: element
_github: https://github.com/vector-im/element-web
_name: Element
cask: element
choco: element-desktop
flatpak: im.riot.Riot
emma:
_bin: emma
_desc: Advanced package search for NPM
_docs: https://www.npmjs.com/package/emma-cli#example
_github: https://github.com/maticzav/emma-cli
_home: https://www.npmjs.com/package/emma-cli
_name: Emma
npm: emma-cli
emoj:
_bin: emoj
_desc: Find relevant emoji from text on the command-line
_github: https://github.com/sindresorhus/emoj
_name: emoj
npm: emoj
emplace:
_bin: emplace
_desc: Emplace objects and arrays - pointer to pointer style
_docs: https://github.com/tversteeg/emplace
_github: https://github.com/tversteeg/emplace
_home: https://github.com/tversteeg/emplace
_name: Emplace
cargo: emplace --locked
nix: emplace
scoop: emplace
empty-trash:
_bin: empty-trash
_desc: CLI to empty trash on macOS, Windows, and Linux
_docs: https://github.com/sindresorhus/empty-trash-cli
_github: https://github.com/sindresorhus/empty-trash-cli
_home: https://github.com/sindresorhus/empty-trash-cli
_name: Empty Trash CLI
npm: empty-trash-cli
endlessh:
_bin: endlessh
_desc: '[Endlessh](https://github.com/skeeto/endlessh) is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server.'
_docs: https://github.com/skeeto/endlessh
_github: https://github.com/skeeto/endlessh
_home: https://github.com/skeeto/endlessh
_name: Endlessh
_post: |
#!/usr/bin/env bash
# @file Endlessh Configuration
# @brief Applies the Endlessh configuration and starts the service on Linux systems
# @description
# Endlessh is a endless SSH tarpit that slowly shows an infinitely long SSH welcome banner on the default
# SSH port. It is intended to break unsophisticated malware that targets SSH.
#
# If the `endlessh` program is installed, this script applies the configuration stored in `home/private_dot_ssh/endlessh/config.tmpl`
# (that unpacks with Chezmoi to `~/.ssh/endlessh/config`) to the system location and then starts the service.
#
# **Note:** _This script runs under the assumption that the actual SSH port which is defined in `home/.chezmoidata.yaml`
# is assigned to a non-standard port like 2214. This allows the default port to be used for `endlessh`._
#
# ## Links
#
# * [Endlessh GitHub repository](https://github.com/skeeto/endlessh)
# * [Endlessh configuration](https://github.com/megabyte-labs/install.doctor/blob/master/home/private_dot_ssh/endlessh/config.tmpl)
### Configures endlessh service
function configureEndlessh() {
### Update the service configuration file
logg info 'Updating endlessh service configuration file'
sudo sed -i 's/^.*#AmbientCapabilities=CAP_NET_BIND_SERVICE/AmbientCapabilities=CAP_NET_BIND_SERVICE/' /usr/lib/systemd/system/endlessh.service
sudo sed -i 's/^.*PrivateUsers=true/#PrivateUsers=true/' /usr/lib/systemd/system/endlessh.service
logg info 'Reloading systemd' && sudo systemctl daemon-reload
### Update capabilities of `endlessh`
logg info 'Updating capabilities of endlessh' && sudo setcap 'cap_net_bind_service=+ep' /usr/bin/endlessh
### Restart / enable Endlessh
logg info 'Enabling the endlessh service' && sudo systemctl enable endlessh
logg info 'Restarting the endlessh service' && sudo systemctl restart endlessh
}
### Update /etc/endlessh/config if environment is not WSL
if [[ ! "$(test -d proc && grep Microsoft /proc/version > /dev/null)" ]]; then
if command -v endlessh > /dev/null; then
if [ -d /etc/endlessh ]; then
logg info 'Copying ~/.ssh/endlessh/config to /etc/endlessh/config' && sudo cp -f "$HOME/.ssh/endlessh/config" /etc/endlessh/config
configureEndlessh || CONFIGURE_EXIT_CODE=$?
if [ -n "$CONFIGURE_EXIT_CODE" ]; then
logg error 'Configuring endlessh service failed' && exit 1
else
logg success 'Successfully configured endlessh service'
fi
elif [ -f /etc/endlessh.conf ]; then
logg info 'Copying ~/.ssh/endlessh/config to /etc/endlessh.conf' && sudo cp -f "$HOME/.ssh/endlessh/config" /etc/endlessh.conf
configureEndlessh || CONFIGURE_EXIT_CODE=$?
if [ -n "$CONFIGURE_EXIT_CODE" ]; then
logg error 'Configuring endlessh service failed' && exit 1
else
logg success 'Successfully configured endlessh service'
fi
else
logg warn 'Neither the /etc/endlessh folder nor the /etc/endlessh.conf file exist'
fi
else
logg info 'Skipping Endlessh configuration because the endlessh executable is not available in the PATH'
fi
else
logg info 'Skipping Endlessh configuration since environment is WSL'
fi
_service: endlessh
# CentOS 9 not in EPEL
# ansible:linux: professormanhattan.sshtarpit
apt: endlessh
dnf:fedora: endlessh
yay: endlessh-git
enola:
_bin: enola
_desc: Hunt down social media accounts by username across social networks (Sherlock Go clone)
_docs: https://github.com/TheYahya/enola
_github: https://github.com/TheYahya/enola
_home: https://github.com/TheYahya/enola
_name: Enola
go: github.com/theyahya/enola/cmd/enola@latest
envchain:
_bin: envchain
_deps:
- _envchain:deps
_desc: Environment variables meet macOS Keychain and gnome-keyring
_docs: https://github.com/sorah/envchain#usage
_github: https://github.com/sorah/envchain
_home: https://github.com/sorah/envchain
_name: envchain
_post: |
#!/usr/bin/env bash
# @file Store Secrets in Keyring
# @brief Stores secret environment variables into the System keyring
# @description
# This script imports secret environment variables into the System keyring if `envchain` is installed.
# Secrets stored in the folder 'home/.chezmoitemplates/secrets' following the Install Doctor method are
# imported into the System keyring by this script. There is only one namespace called `default` where the
# secrets are stored. Executing `envchain default env` displays all the environment variables and their values.
#
# ## Secrets
#
# For more information about storing secrets like SSH keys and API keys, refer to our [Secrets documentation](https://install.doctor/docs/customization/secrets).
### Import environment variables into `envchain`
if command -v envchain > /dev/null; then
{{- if (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) }}
logg info 'Importing environment variables into the System keyring'
for file in {{ joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "*" }}; do
cat "$file" | chezmoi decrypt | envchain -s default "$(basename $file)" > /dev/null || logg info 'Importing "$(basename $file)" failed'
done
{{- else }}
logg warn 'Unable to import any variables into envchain because ~/.config/age/chezmoi.txt was not created by the secrets encryption process yet'
{{- end }}
else
logg info 'envchain is not installed or it is not available in the PATH'
fi
brew: envchain
github: github.com/sorah/envchain
envconsul:
_bin: envconsul
_desc: Launch a subprocess with environment variables using data from @hashicorp Consul and Vault
_github: https://github.com/hashicorp/envconsul
_name: envconsul
ansible: professormanhattan.envconsul
brew: envconsul
github: github.com/hashicorp/envconsul
envio:
_bin: envio
_github: https://github.com/humblepenguinn/envio
_name: Envio
cargo: envio
environment:
_bin: null
_github: false
ansible: professormanhattan.environment
envpane:
_bin: null
_desc: An OS X preference pane for environment variables
_docs: https://github.com/hschmidt/EnvPane
_github: https://github.com/hschmidt/EnvPane
_home: https://github.com/hschmidt/EnvPane
_name: EnvPane
_when:script: '! test -d "$HOME/Library/PreferencePanes/EnvPane.prefPane"'
script:darwin: '(cd ~/Library/PreferencePanes && rm -rf EnvPane.prefPane && curl -sL https://github.com/hschmidt/EnvPane/releases/download/releases%2F0.8/EnvPane-0.8.tar.bz2 | tar -xjf -)'
eslint:
_bin: eslint
_desc: '[ESLint](https://eslint.org/) allows you to find and fix problems in your JavaScript code'
_docs: https://eslint.org/docs
_github: https://github.com/eslint/eslint
_home: https://eslint.org/
_name: ESLint
brew: eslint
npm: eslint
eslint-dashboard:
_bin: eslint-dashboard
_github: https://github.com/fengzilong/eslint-dashboard
_name: ESLint Dashboard
npm: eslint-dashboard
eslint-interactive:
_bin: eslint-interactive
_github: https://github.com/mizdra/eslint-interactive
_name: ESLint Interactive
npm: eslint-interactive
eslintd:
_bin: eslint_d
_docs: https://github.com/mantoni/eslint_d.js
_github: https://github.com/mantoni/eslint_d.js
_home: https://github.com/mantoni/eslint_d.js
_name: ESLint_d
npm: eslint_d
espanso:
_app: Espanso.app
_bin: espanso
_github: https://github.com/espanso/espanso
_name: Espanso
_post:appimage: |
#!/usr/bin/env bash
espanso service register && espanso start
_post:snap: |
#!/usr/bin/env bash
espanso service register && espanso start
appimage: federico-terzi/espanso
cask: espanso
choco: espanso
snap: espanso --channel=latest/edge --classic
esprint:
_bin: esprint
_github: https://github.com/pinterest/esprint
_name: ESPrint
npm: esprint
etcd:
_bin: etcd
_desc: Distributed reliable key-value store for the most critical data of a distributed system
_github: https://github.com/etcd-io/etcd
_name: etcd
_service: etcd
_serviceEnabled: true
apt: etcd
brew: etcd
choco: etcd
dnf:fedora: etcd
github: github.com/etcd-io/etcd
yay: etcd
ettercap:
_bin: ettercap
_github: https://github.com/Ettercap/ettercap
_name: Ettercap
apt: ettercap
brew: ettercap
choco: ettercap
dnf: ettercap
pacman: ettercap
eul:
_app: eul.app
_bin: null
_desc: Menu bar application that shows system stats like CPU, RAM, and disk usage on macOS
_docs: https://github.com/gao-sun/eul
_github: https://github.com/gao-sun/eul
_home: https://github.com/gao-sun/eul
_name: Eul
cask: eul
mas: 1537133867
exa:
_bin: exa
_desc: A modern replacement for ls.
_docs: https://the.exa.website/introduction
_github: https://github.com/ogham/exa
_home: https://the.exa.website/
_name: Exa
apt: exa
brew: exa
cargo: exa
dnf: exa
emerge: sys-apps/exa
nix: exa
pacman: exa
zypper: exa
exiftool:
_bin: exiftool
_desc: '[exiftool](https://exiftool.org/) is a platform-independent Perl library plus a command-line application for reading, writing and editing meta information in a wide variety of files'
_docs: https://exiftool.org/exiftool_pod.html
_github: https://github.com/exiftool/exiftool
_home: https://exiftool.org/
_name: exiftool
ansible: professormanhattan.exiftool
apt: libimage-exiftool-perl
brew: exiftool
choco: exiftool
dnf: perl-Image-ExifTool.noarch
pacman: perl-image-exiftool
port: exiftool
scoop: exiftool
expect:
_bin: expect
_name: Expect
_github: false
apt: expect
brew: expect
dnf: expect
pacman: expect
port: expect
extensions:
_bin: null
_github: false
_desc: This role acts as a catch-all for extensions for various system software.
_name: Extensions
ansible: professormanhattan.extensions
fabric:
_bin: fab
_github: https://github.com/fabric/fabric
_name: Fabric
brew: fabric
pipx: fabric
fail2ban:
_bin: fail2ban-client
_github: https://github.com/fail2ban/fail2ban
_notes: |
fail2ban cannot be installed on Qubes Fedora 36 without messing with the qubes-firewall since firewalld is required.
_post: |
#!/usr/bin/env bash
# @file Fail2ban Configuration
# @brief Applies the system `fail2ban` jail configuration and then restarts the service
# @description
# Fail2ban is an SSH security program that temporarily bans IP addresses that could possibly be
# attempting to gain unauthorized system access. This script applies the "jail" configuration
# located at `home/private_dot_ssh/fail2ban/` to the system location. It then enables and restarts
# the `fail2ban` configuration.
#
# ## Links
#
# * [`fail2ban` configuration folder](https://github.com/megabyte-labs/install.doctor/tree/master/home/private_dot_ssh/fail2ban)
### Notify of script start
logg info 'Configuring fail2ban'
### Restart fail2ban
function restartFailToBan() {
if [ -d /Applications ] && [ -d /System ]; then
### macOS
logg info 'Enabling the fail2ban Homebrew service'
brew services restart fail2ban
else
# Linux
logg info 'Enabling the fail2ban service'
sudo systemctl enable fail2ban
logg info 'Restarting the fail2ban service'
sudo systemctl restart fail2ban
fi
}
### Update the jail.local file if environment is not WSL
logg info 'Checking if script is being run in WSL environment'
if [[ ! "$(test -d /proc && grep Microsoft /proc/version > /dev/null)" ]]; then
if [ -d /etc/fail2ban ]; then
logg info 'Copying ~/.ssh/fail2ban/jail.local to /etc/fail2ban/jail.local'
sudo cp -f "$HOME/.ssh/fail2ban/jail.local" /etc/fail2ban/jail.local
restartFailToBan
elif [ -d /usr/local/etc/fail2ban ]; then
logg info 'Copying ~/.ssh/fail2ban/jail.local to /usr/local/etc/fail2ban/jail.local'
sudo cp -f "$HOME/.ssh/fail2ban/jail.local" /usr/local/etc/fail2ban/jail.local
restartFailToBan
elif [ -d "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/fail2ban" ]; then
logg info "Copying ~/.ssh/fail2ban/jail.local to ${HOMEBREW_PREFIX:-/opt/homebrew}/etc/fail2ban/jail.local"
sudo cp -f "$HOME/.ssh/fail2ban/jail.local" "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/fail2ban/jail.local"
restartFailToBan
else
logg warn 'The /etc/fail2ban (Linux), the /usr/local/etc/fail2ban, and the ${HOMEBREW_PREFIX:-/opt/homebrew}/etc/fail2ban (macOS) folder do not exist'
fi
else
logg info 'Skipping sshd_config application since environment is WSL'
fi
_service: fail2ban
_service:brew:
- name: fail2ban
sudo: true
_serviceEnabled: true
_when:linux: '! command -v qubes-firewall > /dev/null && test -f /proc/version && ! grep Microsoft /proc/version > /dev/null'
apt: fail2ban
brew: fail2ban
dnf: fail2ban
pacman: fail2ban
port: fail2ban
fastify:
_bin: fastify
_desc: Run a Fastify application with one command
_github: https://github.com/fastify/fastify-cli
_home: https://www.fastify.io/
_name: fastify
npm: fastify-cli
fastlane:
_bin: fastlane
_github: https://github.com/fastlane/fastlane
_home: https://fastlane.tools/
_name: Fastlane
brew: fastlane
gem: fastlane
fcp:
_bin: fcp
_desc: A significantly faster alternative to the classic Unix cp(1) command, copying large files and directories in a fraction of the time.
_docs: https://github.com/Svetlitski/fcp#usage
_github: https://github.com/Svetlitski/fcp
_home: https://github.com/Svetlitski/fcp
_name: fcp
brew: fcp
cargo: fcp
nix: unstable.fcp
fd:
_bin: fd
_bin:apt: fdfind
_desc: "[fd](https://github.com/sharkdp/fd) is a program that can search for files on your filesystem. It is a simple, fast, and user-friendly alternative to find. While it does not aim to support all of find's powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases."
_github: https://github.com/sharkdp/fd
_name: fd
ansible: professormanhattan.fd
apk: fd
apt: fd-find
brew: fd
cargo: fd-find
choco: fd
github: github.com/sharkdp/fd
pacman: fd
pkg: fd
scoop: fd
fdupes:
_bin: fdupes
_github: https://github.com/adrianlopezroche/fdupes
_name: fdupes
apt: fdupes
brew: fdupes
dnf: fdupes
pacman: fdupes
feathers:
_bin: feathers
_desc: The command line interface for scaffolding Feathers applications
_github: https://github.com/feathersjs-ecosystem/cli
npm: '@feathersjs/cli'
ferdium:
_app: Ferdium.app
_github: https://github.com/ferdium/ferdium-app
_bin: ferdium
_env:
FERDIUM_APPDATA:
cask: "$HOME/Library/Application Support/Ferdium"
choco: TODO
flatpak: "$HOME/.var/app/org.ferdium.Ferdium/config/Ferdium"
snap: "$HOME/snap/ferdium/current/.config/Ferdium"
cask: ferdium
choco: ferdium
flatpak: org.ferdium.Ferdium
snap: ferdium
ffmpeg:
_bin: ffmpeg
_desc: '[FFmpeg](https://www.ffmpeg.org/) is the leading multimedia framework. It is able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge.'
_github: https://github.com/FFmpeg/FFmpeg
_name: FFmpeg
ansible: professormanhattan.ffmpeg
apk: ffmpeg
apt: ffmpeg
brew: ffmpeg
choco: ffmpeg
dnf: ffmpeg
pacman: ffmpeg
scoop: ffmpeg
ffsend:
_bin: ffsend
_desc: '[ffsend](https://github.com/timvisee/ffsend) (formerly [Firefox Send](https://support.mozilla.org/en-US/kb/what-happened-firefox-send)) allows you to easily and securely share files and directories from the command line through a safe, private and encrypted link using a single simple command. Files are shared using the [Send](https://send.vis.ee/) service and may be up to 1GB. Others are able to download these files with this tool, or through their web browser.'
_github: https://github.com/timvisee/ffsend
_name: ffsend
ansible: professormanhattan.ffsend
apk: ffsend
brew: ffsend
github: github.com/timvisee/ffsend
pkg: ffsend
scoop: ffsend
snap: ffsend
yay: ffsend
fiddler:
_bin: fiddler
_desc: The community-trusted free Windows-only tool that logs HTTP(s) network traffic.
_docs: https://docs.telerik.com/fiddler/configure-fiddler/tasks/configurefiddler
_github: false
_home: https://www.telerik.com/fiddler
_name: Fiddler
_todo: Add headless installation method for Linux
choco: fiddler
scoop: extras/fiddler
fig:
_app: Fig.app
_bin: fig
_desc: '[Fig](https://fig.io/) adds autocomplete to your terminal. As you type, Fig pops up subcommands, options, and contextually relevant arguments in your existing terminal.'
_docs: https://fig.io/user-manual
_github: https://github.com/withfig/autocomplete
_home: https://fig.io/
_name: Fig
_post: |
#!/usr/bin/env bash
source ~/.config/shell/private.sh && fig login --token "$FIG_TOKEN"
cask: fig
figlet:
_bin: figlet
_github: https://github.com/cmatsuoka/figlet
_name: Figlet
apt: figlet
brew: figlet
choco: figlet
dnf: figlet
pacman: figlet
zypper: figlet
figma:
_app: Figma.app
_bin: null
_desc: Collaborative team software
_docs: https://help.figma.com/hc/en-us
_github: false
_home: https://www.figma.com/
_name: Figma
appimage: Figma-Linux/figma-linux
cask: figma
choco: figma
flatpak: io.github.Figma_Linux.figma_linux
snap: figma-linux
filebrowser:
_bin: filebrowser
_desc: '[File Browser](https://filebrowser.org/) is a tool that lets you browse and edit files on any mounting point in the operating system.'
_docs: https://filebrowser.org/installation
_github: https://github.com/filebrowser/filebrowser
_home: https://filebrowser.org/
_name: File Browser
ansible: professormanhattan.filebrowser
brew: filebrowser/tap/filebrowser
github: github.com/filebrowser/filebrowser
filezilla:
_app: FileZilla.app
_bin: filezilla
_desc: '[FileZilla](https://filezilla-project.org/) is a free software, cross-platform FTP application, consisting of FileZilla Client and FileZilla Server. Client binaries are available for Windows, Linux, and macOS, server binaries are available for Windows only.'
_docs: https://wiki.filezilla-project.org/Documentation
_github: https://svn.filezilla-project.org/filezilla/
_home: https://filezilla-project.org/
_name: FileZilla
ansible:darwin: professormanhattan.filezilla
apt: filezilla
choco: filezilla
dnf: filezilla
flatpak: org.filezillaproject.Filezilla
pacman: filezilla
findutils:
_bin: gfind
_github: false
brew: findutils
finish:
_bin: null
_github: false
_desc: This role should be the last role in the playbook.
_name: Finish
ansible: professormanhattan.finish
firebase:
_github: https://github.com/firebase/firebase-tools
_bin: firebase
_desc: The Firebase Command Line Interface (CLI) Tools can be used to test, manage, and deploy your Firebase project from the command line
npm: firebase-tools
firefox:
_app: Firefox.app
_bin: firefox
_github: false
_deps:
- htmlq
_desc: '[Mozilla Firefox](https://www.mozilla.org/en-US/firefox/new/), or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.'
_docs: https://developer.mozilla.org/en-US/
_env:
FIREFOX_APPDATA:
apt: "$HOME/.mozilla/firefox"
cask: "$HOME/Library/Application Support/Firefox/Profiles"
choco: "TODO"
dnf: "$HOME/.mozilla/firefox"
flatpak: "$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox"
pacman: "$HOME/.mozilla/firefox"
snap: "$HOME/snap/firefox/common/.mozilla/firefox"
_home: https://www.mozilla.org/en-US/firefox/new/
_name: Mozilla Firefox
_post: |
#!/usr/bin/env bash
# @file Firefox Settings / Add-Ons / Profiles
# @brief This script configures system-wide settings, sets up Firefox Profile Switcher, creates various profiles from different sources, and installs a configurable list of Firefox Add-Ons.
# @description
# The Firefox setup script performs a handful of tasks that automate the setup of Firefox as well as
# useful utilities that will benefit Firefox power-users. The script also performs the same logic on
# [LibreWolf](https://librewolf.net/) installations.
#
# ## Features
#
# * Installs and sets up [Firefox Profile Switcher](https://github.com/null-dev/firefox-profile-switcher)
# * Sets up system-wide enterprise settings (with configurations found in `~/.local/share/firefox`)
# * Sets up a handful of default profiles to use with the Firefox Profile Switcher
# * Automatically installs the plugins defined in the firefoxAddOns key of [`home/.chezmoidata.yaml`](https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoidata.yaml) to the Standard and Private profiles
# * Configures the default profile to clone its settings from the profile stored in firefoxPublicProfile of `home/.chezmoidata.yaml`
# * Optionally, if the Chezmoi encryption key is present, then the default profile will be set to the contents of an encrypted `.tar.gz` that must be stored in the cloud somewhere (with the firefoxPrivateProfile key in `home/.chezmoidata.yaml` defining the URL of the encrypted `.tar.gz`)
#
# ## Profiles
#
# The script sets up numerous profiles for user flexibility. They can be switched by using the Firefox Profile Switcher
# that this script sets up. The map of the profiles is generated by using the template file stored in `~/.local/share/firefox/profiles.ini`.
# The following details the features of each profile:
#
# | Name | Description |
# |------------------|---------------------------------------------------------------------------------------------|
# | Factory | Default browser settings (system-wide configurations still apply) |
# | default-release | Same as Factory (unmodified and generated by headlessly opening Firefox / LibreWolf) |
# | Git (Public) | Pre-configured profile with address stored in `firefoxPublicProfile` |
# | Standard | Cloned from the profile above with `firefoxAddOns` also installed |
# | Miscellaneous | Cloned from the Factory profile (with the user.js found in `~/.config/firefox` applied) |
# | Development | Same as Miscellaneous |
# | Automation | Same as Miscellaneous |
# | Private | Populated from an encrypted profile stored in the cloud (also installs `firefoxAddOns`) |
#
# ## Notes
#
# * The Firefox Profile Switcher is only compatible with Firefox and not LibreWolf
# * This script is only designed to properly provision profiles on a fresh installation (so it does not mess around with pre-existing / already configured profiles)
# * Additional profiles for LibreWolf are not added because the Firefox Profile Switcher is not compatible with LibreWolf
#
# ## Links
#
# * [System-wide configurations](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_local/share/firefox) as well as the location of the `profile.ini` and some other configurations
# * [User-specific configurations](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/firefox/user.js) added to all profiles except Factory
function installFirefoxProfileConnector() {
logg info 'Installing the Firefox Profile Connector'
if command -v apt-get > /dev/null; then
sudo apt-get install -y https://github.com/null-dev/firefox-profile-switcher-connector/releases/latest/download/linux-x64.deb
elif command -v dnf > /dev/null; then
sudo dnf install -y https://github.com/null-dev/firefox-profile-switcher-connector/releases/latest/download/linux-x64.rpm
elif command -v yay > /dev/null; then
yay -Ss firefox-profile-switcher-connector
else
logg warn 'apt-get, dnf, and yay were all unavailable so the Firefox Profile Connector helper executable could not be installed'
fi
}
function firefoxSetup() {
### Installs the Firefox Profile Connector on Linux systems (Snap / Flatpak installs are not included in this function, but instead inline below)
### Add Firefox enterprise profile
# TODO - figure out how to do this for other installations like Flatpak and macOS and Librewolf
for FIREFOX_DIR in '/usr/lib/firefox' '/usr/lib/firefox-esr' '/etc/firefox' '/etc/firefox-esr' '/Applications/Firefox.app/Contents/Resources'; do
if [ -d "$FIREFOX_DIR" ] && [ -d "${XDG_DATA_HOME:-$HOME/.local/share}/firefox" ] && command -v rsync > /dev/null; then
logg info "Syncing enterprise profiles from ${XDG_DATA_HOME:-$HOME/.local/share}/firefox to $FIREFOX_DIR"
sudo rsync -artvu "${XDG_DATA_HOME:-$HOME/.local/share}/firefox/" "$FIREFOX_DIR" > /dev/null
fi
done
### Loop through various Firefox profile locations
for SETTINGS_DIR in "$HOME/snap/firefox/common/.mozilla/firefox" "$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox" "$HOME/Library/Application Support/Firefox/Profiles" "$HOME/.mozilla/firefox"; do
### Determine executable to use
logg info "Processing Firefox profile location $SETTINGS_DIR"
unset FIREFOX_EXE
if [ "$SETTINGS_DIR" == "$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox" ]; then
if ! command -v org.mozilla.firefox > /dev/null || [ ! -d "$HOME/.var/app/org.mozilla.firefox" ]; then
continue
else
FIREFOX_EXE="$(which org.mozilla.firefox)"
### Firefox Profile Switcher
BASE_DIR="$HOME/.var/app/org.mozilla.firefox"
BIN_INSTALL_DIR="$BASE_DIR/data/firefoxprofileswitcher-install"
MANIFEST_INSTALL_DIR="$BASE_DIR/.mozilla/native-messaging-hosts"
DOWNLOAD_URL="https://github.com/null-dev/firefox-profile-switcher-connector/releases/latest/download/linux-x64.deb"
### Ensure Firefox Profile Switcher is not already installed
if [ ! -f "$BIN_INSTALL_DIR/usr/bin/ff-pswitch-connector" ] || [ ! -f "$MANIFEST_INSTALL_DIR/ax.nd.profile_switcher_ff.json" ]; then
### Download profile switcher
mkdir -p "$BIN_INSTALL_DIR"
TMP_FILE="$(mktemp)"
logg info 'Downloading Firefox Profile Switch connector'
curl -sSL "$DOWNLOAD_URL" -o "$TMP_FILE"
ar p "$TMP_FILE" data.tar.xz | tar xfJ - --strip-components=2 -C "$BIN_INSTALL_DIR" usr/bin/ff-pswitch-connector
rm -f "$TMP_FILE"
### Create manifest
logg info 'Copying profile switcher configuration to manifest directory'
mkdir -p "$MANIFEST_INSTALL_DIR"
cat "${XDG_DATA_HOME:-$HOME/.local/share}/firefox/profile-switcher.json" | sed 's=PATH_PLACEHOLDER='"$BIN_INSTALL_DIR"'=' > "$MANIFEST_INSTALL_DIR/ax.nd.profile_switcher_ff.json"
fi
fi
elif [ "$SETTINGS_DIR" == "$HOME/.var/app/io.gitlab.librewolf-community/.librewolf" ]; then
if ! command -v io.gitlab.librewolf-community > /dev/null || [ ! -d "$HOME/.var/app/io.gitlab.librewolf-community" ]; then
continue
else
continue
# FIREFOX_EXE="$(which io.gitlab.librewolf-community)"
fi
elif [ "$SETTINGS_DIR" == "$HOME/Library/Application Support/Firefox/Profiles" ]; then
FIREFOX_EXE="/Applications/Firefox.app/Contents/MacOS/firefox"
if [ ! -f "$FIREFOX_EXE" ] || [ ! -d /Applications ]; then
continue
else
### Download Firefox Profile Switcher
if [ ! -d /usr/local/Cellar/firefox-profile-switcher-connector ]; then
logg info 'Ensuring Firefox Profile Switcher is installed'
brew install --quiet null-dev/firefox-profile-switcher/firefox-profile-switcher-connector
fi
### Ensure Firefox Profile Switcher configuration is symlinked
if [ ! -d "/Library/Application Support/Mozilla/NativeMessagingHosts/ax.nd.profile_switcher_ff.json" ]; then
logg info 'Ensuring Firefox Profile Switcher is configured'
sudo mkdir -p "/Library/Applcation Support/Mozilla/NativeMessagingHosts"
sudo ln -sf "$(brew ls -l firefox-profile-switcher-connector | grep -i ax.nd.profile_switcher_ff.json | head -n1)" "/Library/Application Support/Mozilla/NativeMessagingHosts/ax.nd.profile_switcher_ff.json"
fi
fi
elif [ "$SETTINGS_DIR" == "$HOME/Library/Application Support/LibreWolf/Profiles" ]; then
continue
# FIREFOX_EXE="/Applications/LibreWolf.app/Contents/MacOS/librewolf"
# if [ ! -f "$FIREFOX_EXE" ] || [ ! -d /Applications ]; then
# logg info "$FIREFOX_EXE is not a file"
# continue
# fi
elif [ "$SETTINGS_DIR" == "$HOME/snap/firefox/common/.mozilla/firefox" ]; then
FIREFOX_EXE="/snap/bin/firefox"
if [ ! -f "$FIREFOX_EXE" ] || [ ! -d "$HOME/snap/firefox" ]; then
continue
else
### Firefox Profile Switcher
BASE_DIR="$HOME/snap/firefox/common"
BIN_INSTALL_DIR="$BASE_DIR/firefoxprofileswitcher-install"
MANIFEST_INSTALL_DIR="$BASE_DIR/.mozilla/native-messaging-hosts"
DOWNLOAD_URL="https://github.com/null-dev/firefox-profile-switcher-connector/releases/latest/download/linux-x64.deb"
### Ensure Firefox Profile Switcher is not already installed
if [ ! -f "$BIN_INSTALL_DIR/usr/bin/ff-pswitch-connector" ] || [ ! -f "$MANIFEST_INSTALL_DIR/ax.nd.profile_switcher_ff.json" ]; then
### Download profile switcher
mkdir -p "$BIN_INSTALL_DIR"
TMP_FILE="$(mktemp)"
logg info 'Downloading Firefox Profile Switch connector'
curl -sSL "$DOWNLOAD_URL" -o "$TMP_FILE"
ar p "$TMP_FILE" data.tar.xz | tar xfJ - --strip-components=2 -C "$BIN_INSTALL_DIR" usr/bin/ff-pswitch-connector
rm -f "$TMP_FILE"
### Create manifest
logg info 'Copying profile switcher configuration to manifest directory'
mkdir -p "$MANIFEST_INSTALL_DIR"
cat "${XDG_DATA_HOME:-$HOME/.local/share}/firefox/profile-switcher.json" | sed 's/PATH_PLACEHOLDER/'"$BIN_INSTALL_DIR"'/' > "$MANIFEST_INSTALL_DIR/ax.nd.profile_switcher_ff.json"
fi
fi
elif [ "$SETTINGS_DIR" == "$HOME/.mozilla/firefox" ]; then
if command -v firefox-esr > /dev/null; then
FIREFOX_EXE="$(which firefox-esr)"
installFirefoxProfileConnector
elif command -v firefox > /dev/null && [ "$(which firefox)" != *'snap'* ] && [ "$(which firefox)" != *'flatpak'* ] && [ ! -d /Applications ] && [ ! -d /System ]; then
# Conditional check ensures Snap / Flatpak / macOS Firefox versions do not try to install to the wrong folder
FIREFOX_EXE="$(which firefox)"
installFirefoxProfileConnector
else
if [ -d /Applications ] && [ -d /System ]; then
# Continue on macOS without logging because profiles are not stored here on macOS
continue
else
logg warn 'Unable to register Firefox executable'
logg info "Settings directory: $SETTINGS_DIR"
continue
fi
fi
fi
### Initiatize Firefox default profiles
logg info "Processing executable located at $FIREFOX_EXE"
if command -v "$FIREFOX_EXE" > /dev/null; then
### Create default profile by launching Firefox headlessly
logg info "Firefox executable set to $FIREFOX_EXE"
if [ ! -d "$SETTINGS_DIR" ]; then
logg info 'Running Firefox (or its derivative) headlessly to generate default profiles'
timeout 14 "$FIREFOX_EXE" --headless
logg info 'Finished running Firefox headlessly'
elif [ -d /Applications ] && [ -d /System ] && [ ! -f "$SETTINGS_DIR/../installs.ini" ]; then
logg info 'Running Firefox (or its derivative) headlessly to generate default profiles because install.ini is not at the macOS default location.'
timeout 14 "$FIREFOX_EXE" --headless
logg info 'Finished running Firefox headlessly (while fixing the missing macOS installs.ini issue)'
fi
### Ensure settings directory exists (since the application was brought up temporarily headlessly)
if [ ! -d "$SETTINGS_DIR" ]; then
logg warn "The settings directory located at $SETTINGS_DIR failed to be populated by running the browser headlessly"
continue
fi
### Add the populated profiles.ini
logg info "Copying "${XDG_DATA_HOME:-$HOME/.local/share}/firefox/profiles.ini" to profile directory"
logg info "The settings directory is $SETTINGS_DIR"
if [ -d /Applications ] && [ -d /System ]; then
# macOS
logg info "Copying ~/.local/share/firefox/profiles.ini to $SETTINGS_DIR/../profiles.ini"
cp -f "${XDG_DATA_HOME:-$HOME/.local/share}/firefox/profiles.ini" "$SETTINGS_DIR/../profiles.ini"
SETTINGS_INI="$SETTINGS_DIR/../installs.ini"
else
# Linux
logg info "Copying ~/.local/share/firefox/profiles.ini to $SETTINGS_DIR/profiles.ini"
cp -f "${XDG_DATA_HOME:-$HOME/.local/share}/firefox/profiles.ini" "$SETTINGS_DIR/profiles.ini"
SETTINGS_INI="$SETTINGS_DIR/installs.ini"
fi
### Default profile (created by launching Firefox headlessly)
DEFAULT_RELEASE_PROFILE="$(find "$SETTINGS_DIR" -mindepth 1 -maxdepth 1 -name "*.default" -not -name "profile.default")"
if [ -n "$DEFAULT_RELEASE_PROFILE" ]; then
logg info "Syncing $DEFAULT_RELEASE_PROFILE to $SETTINGS_DIR/profile.default"
rsync -a "$DEFAULT_RELEASE_PROFILE/" "$SETTINGS_DIR/profile.default"
else
logg warn 'Unable to sync default Mozilla Firefox profile'
fi
### Ensure original installs.ini is removed
if [ -f "$SETTINGS_INI" ]; then
# DEFAULT_PROFILE_PROFILE="$SETTINGS_DIR/$(cat "$SETTINGS_INI" | grep 'Default=' | sed 's/.*Profiles\///')"
logg info 'Removing previous installs.ini file'
rm -f "$SETTINGS_INI"
else
logg info 'installs.ini was not present in the Mozilla Firefox settings folder'
fi
### Miscellaneous default profiles
for NEW_PROFILE in "automation" "development" "miscellaneous"; do
if [ ! -d "$SETTINGS_DIR/profile.${NEW_PROFILE}" ] && [ -d "$SETTINGS_DIR/profile.default" ]; then
logg info "Cloning $NEW_PROFILE from profile.default"
rsync -a "$SETTINGS_DIR/profile.default/" "$SETTINGS_DIR/profile.${NEW_PROFILE}"
rsync -a "${XDG_DATA_HOME:-$HOME/.local/share}/firefox/" "$SETTINGS_DIR/profile.${NEW_PROFILE}"
cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/firefox/user.js" "$SETTINGS_DIR/profile.${NEW_PROFILE}"
fi
done
### Public git profile
if [ -d "$SETTINGS_DIR/profile.git" ]; then
logg info 'Resetting the Firefox git profile'
cd "$SETTINGS_DIR/profile.git"
git reset --hard HEAD
git clean -fxd
logg info 'Pulling latest updates to the Firefox git profile'
git pull origin master
else
logg info 'Cloning the public Firefox git profile'
cd "$SETTINGS_DIR" && git clone "$FIREFOX_PUBLIC_PROFILE" profile.git
fi
### Copy user.js to profile.git profile
cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/firefox/user.js" "$SETTINGS_DIR/profile.git"
### Git profile w/ plugins installed (installation happens below)
if [ ! -d "$SETTINGS_DIR/profile.plugins" ]; then
logg info "Syncing $SETTINGS_DIR/profile.git to $SETTINGS_DIR/profile.plugins"
rsync -a "$SETTINGS_DIR/profile.git/" "$SETTINGS_DIR/profile.plugins"
rsync -a "${XDG_DATA_HOME:-$HOME/.local/share}/firefox/" "$SETTINGS_DIR/profile.plugins"
cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/firefox/user.js" "$SETTINGS_DIR/profile.plugins"
fi
### Private hosted profile
# Deprecated in favor of using the Restic profile tasks saved in `~/.config/task/Taskfile.yml`
# if [ ! -d "$SETTINGS_DIR/profile.private" ]; then
# logg info 'Downloading the encrypted Firefox private profile'
# cd "$SETTINGS_DIR"
# curl -sSL '{ { .firefoxPrivateProfile } }' -o profile.private.tar.gz.age
# logg info 'Decrypting the Firefox private profile'
# chezmoi decrypt profile.private.tar.gz.age > profile.private.tar.gz || EXIT_DECRYPT_CODE=$?
# if [ -z "$EXIT_DECRYPT_CODE" ]; then
# rm -f profile.private.tar.gz.age
# logg info 'Decompressing the Firefox private profile'
# tar -xzf profile.private.tar.gz
# logg success 'The Firefox private profile was successfully installed'
# cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/firefox/user.js" "$SETTINGS_DIR/profile.private"
# logg info 'Copied ~/.config/firefox/user.js to profile.private profile'
# else
# logg error 'Failed to decrypt the private Firefox profile'
# fi
# fi
### Install Firefox addons (using list declared in .chezmoidata.yaml)
for SETTINGS_PROFILE in "profile.plugins" "profile.private"; do
if [ -d "$SETTINGS_DIR/$SETTINGS_PROFILE" ]; then
for FIREFOX_PLUGIN in {{ list (.firefoxAddOns | toString | replace "[" "" | replace "]" "") | uniq | join " " }}; do
logg info "Processing the $FIREFOX_PLUGIN Firefox add-on"
PLUGIN_HTML="$(mktemp)"
curl --silent "https://addons.mozilla.org/en-US/firefox/addon/$FIREFOX_PLUGIN/" > "$PLUGIN_HTML"
PLUGIN_TMP="$(mktemp)"
if ! command -v htmlq > /dev/null && command -v brew > /dev/null; then
logg info 'Installing htmlq using Homebrew since it is a dependency for populating Firefox add-ons' && brew install htmlq
fi
cat "$PLUGIN_HTML" | htmlq '#redux-store-state' | sed 's/^<scri.*application\/json">//' | sed 's/<\/script>$//' > "$PLUGIN_TMP"
PLUGIN_ID="$(jq '.addons.bySlug["'"$FIREFOX_PLUGIN"'"]' "$PLUGIN_TMP")"
if [ "$PLUGIN_ID" != 'null' ]; then
PLUGIN_FILE_ID="$(jq -r '.addons.byID["'"$PLUGIN_ID"'"].guid' "$PLUGIN_TMP")"
if [ "$PLUGIN_FILE_ID" != 'null' ]; then
PLUGIN_URL="$(cat "$PLUGIN_HTML" | htmlq '.InstallButtonWrapper-download-link' --attribute href)"
PLUGIN_FILENAME="${PLUGIN_FILE_ID}.xpi"
PLUGIN_FOLDER="$(echo "$PLUGIN_FILENAME" | sed 's/.xpi$//')"
if [ ! -d "$SETTINGS_DIR/$SETTINGS_PROFILE/extensions/$PLUGIN_FOLDER" ]; then
logg info 'Downloading add-on XPI file for '"$PLUGIN_FILENAME"' ('"$FIREFOX_PLUGIN"')'
if [ ! -d "$SETTINGS_DIR/$SETTINGS_PROFILE/extensions" ]; then
mkdir -p "$SETTINGS_DIR/$SETTINGS_PROFILE/extensions"
fi
curl -sSL "$PLUGIN_URL" -o "$SETTINGS_DIR/$SETTINGS_PROFILE/extensions/$PLUGIN_FILENAME"
# Unzipping like this causes Firefox to complain about unsigned plugins
# TODO - figure out how to headlessly enable the extensions in such a way that is compatible with Flatpak / Snap
# using the /usr/lib/firefox/distribution/policies.json works but this is not compatible with Flatpak / Snap out of the box
# it seems since they do not have access to the file system by default. Also, using the policies.json approach forces
# all Firefox profiles to use the same extensions. Ideally, we should find a way to enable the extensions scoped
# to the user profile.
# logg info 'Unzipping '"$PLUGIN_FILENAME"' ('"$FIREFOX_PLUGIN"')'
# unzip "$SETTINGS_DIR/$SETTINGS_PROFILE/extensions/$PLUGIN_FILENAME" -d "$SETTINGS_DIR/$SETTINGS_PROFILE/extensions/$PLUGIN_FOLDER"
logg success 'Installed '"$FIREFOX_PLUGIN"''
fi
else
logg warn 'A null Firefox add-on filename was detected for '"$FIREFOX_PLUGIN"''
fi
else
logg warn 'A null Firefox add-on ID was detected for '"$FIREFOX_PLUGIN"''
fi
done
fi
done
fi
done
}
firefoxSetup
apt: firefox
apt:debian: firefox-esr
cask: firefox
choco: firefox
dnf: firefox
flatpak: org.mozilla.firefox
pacman: firefox
firefox-profile:
_bin: firefox-profile
_github: https://github.com/saadtazi/firefox-profile-js
_name: Firefox Profile CLI
npm: firefox-profile
firewall-applet:
_bin: firewall-applet
_github: false
apt: firewall-applet
dnf: firewall-applet
pacman: firewall-applet
firewall-config:
_bin: firewall-config
_github: false
apt: firewall-config
dnf: firewall-config
pacman: firewall-config
firewalld:
_bin: firewall-cmd
_github: https://github.com/firewalld/firewalld
_name: FirewallD
_notes: https://computingforgeeks.com/install-and-use-firewalld-on-ubuntu/
_pre: |
#!/usr/bin/env bash
if command -v ufw > /dev/null; then sudo ufw disable; fi
_service: firewalld
apt: firewalld
dnf: firewalld
emerge: net-firewall/firewalld
pacman: firewalld
zypper: firewalld
fiscript:
_app: FiScript.app
_bin: fiscript
_github: https://github.com/Mortennn/FiScript
_name: FiScript
cask: fiscript
fission:
_bin: fission
_desc: Fast and Simple Serverless Functions for Kubernetes
_docs: https://fission.io/docs/
_github: https://github.com/fission/fission
_home: https://fission.io/
_name: Fission
exe: https://github.com/fission/fission/releases/download/v1.19.0/fission-v1.19.0-windows-amd64.exe
github: github.com/fission/fission
nix-env: nixos.fission
script:darwin: cd /tmp && curl -sSLo fission https://github.com/fission/fission/releases/download/v1.19.0/fission-v1.19.0-darwin-amd64 && chmod +x fission && sudo mv fission /usr/local/bin/
script:linux: cd /tmp && curl -sSLo fission https://github.com/fission/fission/releases/download/v1.19.0/fission-v1.19.0-linux-amd64 && chmod +x fission && sudo mv fission /usr/local/bin/
fkill:
_bin: fkill
_desc: Fabulously kill processes. Cross-platform
_github: https://github.com/sindresorhus/fkill
_name: fkill
npm: fkill-cli
flake8:
_bin: flake8
_desc: Flake8 is a python tool that glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the style and quality of some python code.
_docs: https://flake8.pycqa.org/en/latest/
_github: https://github.com/PyCQA/flake8
_home: https://flake8.pycqa.org/en/latest/
_name: Flake8
brew: flake8
pipx: flake8
flameshot:
_app: flameshot.app
_bin: flameshot
_desc: Powerful yet simple to use screenshot software
_docs: https://flameshot.org/docs/overview/overview/
_github: https://github.com/flameshot-org/flameshot
_home: https://flameshot.org/
_name: Flameshot
_scoopExtras: true
apt: flameshot
cask: flameshot
choco: flameshot
dnf: flameshot
eopkg: flameshot
flatpak: org.flameshot.Flameshot
nix: nixos.flameshot
pacman: flameshot
port: flameshot
scoop: flameshot
snap: flameshot
winget: flameshot
xbps: flameshot
zypper: flameshot
flatseal:
_bin: flatseal
_github: https://github.com/tchx84/Flatseal
flatpak: com.github.tchx84.Flatseal
fleetctl:
_bin: fleetctl
_desc: Open-source platform for IT and security teams with thousands of computers. (Linux, macOS, Windows, ChromeOS, AWS, Google Cloud, Azure, data center, containers, IoT)
_docs: https://fleetdm.com/docs
_github: https://github.com/fleetdm/fleet
_home: https://fleetdm.com/
_name: Fleet CLI
npm: fleetctl
flow-launcher:
_bin: null
_desc: Quick file search & app launcher for Windows with community-made plugins
_docs: https://www.flowlauncher.com/docs/
_github: https://github.com/Flow-Launcher/Flow.Launcher
_home: https://flowlauncher.com/
_name: Flow Launcher
choco: Flow-Launcher
scoop: Flow-Launcher
winget: Flow Launcher
flutter:
_bin: flutter
_desc: '[Flutter](https://flutter.dev/) transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase'
_docs: https://docs.flutter.dev/
_github: https://github.com/flutter/flutter
_home: https://flutter.dev/
_name: Flutter
cask: flutter
choco: flutter
snap: flutter --classic
yay: flutter
fly:
_bin: fly
_desc: CLI to manage Concourse CI installation
_home: https://concourse-ci.org/
_github: https://github.com/concourse/concourse
_name: fly
cask: fly
github: https://github.com/concourse/concourse
yay: fly-cli
fm:
_bin: fm
_desc: Terminal file manager
_github: https://github.com/mistakenelf/fm
_name: fm
github: github.com/mistakenelf/fm
go: github.com/mistakenelf/fm@latest
footloose:
_bin: footloose
_desc: Container Machines - Containers that look like Virtual Machines
_docs: https://github.com/weaveworks/footloose
_github: https://github.com/weaveworks/footloose
_home: https://github.com/weaveworks/footloose
_name: Footloose
brew: weaveworks/tap/footloose
go: github.com/weaveworks/footloose@master
forever:
_bin: forever
_github: https://github.com/foreversd/forever
_name: Forever
npm: forever
forklift:
_bin: forklift
_github: https://github.com/Johnn3y/Forklift
flatpak: com.github.Johnn3y.Forklift
fpm:
_bin: fpm
_deps:
- fpm:deps
_desc: '[fpm](https://github.com/jordansissel/fpm) (short for Effing package management) allows you to build packages for multiple platforms with great ease. The source of your package can be a gem, Python module, pear, directory, .tar.gz, rpm, deb, Node.js package, or pacman package. The target packages it supports are deb, rpm, solaris, freebsd, tar, directory, Mac OS X .pkg file, or pacman package.'
_github: https://github.com/jordansissel/fpm
_name: fpm
ansible: professormanhattan.fpm
gem: fpm
fpm:deps:
_github: false
apt:
- build-essential
- ruby-dev
- rubygems
brew:
- gnu-tar
dnf:
- gcc
- libffi-devel
- make
- rpm-build
- ruby-devel
- rubygems
pacman:
- base-devel
- gcc
fq:
_bin: fq
_desc: jq for binary formats
_github: https://github.com/wader/fq
_name: fq
apk: fq
brew: wader/tap/fq
github: github.com/wader/fq
go: github.com/wader/fq@latest
pacman: fq
scoop: fq
fritzing:
_bin: fritzing
_desc: Fritzing is an open-source hardware initiative that makes electronics accessible as a creative material for anyone. We offer a software tool, a community website and services in the spirit of Processing and Arduino, fostering a creative ecosystem that allows users to document their prototypes, share them with others, teach electronics in a classroom, and layout and manufacture professional PCBs.
_docs: https://fritzing.org/learning/get-started
_github: https://github.com/fritzing/fritzing-app
_home: https://fritzing.org/
_name: Fritzing
_todo: Add installation source for macOS
choco: fritzing
flatpak: org.fritzing.Fritzing
frpc:
_bin: frpc
_desc: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
_docs: https://github.com/fatedier/frp
_github: https://github.com/fatedier/frp
_home: https://github.com/fatedier/frp
_name: frpc (client)
brew: frpc
frps:
_bin: frps
_desc: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
_docs: https://github.com/fatedier/frp
_github: https://github.com/fatedier/frp
_home: https://github.com/fatedier/frp
_name: frps (server)
brew: frps
fselect:
_bin: fselect
_desc: Extension to find files with SQL-like queries
_github: https://github.com/jhspetersson/fselect
_name: fselect
brew: fselect
cargo: fselect
choco: fselect
github: github.com/jhspetersson/fselect
yay: fselect
fuego:
_bin: fuego
_desc: Fuego is a command line client for the Firestore database
_docs: https://github.com/sgarciac/fuego
_github: https://github.com/sgarciac/fuego
_home: https://github.com/sgarciac/fuego
_name: Fuego
brew: fuego-firestore
go: github.com/sgarciac/fuego@latest
snap: fuego
fury:
_bin: fury
_github: https://github.com/gemfury/gemfury
_name: Fury
brew: gemfury/tap/gemfury
fuse:
_github: https://github.com/libfuse/libfuse
_bin: null
_desc: '[macFUSE](https://osxfuse.github.io/) allows you to extend macOS via third party file systems.'
_name: Fuse
_when:cask: '! test -d /usr/local/Caskroom/macfuse && ! test -d "$HOMEBREW_PREFIX/Caskroom/macfuse"'
ansible:darwin: professormanhattan.fuse
apt:
- fuse
- libfuse-dev
cask: macfuse
fx:
_bin: fx
_desc: A terminal JSON viewer.
_docs: https://github.com/antonmedv/fx/blob/master/doc/doc.md
_github: https://github.com/antonmedv/fx
_home: https://github.com/antonmedv/fx
_name: FX
brew: fx
go: github.com/antonmedv/fx@latest
pacman: fx
pkg: fx
scoop: fx
snap: fx
fzf:
_bin: fzf
_desc: "[fzf](https://github.com/junegunn/fzf) is a general-purpose command-line fuzzy finder. It's an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc."
_docs: https://github.com/junegunn/fzf#usage
_github: https://github.com/junegunn/fzf
_home: https://github.com/junegunn/fzf
_name: fzf
ansible: professormanhattan.fzf
apk: fzf
apt: fzf
brew: fzf
dnf:fedora: fzf
nix: nixpkgs.fzf
pacman: fzf
pkg-freebsd: fzf
pkg_add: fzf
pkgin: fzf
port: fzf
xbps: fzf
zypper: fzf
gawk:
_bin: gawk
_desc: An implementation of the AWK programming language
_docs: https://www.gnu.org/software/gawk/manual/
_github: false
_home: https://www.gnu.org/software/gawk/
_name: gawk
apt: gawk
brew: gawk
choco: gawk
dnf: gawk
pacman: gawk
port: gawk
scoop: gawk
gcc:
_bin: gcc
_name: GCC
_github: https://github.com/gcc-mirror/gcc
apt: gcc
brew: gcc
dnf: gcc
pacman: gcc
port: gcc11
gcloud:
_bin: gcloud
_github: false
_desc: '[Google Cloud SDK](https://cloud.google.com/sdk) includes tools and libraries for interacting with Google Cloud products and services. With it, you can orchestrate virtual machine instances directly from your command line, manage Compute Engine networks/firewalls/disks, simulate Pub/Sub locally, and much more.'
_name: Google Cloud SDK
ansible: professormanhattan.googlecloudsdk
cask: google-cloud-sdk
choco: gcloudsdk
snap: google-cloud-sdk --classic
yay: google-cloud-sdk
gcsf:
_bin: gcsf
_github: https://github.com/harababurel/gcsf
_name: GCSF
cargo: gcsf
gdbgui:
_bin: gdbgui
_github: https://github.com/cs01/gdbgui
pipx: gdbgui
gdown:
_bin: gdown
_desc: Download a large file from Google Drive
_github: https://github.com/wkentaro/gdown
pipx: gdown
gdrive:
_bin: gdrive
_desc: Google Drive CLI Client
_docs: https://github.com/prasmussen/gdrive#usage
_github: https://github.com/prasmussen/gdrive
_home: https://github.com/prasmussen/gdrive
_name: gdrive
brew: gdrive
choco: gdrive
github: github.com/prasmussen/gdrive
go: github.com/prasmussen/gdrive@latest
port: gdrive
scoop: gdrive
yay: gdrive
gdu:
_bin: gdu
_github: https://github.com/dundee/gdu
_post:brew: |
#!/usr/bin/env bash
brew link --overwrite gdu
_post:snap: |
#!/usr/bin/env bash
sudo snap connect gdu-disk-usage-analyzer:mount-observe :mount-observe
sudo snap connect gdu-disk-usage-analyzer:system-backup :system-backup
sudo snap alias gdu-disk-usage-analyzer.gdu gdu
apt:debian: gdu
brew: gdu
go: github.com/dundee/gdu/v5/cmd/gdu@latest
pacman: gdu
snap: gdu-disk-usage-analyzer
generator-ngx-rocket:
_bin: ngx
_github: https://github.com/ngx-rocket/generator-ngx-rocket
_name: Angular
npm: generator-ngx-rocket
genymotion:
_app: Genymotion.app
_github: false
cask: genymotion
choco: genymotion
# TODO: Figure out how to install on Android
gfi:
_bin: gfi
_desc: Google Font Installer is a NodeJS module/CLI that lets you Search, Download and Install fonts offered by Google Web Fonts
_github: https://github.com/lordgiotto/google-font-installer
npm: google-font-installer
gh:
_bin: gh
_desc: '[gh](https://cli.github.com/) is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with git and your code.'
_docs: https://cli.github.com/manual/
_github: https://github.com/cli/cli
_home: https://cli.github.com/
_name: Github CLI
ansible: professormanhattan.gh
brew: gh
choco: gh
port: gh
scoop: gh
winget: GitHub.cli
ghcup:
_bin: ghcup
_github: https://github.com/haskell/ghcup-hs
_name: GHCup
brew: ghcup
ghorg:
_bin: ghorg
_desc: "[ghorg](https://github.com/gabrie30/ghorg) allows you to quickly clone all of an org's, or user's repositories into a single directory."
_github: https://github.com/gabrie30/ghorg
_name: ghorg
_post: |
#!/usr/bin/env bash
ghorg reclone
ansible: professormanhattan.ghorg
brew: gabrie30/utils/ghorg
github: github.com/gabrie30/ghorg
go: github.com/gabrie30/ghorg@latest
yay: ghorg
gifsicle:
_bin: gifsicle
_github: https://github.com/kohler/gifsicle
_name: Gifsicle
apt: gifsicle
brew: gifsicle
choco: gifsicle
dnf: gifsicle
pacman: gifsicle
port: gifsicle
scoop: gifsicle
gimp:
_app: GIMP.app
_bin: gimp
_desc: '[GIMP](https://www.gimp.org/) is a free and open-source raster graphics editor used for image manipulation and image editing, free-form drawing, transcoding between different image file formats, and more specialized tasks. GIMP is released under GPLv3+ license and is available for Linux, macOS, and Microsoft Windows.'
_docs: https://www.gimp.org/docs/
_github: https://github.com/GNOME/gimp
_home: https://www.gimp.org/
_name: GIMP
ansible: professormanhattan.gimp
apt: gimp
cask: gimp
choco: gimp
dnf: gimp
flatpak: org.gimp.GIMP
pacman: gimp
snap: gimp
gist:
_bin: gist
_github: https://github.com/defunkt/gist
_desc: '[gist](https://github.com/defunkt/gist) provides a command that you can use from your terminal to upload content to https://gist.github.com/. This role will optionally set up a dotfile that handles authentication if you pass the appropriate configuration.'
_name: gist
ansible: professormanhattan.gist
gem: gist
git:
_bin: git
_github: https://github.com/git/git
apk: git
apt: git
brew: git
dnf: git
git-branchless:
_bin: git-branchless
_github: https://github.com/arxanas/git-branchless
_name: Git Branchless
_todo: |
echo "TODO: Consider implementing:"
echo "echo >> ~/.bashrc "alias git='git-branchless wrap --'""
apk: git-branchless
brew: git-branchless
cargo: --locked git-branchless
pacman: git-branchless
port: git-branchless
scoop: git-branchless
git-bug:
_bin: git-bug
_github: https://github.com/MichaelMure/git-bug
_name: Git Bug
brew: git-bug
pkg-freebsd: git-bug
scoop: git-bug
git-extras:
_bin: git-extras
_desc: '[Git Extras](https://github.com/tj/git-extras) includes extra git utilities that include repo summary, repl, changelog population, author commit percentages, and more.'
_name: git-extras
_github: https://github.com/tj/git-extras
ansible:windows: professormanhattan.gitextras
apt: git-extras
brew: git-extras
dnf: git-extras
pacman: git-extras
git-filter-repo:
_bin: git-filter-repo
_github: https://github.com/newren/git-filter-repo
_desc: '[gitfilterrepo](https://github.com/newren/git-filter-repo) is a versatile tool for rewriting history'
ansible: professormanhattan.gitfilterrepo
brew: git-filter-repo
pipx: git-filter-repo
git-jump:
_bin: git-jump
_github: https://github.com/mykolaharmash/git-jump
_name: Git Jump
brew: mykolaharmash/git-jump/git-jump
npm: git-jump
git-lfs:
_bin: git-lfs
_github: https://github.com/git-lfs/git-lfs
_deps:
- git
_desc: Git LFS (Large File Storage) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.
_name: Git LFS
_post: |
#!/usr/bin/env bash
sudo git lfs install --system
git lfs install
ansible: professormanhattan.gitlfs
brew: git-lfs
scoop: git-lfs
git-notify:
_bin: git-notify
_desc: Communicate important updates to your team via git commit messages
_github: https://github.com/jevakallio/git-notify
_name: Git Notify
npm: git-notify
git-open:
_bin: git-open
_desc: Open the repo website (GitHub, GitLab, Bitbucket) in your browser
_github: https://github.com/paulirish/git-open
npm: git-open
git-secret:
_bin: git-secret
_desc: '[git-secret](https://git-secret.io/) is a bash tool to store your private data inside a git repo. Hows that? Basically, it just encrypts, using GPG, the tracked files with the public keys of all the users that you trust. So everyone of them can decrypt these files using only their personal secret key.'
_docs: https://git-secret.io/#commands
_epel: true
_github: https://github.com/sobolevn/git-secret
_home: https://git-secret.io/
_name: Git Secret
ansible:darwin: professormanhattan.gitsecret
ansible:linux: professormanhattan.gitsecret
apt: git-secret
brew: git-secret
dnf:fedora: git-secret
git-stats:
_bin: git-stats
_desc: '[gitstats](https://github.com/IonicaBizau/git-stats) can track and display local git statistics. It includes the capability of displaying a GitHub-like contributions calendar in the terminal.'
_github: https://github.com/IonicaBizau/git-stats
_name: git-stats
ansible: professormanhattan.gitstats
npm: git-stats
git-subrepo:
_bin: git-subrepo
_github: https://github.com/ingydotnet/git-subrepo
_name: Git Sub Repo
brew: git-subrepo
git-town:
_bin: git-town
_github: https://github.com/git-town/git-town
_name: Git Town
_post: |
#!/usr/bin/env bash
git town aliases add
brew: git-town
go: github.com/git-town/git-town@latest
gitdock:
_app: GitDock.app
_bin: null
_desc: '[GitDock](https://gitlab.com/mvanremmerden/gitdock) is an app that displays all your GitLab activities in one place. Instead of the GitLab typical project- or group-centric approach, it collects all your information from a user-centric perspective.'
_docs: https://gitlab.com/mvanremmerden/gitdock#how-to-use-gitdock-%EF%B8%8F
_github: https://gitlab.com/mvanremmerden/gitdock
_home: https://gitlab.com/mvanremmerden/gitdock
_name: GitDock
ansible:darwin: professormanhattan.gitdock
cask: gitdock
github-classroom-assistant:
_app: Classroom Assistant.app
_bin: github-classroom-assistant
_github: https://github.com/education/classroom-assistant
_name: GitHub Classroom Assistant
apt: https://github.com/education/classroom-assistant/releases/download/v2.0.4/classroom-assistant_2.0.4_amd64.deb
cask: classroom-assistant
dnf: https://github.com/education/classroom-assistant/releases/download/v2.0.4/classroom-assistant-2.0.4-1.x86_64.rpm
exe: https://github.com/education/classroom-assistant/releases/download/v2.0.4/Classroom.Assistant-2.0.4.Setup.exe
github-desktop:
_app: GitHub Desktop.app
_bin: github
_github: https://github.com/desktop/desktop
cask: github
choco: github-desktop
flatpak: io.github.shiftey.Desktop
github-runner:
_bin: false
_desc: '[GitHub Runner](https://docs.github.com/en/actions/hosting-your-own-runners) is a system that you deploy and manage to execute jobs from GitHub Actions on GitHub.com.'
_docs: https://docs.github.com/en/actions/hosting-your-own-runners
_github: https://github.com/actions/runner
_home: https://docs.github.com/en/actions/hosting-your-own-runners
_name: GitHub Runner
_post: |
#!/usr/bin/env bash
# @file GitHub Runner Registration
# @brief Registers a GitHub action runner with GitHub
# @description
# This script registers the host as a self-hosted GitHub runner with scope set
# in the `.user.github.runnerOrg` input in the `.chezmoi.yaml.tmpl` file. If your organization is `megabyte-labs`, then
# the value of `.user.github.runnerOrg` should be `megabyte-labs`. A self-hosted runner is an application
# that that allows you to run tasks from GitHub CI.
#
# This script adds 3 labels to the runner: self-hosted, _hostname_, and _operating-system family_.
#
# The script automatically acquires the GitHub Action runner token (as long as you specify your `.user.github.runnerOrg` value in `.chezmoi.yaml.tmpl`).
# In order to authenticate with GitHub, you should have the `GITHUB_TOKEN` environment variable in place with the appropriate permissions
# specified when you generate the token.
#
# ## Links
#
# * [Secrets / Environment variables documentation](https://install.doctor/docs/customization/secrets)
### Check if GitHub runner is installed
if [ -f "${XDG_DATA_HOME:-$HOME/.local/share}/github-runnerconfig.sh" ]; then
if [ -f "${XDG_DATA_HOME:-$HOME/.local/share}/github-runner/.runner" ]; then
logg info "GitHub Actions runner is already configured (${XDG_DATA_HOME:-$HOME/.local/share}/github-runner/.runner file is present)"
else
logg info 'Creating runner configuration'
### Configure labels
LABELS="self-hosted,{{ .chezmoi.hostname }},{{ .host.distro.family }}"
if [ '{{ .host.distro.family }}' != '{{ .host.distro.id }}' ]; then
LABELS="${LABELS},{{ .host.distro.id }}"
fi
if command -v VirtualBox > /dev/null; then
LABELS="${LABELS},virtualbox"
fi
if command -v docker > /dev/null; then
LABELS="${LABELS},docker"
fi
if [ -n "$GITHUB_TOKEN" ]; then
if command -v jq > /dev/null; then
### Acquire token
logg info 'Acquiring runner token'
RUNNER_TOKEN="$(curl -sSL -X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer $GITHUB_TOKEN" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/orgs/{{ .user.github.runnerOrg }}/actions/runners/registration-token | jq -r '.token')"
### Generate the configuration
logg info 'Joining GitHub runner to https://github.com/{{ .user.github.runnerOrg }}'
"${XDG_DATA_HOME:-$HOME/.local/share}/github-runner/config.sh" --unattended --url https://github.com/{{ .user.github.runnerOrg }} --token "$RUNNER_TOKEN" --labels "$LABELS" || EXIT_CODE=$?
if [ -n "$EXIT_CODE" ]; then
logg error 'GitHub runner configuration failed' && exit 1
fi
### Install / start the service
logg info 'Configuring runner service'
"${XDG_DATA_HOME:-$HOME/.local/share}/github-runner/svc.sh" install && logg success 'Successfully installed the GitHub Actions runner service'
logg info 'Starting runner service'
"${XDG_DATA_HOME:-$HOME/.local/share}/github-runner/svc.sh" start && logg success 'Started the GitHub Actions runner service'
else
logg warn 'jq is required by the GitHub runner configuration script'
fi
else
logg warn 'The GITHUB_TOKEN environment variable is not present'
fi
fi
else
logg info "The GitHub Actions runner installation is not present at ${XDG_DATA_HOME:-$HOME/.local/share}/github-runner"
fi
_when: '! test -d "${XDG_DATA_HOME:-$HOME/.local/share}/github-runner"'
script: |
#!/usr/bin/env bash
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/private.sh" ]; then
source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/private.sh"
fi
if [ -n "$GITHUB_TOKEN" ]; then
RELEASES="$(curl -sSL --compressed --header "Authorization: Bearer $GITHUB_TOKEN" "https://api.github.com/repos/actions/runner/releases/latest")"
else
RELEASES="$(curl -sSL --compressed "https://api.github.com/repos/actions/runner/releases/latest")"
fi
LATEST_VERSION="$(echo "$RELEASES" | grep -o '"tag_name": "[^"]*' | grep -o '[^"]*$')"
ARCHITECTURE="$(uname -m | sed 's/86_//' | sed 's/v7l//')"
OS_FAMILY="$(test -d /Applications && echo osx || echo linux)"
curl -sSL "https://github.com/actions/runner/releases/download/$LATEST_VERSION/actions-runner-${OS_FAMILY}-${ARCHITECTURE}-${LATEST_VERSION:1}.tar.gz" > "/tmp/actions-runner-${OS_FAMILY}-${ARCHITECTURE}-${LATEST_VERSION:1}.tar.gz"
mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}/github-runner"
tar xzf "/tmp/actions-runner-${OS_FAMILY}-${ARCHITECTURE}-${LATEST_VERSION:1}.tar.gz" -C "${XDG_DATA_HOME:-$HOME/.local/share}/github-runner"
chown -Rf "$USER" "${XDG_DATA_HOME:-$HOME/.local/share}/github-runner"
rm -f "/tmp/actions-runner-${OS_FAMILY}-${ARCHITECTURE}-${LATEST_VERSION:1}.tar.gz"
gitify:
_app: Gitify.app
_bin: null
_description: GitHub notifications on the menu bar
_github: https://github.com/manosim/gitify
_home: https://github.com/manosim/gitify
_name: Gitify
cask: gitify
github: github.com/manosim/gitify
yay: gitify-bin
gitkraken:
_app: GitKraken.app
_bin: gitkraken
_desc: '[GitKraken](https://www.gitkraken.com/) is a software product for developers and dev teams. The Git Client is a leading software tool helping developers maximize their productivity with a beautiful, intuitive GUI.'
_docs: https://support.gitkraken.com/
_github: Not open-source
_home: https://www.gitkraken.com/
_name: GitKraken
ansible: professormanhattan.gitkraken
cask: gitkraken
choco: gitkraken
flatpak: com.axosoft.GitKraken
snap: gitkraken --classic
gitlab-runner:
_bin: gitlab-runner
_desc: '[GitLab Runner](https://docs.gitlab.com/runner/) is an application that works with GitLab CI/CD to run jobs in a pipeline.'
_docs: https://docs.gitlab.com/runner/
_github: https://github.com/gitlabhq/gitlab-runner
_home: https://gitlab.com/gitlab-org/gitlab-runner
_name: Gitlab Runner
_post: "#!/usr/bin/env bash\n# @file GitLab Runner Configuration\n# @brief Registers GitLab Runner(s) with the given GitLab instance\n# @description\n# This script registers the runner(s) with the given GitLab instance. SaaS GitLab can also be provided as the GitLab instance to register\n# the runners with. The script configures the runners to use either Docker or VirtualBox Executor. Refer to\n# [this page](https://docs.gitlab.com/runner/executors/docker.html) and [this page](https://docs.gitlab.com/runner/executors/virtualbox.html)\n# for details about the available configuration settings.\n#\n# Runners are always tagged with these 2 values: `hostname` and `docker`/`virtualbox` depending on the type of executor. If a list of tags is provided,\n# the runner is tagged with these values in addition to the above mentioned values. If the list of tags is empty, no additonal tags are added and the\n# runner is configured to pickup `untagged` jobs.\n#\n# Configuring other type of executors is not supported by this script.\n#\n# ## Secrets\n#\n# The following chart details the secret(s) that are needed to configure the runner:\n#\n# | Secret | Description |\n# |------------------------|------------------------------------------------------------|\n# | `GITLAB_RUNNER_TOKEN` | The token generated when the runner was created in GitLab |\n#\n# For more information about storing secrets like SSH keys and API keys, refer to our Secrets documentation provided below\n#\n# ## Configuration Variables\n#\n# The following chart details the input variable(s) that are used to determine the configuration of the runner:\n#\n# | Variable | Description |\n# |---------------------|----------------------------------------------------------------------------------------------------------|\n# | `glurl` | The URL of the Gitlab instance to associate the Runner with |\n# | `runnerImage` | Docker image to use to configure the runner. Needed only when configuring `Docker` executor |\n# | `runnerDescription` | Description of this runner |\n# | `runnerTags` | Comma separated list of tags for this runner. See details in the description for more info |\n# | `baseVM` | Name of the VirtualBox VM to use for creating runner. Needed only when configuring `VirtualBox` executor |\n#\n# ## Links\n#\n# * [Secrets / Environment variables documentation](https://install.doctor/docs/customization/secrets)\n\n### Check if Docker is installed and operational so Docker executor(s) can be registered\nif command -v docker > /dev/null && docker run --rm hello-world > /dev/null; then\n HAS_DOCKER=1\nelse\n HAS_DOCKER=0\n logg warn 'Docker is not installed or it is not operational'\nfi\n\n### Check if VirtualBox is installed and operational so VirtualBox executor(s) can be registered\nif command -v VirtualBox > /dev/null; then\n HAS_VIRTUALBOX=1\nelse\n HAS_VIRTUALBOX=0\n logg warn 'VirtualBox is not installed'\nfi\n\n### Configure runners if Docker or VirtualBox is installed\nif [ $HAS_DOCKER -eq 0 ] && [ $HAS_VIRTUALBOX -eq 0 ]; then\n logg warn 'Docker and VirtualBox are not installed. Not registering runner(s).'\nelse\n ### Run logic if gitlab-runner is installed\n if command -v gitlab-runner > /dev/null; then\n ### Populate appropriate token\n case \"$OSTYPE\" in\n solaris*) echo \"TODO\" ;;\n darwin*) GITLAB_RUNNER_TOKEN=\"{{ if (stat (joinPath .chezmoi.sourceDir \".chezmoitemplates\" \"secrets\" \"GITLAB_RUNNER_TOKEN_DARWIN\")) }}{{ includeTemplate \"secrets/GITLAB_RUNNER_TOKEN_DARWIN\" | decrypt | trim }}{{ else }}{{ env \"GITLAB_RUNNER_TOKEN_DARWIN\" }}{{ end }}\" ;; \n linux*) GITLAB_RUNNER_TOKEN=\"{{ if (stat (joinPath .chezmoi.sourceDir \".chezmoitemplates\" \"secrets\" \"GITLAB_RUNNER_TOKEN_LINUX\")) }}{{ includeTemplate \"secrets/GITLAB_RUNNER_TOKEN_LINUX\" | decrypt | trim }}{{ else }}{{ env \"GITLAB_RUNNER_TOKEN_LINUX\" }}{{ end }}\" ;;\n bsd*) echo \"TODO\" ;;\n msys*) GITLAB_RUNNER_TOKEN=\"{{ if (stat (joinPath .chezmoi.sourceDir \".chezmoitemplates\" \"secrets\" \"GITLAB_RUNNER_TOKEN_WINDOWS\")) }}{{ includeTemplate \"secrets/GITLAB_RUNNER_TOKEN_WINDOWS\" | decrypt | trim }}{{ else }}{{ env \"GITLAB_RUNNER_TOKEN_WINDOWS\" }}{{ end }}\" ;;\n cygwin*) GITLAB_RUNNER_TOKEN=\"{{ if (stat (joinPath .chezmoi.sourceDir \".chezmoitemplates\" \"secrets\" \"GITLAB_RUNNER_TOKEN_WINDOWS\")) }}{{ includeTemplate \"secrets/GITLAB_RUNNER_TOKEN_WINDOWS\" | decrypt | trim }}{{ else }}{{ env \"GITLAB_RUNNER_TOKEN_WINDOWS\" }}{{ end }}\" ;;\n *) echo \"unknown: $OSTYPE\" ;;\n esac\n\n ### Check if Runner Token value is present before attempting to register runner(s)\n if [ $GITLAB_RUNNER_TOKEN != \"\" ]; then\n ### Registering runners\n {{ $cmd := `gitlab-runner register \\\n --non-interactive \\\n --token $GITLAB_RUNNER_TOKEN \\` }}\n ### Register Docker based runners if Docker is installed and operational\n if [ $HAS_DOCKER -eq 1 ]; then\n logg info 'Registering GitLab Runner(s) that use Docker executor'\n {{- range .host.gitlabRunners }}\n {{- if index . \"runnerImage\" }}\n {{- $cmd }}\n --url {{ .glurl }} \\\n --executor \"docker\" \\\n --description \"{{ .runnerDescription }} - on {{ $.chezmoi.hostname }}\" \\\n --docker-image {{ .runnerImage }} \\\n {{ if and .runnerTags (gt (len .runnerTags) 0) }}--tag-list \"{{ .runnerTags }},{{ $.chezmoi.hostname }},docker\"\n {{- else }}--tag-list \"{{ $.chezmoi.hostname }},docker\" --run-untagged{{ end }} || echo 'Runner registration failed\"\n {{ end -}}\n {{ end }}\n fi\n \n ### Register VirtualBox based runners if VirtualBox is installed\n if [ $HAS_VIRTUALBOX -eq 1 ]; then\n logg info 'Registering GitLab Runner(s) that use VirtualBox executor'\n {{- range .host.gitlabRunners }}\n {{- if index . \"baseVM\" }}\n {{- $cmd }}\n --url {{ .glurl }} \\\n --executor \"virtualbox\" \\\n --description \"{{ .runnerDescription }} - on {{ $.chezmoi.hostname }}\" \\\n --virtualbox-base-name \"{{ .baseVM }}\" \\\n {{ if and .runnerTags (gt (len .runnerTags) 0) }}--tag-list \"{{ .runnerTags }},{{ $.chezmoi.hostname }},virtualbox\"\n {{- else }}--tag-list \"{{ $.chezmoi.hostname }},virtualbox\" --run-untagged{{ end }} || echo 'Runner registration failed\"\n {{ end -}}\n {{ end }}\n fi\n else\n logg warn 'GITLAB_RUNNER_TOKEN is not set. Not registering runner(s)'\n fi\n else\n logg warn 'gitlab-runner is not installed or is not available in PATH'\n fi\nfi\n"
_service: gitlab-runner
_serviceEnabled: true
ansible: professormanhattan.gitlabrunner
brew: gitlab-runner
choco: gitlab-runner
pacman: gitlab-runner
port: gitlab-runner
scoop: gitlab-runner
gitlabform:
_bin: gitlabform
_github: https://github.com/gitlabform/gitlabform/
pipx: gitlabform
gitleaks:
_bin: gitleaks
_desc: Extension to scan git repos (or files) for secrets using regex and entropy
_github: https://github.com/zricethezav/gitleaks
_name: gitleaks
brew: gitleaks
dnf:fedora: gitleaks
github: github.com/zricethezav/gitleaks
pkg: gitleaks
yay: gitleaks
gitmoji-cli:
_bin: gitmoji
_github: https://github.com/carloscuesta/gitmoji-cli
_npm: Gitmoji CLI
brew: gitmoji
npm: gitmoji-cli
gitomatic:
_bin: gitomatic
_desc: '[git-o-matic](https://github.com/muesli/gitomatic) is a tool to monitor git repositories and automatically pull & push changes'
_github: https://github.com/muesli/gitomatic
_name: git-o-matic
_post: "#!/usr/bin/env bash\n# @file git-o-matic Configuration\n# @brief Starts service on Linux systems to monitor Git repositories\n# @description\n# git-o-matic is a tool to monitor git repositories and automatically pull/push changes. Multiple repositories can be\n# monitored by running multiple instances of `gitomatic`. This script supports SSH Key based authentication only.\n#\n# If the `gitomatic` program is installed, this script creates and starts a Systemd service to monitor the repositories.\n# The repositories are cloned if they are not available at the path.\n#\n# ## Notes\n# * The author name and email address for commits are the same as `.user.name` and `.user.email` (configured in the `home/.chezmoi.yaml.tmpl` file)\n# * `gitomatic` automatically pushes and pulls changes. The script does not change this behavior\n# * `gitomatic` checks for changes every minute. This setting is not changed by this script\n# * The User's default SSH Key is used for authentication\n#\n# ## Links\n#\n# * [gitomatic GitHub repository](https://github.com/muesli/gitomatic/)\n# * [Systemd Unit file](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/gitomatic/gitomatic.service.tmpl)\n# * [Helper script](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_local/bin/executable_gitomatic_service.tmpl)\n\nif command -v gitomatic > /dev/null; then\n ### Copy bin to /usr/local/bin\n logg info \"Copying $HOME/.local/bin/gitomatic-service to /usr/local/bin/gitomatic-service\" && sudo cp -f \"$HOME/.local/bin/gitomatic-service\" /usr/local/bin/gitomatic-service\n \n ### Copy gitomatic to global directory\n if [ ! -f /usr/local/bin/gitomatic ]; then\n logg info 'Copying gitomatic executable to /usr/local/bin/gitomatic' && sudo cp -f \"$(which gitomatic)\" /usr/local/bin/gitomatic\n fi\n\n if [ -d /Applications ] && [ -d /System ]; then\n ### macOS\n logg info 'Copying gitomatic plist file to /Library/LaunchDaemons' && sudo cp -f \"${XDG_CONFIG_HOME:-$HOME/.config}/gitomatic/com.github.muesli.gitomatic.plist\" /Library/LaunchDaemons/com.github.muesli.gitomatic.plist\n if ! sudo launchctl list | grep 'gitomatic' > /dev/null; then\n logg info 'Running sudo launchctl load /Library/LaunchDaemons/com.github.muesli.gitomatic.plist' && sudo launchctl load /Library/LaunchDaemons/com.github.muesli.gitomatic.plist\n logg info 'Running sudo launchctl start /Library/LaunchDaemons/com.github.muesli.gitomatic.plist' && sudo launchctl start /Library/LaunchDaemons/com.github.muesli.gitomatic.plist\n else\n logg info \"gitomatic services appear to already be loaded\"\n fi\n else\n ### Linux\n logg info 'Copying gitomatic systemd unit file to /etc/systemd/system/' && sudo cp -f \"${XDG_CONFIG_HOME:-$HOME/.config}/gitomatic/gitomatic.service\" /etc/systemd/system/gitomatic.service\n logg info 'Reloading systemd daemon' && sudo systemctl daemon-reload\n logg info 'Enabling and starting gitomatic service' && sudo systemctl enable --now gitomatic\n fi\nelse\n logg info 'gitomatic is not installed or it is not available in PATH'\nfi\n"
ansible: professormanhattan.gitomatic
github: github.com/muesli/gitomatic
go: github.com/muesli/gitomatic@latest
pacman: gitomatic
scoop: gitomatic
gitql:
_bin: gitql
_github: https://github.com/filhodanuvem/gitql
_name: GitQL
brew: gitql
gitui:
_bin: gitui
_desc: Blazing fast TUI for git written in Rust
_docs: https://github.com/extrawurst/gitui
_github: https://github.com/extrawurst/gitui
_home: https://github.com/extrawurst/gitui
_name: Git UI
brew: gitui
cargo: gitui
choco: delta
dnf:fedora: gitui
nix: nixpkgs.gitui
pacman: gitui
pkg: gitui
port: gitui
scoop: gitui
winget: gitui
gixy:
_bin: gixy
_github: https://github.com/yandex/gixy
pipx: gixy
glab:
_bin: glab
_desc: An open-source GitLab command line tool bringing GitLab's cool features to your command line
_github: https://github.com/profclems/glab
_name: glab
apk: glab
brew: glab
github: github.com/profclems/glab
scoop: glab
# Only available on edge release (i.e. sudo snap install --edge glab)
# snap: glab
yay: gitlab-glab-bin
glances:
_bin: glances
_github: https://github.com/nicolargo/glances
_desc: '[Glances](https://github.com/nicolargo/glances) is a cross-platform monitoring tool which aims to present a maximum of information in a minimum of space through a curses or a web interface. It can adapt the displayed information depending on the terminal size dynamically. It is a top/htop alternative for Linux, BSD, macOS, and even Windows.'
_name: Glances
_post:pipx: |
#!/usr/bin/env bash
pipx inject glances glances[all]
ansible: professormanhattan.glances
apt:ubuntu:
- python3-dev
- python3-jinja2
- python3-pip
- python3-psutil
- python3-setuptools
- gcc
- glances
- lm-sensors
- wireless-tools
brew: glances
dnf:
- gcc
- glances
- lm_sensors
- python3-devel
- python3-pip
pacman:
- glances
- python
- lm_sensors
- wireless_tools
pipx: glances
port: glances
glen:
_bin: glen
_desc: A CLI to gather GitLab project and group variables
_github: https://github.com/lingrino/glen
go: github.com/lingrino/glen@latest
glow:
_bin: glow
_desc: Glow is a terminal based markdown reader designed from the ground up to bring out the beauty—and power—of the CLI
_github: https://github.com/charmbracelet/glow
_name: glow
brew: glow
github: github.com/charmbracelet/glow
pkg: glow
scoop: glow
yay: glow
glusterfs:
# TODO - The master / peer logic still needs to be implemented in the .chezmoiscripts
_bin: gluster
_desc: '[Gluster](https://www.gluster.org/) is a free and open source software scalable network filesystem. Gluster is a software defined distributed storage that can scale to several petabytes. It provides interfaces for object, block and file storage.'
_docs: https://docs.gluster.org/en/latest/
_github: https://github.com/gluster/glusterfs
_home: https://www.gluster.org/
_name: GlusterFS
_service: glusterd
# ansible:linux: professormanhattan.glusterfs
apt: glusterfs-server
dnf:fedora: glusterfs-server
pacman: glusterfs
gnome:
_bin: gnome
_github: https://github.com/GNOME/gnome-shell
_name: GNOME
apt: gnome
dnf: gnome
pacman: gnome
zypper: gnome
gnome-boxes:
_bin: gnome-boxes
_github: https://github.com/GNOME/gnome-boxes
_desc: GNOME Boxes is an application of the GNOME Desktop Environment, used to access virtual systems. Boxes uses the QEMU, KVM, and libvirt virtualization technologies
_docs: https://help.gnome.org/users/gnome-boxes/stable/
_home: https://apps.gnome.org/app/org.gnome.Boxes/
_name: GNOME Boxes
apt: gnome-boxes
dnf: gnome-boxes
flatpak: org.gnome.Boxes
pacman: gnome-boxes
gnome-calendar:
_bin: calendar
_github: https://github.com/GNOME/gnome-calendar
flatpak: org.gnome.Calendar
gnome-document-viewer:
_bin: document-viewer
_github: https://github.com/GNOME/evince
flatpak: org.gnome.Evince
gnome-extension-manager:
_bin: gnome-extension-manager
_github: https://github.com/mjakeman/extension-manager
flatpak: com.mattjakeman.ExtensionManager
gnome-eyedropper:
_github: https://github.com/FineFindus/eyedropper
_bin: eyedropper
flatpak: com.github.finefindus.eyedropper
gnome-file-roller:
_github: https://github.com/GNOME/file-roller
_bin: file-roller
flatpak: org.gnome.FileRoller
gnome-image-viewer:
_bin: image-viewer
_github: https://github.com/GNOME/eog
flatpak: org.gnome.eog
gnome-network-displays:
_bin: network-displays
_github: https://github.com/GNOME/gnome-network-displays
flatpak: org.gnome.NetworkDisplays
gnome-passwords-keys:
_bin: seahorse
_github: https://github.com/GNOME/seahorse
flatpak: org.gnome.seahorse.Application
gnome-photos:
_bin: photos
_github: https://github.com/GNOME/gnome-photos
flatpak: org.gnome.Photos
gnome-sound-recorder:
_bin: sound-recorder
_github: false
_gitlab: https://gitlab.gnome.org/World/vocalis
flatpak: org.gnome.SoundRecorder
gnome-text-editor:
_bin: text-editor
_github: https://github.com/GNOME/gnome-text-editor
flatpak: org.gnome.TextEditor
gnome-tweaks:
_bin: gnome-tweaks
_name: GNOME Tweaks
_github: https://github.com/GNOME/gnome-tweaks
apt: gnome-tweaks
dnf: gnome-tweaks
pacman: gnome-tweaks
gnome-video-player:
_bin: video-player
_github: https://github.com/GNOME/totem
flatpak: org.gnome.Totem
gnome-weather:
_bin: gnome-weather
_github: https://github.com/GNOME/gnome-weather
flatpak: org.gnome.Weather
gnu:
_github: false
_deps:darwin:
- coreutils
- findutils
- gawk
- gnu-indent
- gnu-tar
- gnu-sed
- gnutls
- grep
gnu-indent:
_bin: gindent
_github: false
brew: gnu-indent
gnu-sed:
_bin: gsed
_github: false
brew: gnu-sed
gnu-tar:
_bin: gtar
_github: false
brew: gnu-tar
gnutls:
_github: false
_bin: gnutls-certtool
brew: gnutls
go:
_bin: go
_desc: '[Go](https://golang.org/) is a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency.'
_docs: https://go.dev/doc/
_github: https://github.com/golang/go
_home: https://go.dev/
_name: Go
ansible: professormanhattan.go
apt: golang-go
brew: go
choco: golang
pacman: go
port: go
scoop: go
snap: go --classic
go-chromecast:
_bin: go-chromecast
_desc: CLI for Google Chromecast, Home devices and Cast Groups
_github: https://github.com/vishen/go-chromecast
_name: go-chromecast
github: github.com/vishen/go-chromecast
go: github.com/vishen/go-chromecast@latest
go-outline:
_bin: go-outline
_github: https://github.com/ramya-rao-a/go-outline
go: github.com/ramya-rao-a/go-outline@latest
goaccess:
_bin: goaccess
_desc: GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
_docs: https://goaccess.io/get-started
_github: https://github.com/allinurl/goaccess
_home: https://goaccess.io/
_name: GoAccess
apt: goaccess
brew: goaccess
dnf:fedora: goaccess
emerge: net-analyzer/goaccess
pacman: goaccess
pkgin: goaccess
gojq:
_bin: gojq
_desc: gojq is a pure Go implementation of jq that is mostly backwards compatible (but not completely)
_github: https://github.com/itchyny/gojq
_name: gojq
brew: gojq
github: github.com/itchyny/gojq
go: github.com/itchyny/gojq@latest
golangci-lint:
_bin: golangci-lint
_desc: Fast linters Runner for Go
_github: https://github.com/golangci/golangci-lint
_home: https://golangci-lint.run/
brew: golangci-lint
go: github.com/golangci/golangci-lint/cmd/golangci-lint@latest
gomodifytags:
_bin: gomodifytags
_desc: Go tool to modify struct field tags
_github: https://github.com/fatih/gomodifytags
brew: gomodifytags
go: github.com/fatih/gomodifytags@latest
gomplate:
_bin: gomplate
_desc: A flexible commandline tool for template rendering. Supports lots of local and remote datasources.
_docker: docker run hairyhenderson/gomplate:stable
_docs: https://docs.gomplate.ca/
_github: https://github.com/hairyhenderson/gomplate
_home: https://gomplate.ca/
_name: Gomplate
apk: gomplate
brew: gomplate
choco: gomplate
port: gomplate
goofys:
_bin: goofys
_deps:
- fuse
_desc: A high-performance, POSIX-ish Amazon S3 file system written in Go
_docs: https://github.com/kahing/goofys#usage
_github: https://github.com/kahing/goofys
_home: https://github.com/kahing/goofys
_name: Goofys
ansible:linux: professormanhattan.goofys
brew:linux: goofys
go:linux: github.com/kahing/goofys@latest
google-assistant:
_app: Google Assistant.app
_bin: g-assist
_desc: '[Google Assistant for Desktop](https://github.com/Melvin-Abraham/Google-Assistant-Unofficial-Desktop-Client) is a cross-platform unofficial Google Assistant Client for Desktop.'
_github: https://github.com/Melvin-Abraham/Google-Assistant-Unofficial-Desktop-Client
_name: Google Assistant for Desktop
ansible:windows: professormanhattan.googleassistant
cask: google-assistant
github: github.com/Melvin-Abraham/Google-Assistant-Unofficial-Desktop-Client
snap: g-assist
winget: g-assist
google-chrome:
_app: Google Chrome.app
_bin: null
_deps:
- chrome-gnome-shell
_desc: '[Google Chrome](https://www.google.com/chrome/) is a cross-platform web browser developed by Google. It was first released in 2008 for Microsoft Windows, and was later ported to Linux, macOS, iOS, and Android where it is the default browser built into the OS.'
_docs: https://developer.chrome.com/docs/extensions/reference/
_env:
GOOGLE_CHROME_APPDATA:
cask: "$HOME/Library/Application Support/Google/Chrome/Default"
flatpak: "$HOME/.var/app/com.google.Chrome/config/google-chrome/Default"
_github: Not open-source
_home: https://www.google.com/chrome/
_name: Google Chrome
_post: |
#!/usr/bin/env bash
# @file Chrome Settings / Extensions
# @brief This script configures Chrome, Brave, and Chromium system-wide managed / recommended policies settings. It also pre-loads a configurable list of Chrome extensions to Chrome, Brave, Chromium, and Edge (if they are installed).
# @description
# This Chrome setup script applies system-wide settings and pre-loads Chrome extensions into the browser profiles. The
# extensions still must be enabled but they appear in the Chrome extensions menu and can be enabled with the toggle. The
# system settings are applied to Chrome, Chromium, and Brave. Extensions are installed to the same browsers plus Microsoft Edge.
#
# ## Features
#
# * Adds `~/.config/chrome/managed.json` to the `managed/policies.json` system locations
# * Adds `~/.config/chrome/recommended.json` to the `recommended/policies.json` system locations
# * Pre-loads extension metadata for all the extensions defined under `chromeExtensions` in the [`home/.chezmoidata.yaml`](https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoidata.yaml) file
#
# ## TODO
#
# * Automatically enable the extensions that are pre-loaded
# * Create several profiles with different characteristics (similar to the Firefox setup script)
# * Ensure the directories that the script cycles through to install managed settings and extensions are complete for all installation types (i.e. there might need to be some additions for Flatpak installations since their folder structure is different)
# * Document how [`chromium-flags.conf`](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/chromium-flags.conf) can be or is integrated
#
# ## Links
#
# * [`managed.json`](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/chrome/managed.json)
# * [`recommended.json`](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/chrome/recommended.json)
function chromeSetUp() {
### Ensure Chrome policies directory is present
logg info 'Processing policy directories for Chromium based browsers'
for POLICY_DIR in "/opt/google/chrome/policies"; do
if [ -d "$(dirname "$POLICY_DIR")" ]; then
### Managed policies
if [ ! -f "$POLICY_DIR/managed/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/managed exists"
sudo mkdir -p "$POLICY_DIR/managed"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json to $POLICY_DIR/managed/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json" "$POLICY_DIR/managed/policies.json"
fi
### Recommended policies
if [ ! -f "$POLICY_DIR/recommended/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/recommended exists" && sudo mkdir -p "$POLICY_DIR/recommended"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json to $POLICY_DIR/recommended/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json" "$POLICY_DIR/recommended/policies.json"
fi
else
logg info "Skipping extension injection into $POLICY_DIR - create these folders prior to running to create managed configs"
fi
done
### Add Chrome extension JSON
logg info 'Populating Chrome extension JSON'
for EXTENSION_DIR in "/opt/google/chrome/extensions" "$HOME/Library/Application Support/Google/Chrome/External Extensions"; do
### Ensure program-type is installed
if [ -d "$(dirname "$EXTENSION_DIR")" ]; then
### Ensure extension directory exists
if [[ "$EXTENSION_DIR" == '/opt/'* ]] || [[ "$EXTENSION_DIR" == '/etc/'* ]]; then
if [ ! -d "$EXTENSION_DIR" ]; then
logg info "Creating directory $EXTENSION_DIR" && sudo mkdir -p "$EXTENSION_DIR"
fi
else
if [ ! -d "$EXTENSION_DIR" ]; then
logg info "Creating directory $EXTENSION_DIR" && mkdir -p "$EXTENSION_DIR"
fi
fi
### Add extension JSON
logg info "Adding Chrome extensions to $EXTENSION_DIR"
for EXTENSION in {{ list (.chromeExtensions | toString | replace "[" "" | replace "]" "") | uniq | join " " }}; do
logg info "Adding Chrome extension manifest ($EXTENSION)"
if ! echo "$EXTENSION" | grep 'https://chrome.google.com/webstore/detail/' > /dev/null; then
EXTENSION="https://chrome.google.com/webstore/detail/$EXTENSION"
fi
EXTENSION_ID="$(echo "$EXTENSION" | sed 's/^.*\/\([^\/]*\)$/\1/')"
if [[ "$EXTENSION_DIR" == '/opt/'* ]] || [[ "$EXTENSION_DIR" == '/etc/'* ]]; then
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/extension.json" "$EXTENSION_DIR/${EXTENSION_ID}.json"
else
cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/extension.json" "$EXTENSION_DIR/${EXTENSION_ID}.json"
fi
done
else
logg info "$EXTENSION_DIR does not exist"
fi
done
}
chromeSetUp
ansible: professormanhattan.chrome
cask: google-chrome
choco: googlechrome
flatpak: com.google.Chrome
yay: google-chrome
google-drive:
_app: Google Drive.app
_bin: google-drive
_desc: Google Drive for Desktop integrates a Google Drive account into your macOS / Windows workstation by adding a menubar with options to synchronize folders to the cloud.
_docs: false
_github: false
_home: https://www.google.com/drive/download/
_name: Google Drive
cask: google-drive
choco: googledrive
google-web-designer:
_bin: google-web-designer
_github: false
_desc: Google Web Designer gives you the power to create beautiful and compelling videos, images, and HTML5 ads. Use animation and interactive elements to build out your creative vision, then scale your content for different sizes or audiences with responsive and dynamic workflows.
_name: Google Web Designer
cask: google-web-designer
choco: google-web-designer
gopass:
_bin: gopass
_desc: The slightly more awesome standard unix password manager for teams
_docs: https://github.com/gopasspw/gopass/tree/master/docs
_github: https://github.com/gopasspw/gopass
_home: https://www.gopass.pw/
_name: GoPass
apk: gopass
brew: gopass
choco:
- gpg4win
- gopass
dnf: gopass
go: github.com/gopasspw/gopass@latest
pacman: gopass
scoop: gopass
winget: gopass.gopass
gopkgs:
_bin: gopkgs
_desc: Tool to get list available Go packages
_github: https://github.com/uudashr/gopkgs
go: github.com/uudashr/gopkgs/v2/cmd/gopkgs@latest
gopls:
_bin: gopls
_github: false
brew: gopls
go: golang.org/x/tools/gopls@latest
goreleaser:
_bin: goreleaser
_github: https://github.com/goreleaser/goreleaser
_name: Go Releaser
brew: goreleaser
go: github.com/goreleaser/goreleaser@latest
nix-env: goreleaser
snap: goreleaser --classic
yay: goreleaser-bin
gotests:
_bin: gotests
_desc: Automatically generate Go test boilerplate from your source code
_github: https://github.com/cweill/gotests
brew: gotests
go: github.com/cweill/gotests/...@latest
gphotos-sync:
_bin: gphotos-sync
_desc: Google Photos Sync is a backup tool for your Google Photos cloud storage.
_docs: https://gilesknap.github.io/gphotos-sync/main/index.html
_github: https://github.com/gilesknap/gphotos-sync
_home: https://gilesknap.github.io/gphotos-sync/main/index.html
_name: Google Photos Sync
pacman: gphotos-sync
pipx: gphotos-sync
gping:
_bin: gping
_desc: '[gping](https://github.com/orf/gping) is like the regular ping command except it also displays a chart labeled with response timing statistics.'
_github: https://github.com/orf/gping
_name: gping
ansible: professormanhattan.gping
brew: gping
cargo: gping
choco: gping
github: github.com/orf/gping
pacman: gping
scoop: gping
gpt-engineer:
_bin: gpt-engineer
_github: https://github.com/AntonOsika/gpt-engineer
_name: GPT Engineer
pipx: gpt-engineer
gradle:
_bin: gradle
_desc: '[Gradle](https://gradle.org/) is a build automation tool for multi-language software development. It controls the development process in the tasks of compilation and packaging to testing, deployment, and publishing. Supported languages include Java, C/C++, JavaScript.'
_docs: https://docs.gradle.org/current/userguide/userguide.html
_github: https://github.com/gradle/gradle
_home: https://gradle.org/
_name: Gradle
ansible: professormanhattan.gradle
brew: gradle
choco: gradle
port: gradle
scoop: gradle
snap: gradle --classic
graphql-playground:
_app: GraphQL Playground.app
_bin: graphql-playground
_github: https://github.com/graphql/graphql-playground
_name: GraphQL Playground
appimage: graphql/graphql-playground
cask: graphql-playground
exe: https://github.com/graphql/graphql-playground/releases/download/v1.8.10/graphql-playground-electron-setup-1.8.10.exe
grep:
_bin: grep
_github: false
apt: grep
brew: grep
dnf: grep
pacman: grep
zypper: grep
grex:
_bin: grex
_desc: A command-line tool and library for generating regular expressions from user-provided test cases
_docs: https://github.com/pemistahl/grex#5-how-to-use
_github: https://github.com/pemistahl/grex
_home: https://pemistahl.github.io/grex-js/
_name: grex
brew: grex
cargo: grex
choco: grex
github: github.com/pemistahl/grex
scoop: grex
snap: grex
gron:
_bin: gron
_desc: Extension to make JSON greppable
_github: https://github.com/tomnomnom/gron
_name: gron
brew: gron
github: github.com/tomnomnom/gron
go: github.com/tomnomnom/gron@latest
grype:
_bin: grype
_desc: A vulnerability scanner for container images and filesystems
_docs: https://github.com/anchore/grype#getting-started
_github: https://github.com/anchore/grype
_home: https://github.com/anchore/grype
_name: Grype
brew: anchore/grype/grype
choco: grype
port: grype
yay: grype-bin
gtop:
_bin: gtop
_desc: System monitoring dashboard for terminal
_github: https://github.com/aksakalli/gtop
brew: gtop
npm: gtop
guacamole:
_bin: null
_desc: '[Apache Guacamole](https://guacamole.apache.org/) is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.'
_docs: https://guacamole.apache.org/doc/gug/configuring-guacamole.html
_github: https://github.com/apache/guacamole-client
_home: https://guacamole.apache.org/
_name: Guacamole
ansible: professormanhattan.guacamole
gulp:
_bin: gulp
_desc: '[Gulp](https://gulpjs.com/) is a toolkit to automate & enhance your workflow'
_docs: https://gulpjs.com/docs/en/getting-started/quick-start
_github: https://github.com/gulpjs/gulp
_home: https://gulpjs.com/
_name: Gulp
# Brew gulp is deprecated
# brew: gulp
npm: gulp
gum:
_bin: gum
_desc: A tool for glamorous shell scripts. Provides styling and fancy prompts.
_docs: https://github.com/charmbracelet/gum
_github: https://github.com/charmbracelet/gum
_home: https://charm.sh/
_name: Gum
apk: gum
brew: gum
go: github.com/charmbracelet/gum@latest
nix: nixpkgs.gum
pacman: gum
pkg-termux: gum
gup:
_bin: gup
_github: https://github.com/nao1215/gup
_name: Gup
brew: nao1215/tap/gup
go: github.com/nao1215/gup@latest
gvm:
_bin: null
_desc: '[gvm](https://github.com/moovweb/gvm) lets you manage Go environments and switch between Go versions.'
_github: https://github.com/moovweb/gvm
_name: rvm
ansible: professormanhattan.gvm
hadolint:
_bin: hadolint
_desc: A smarter Dockerfile linter that helps you build best practice Docker images. The linter parses the Dockerfile into an AST and performs rules on top of the AST
_github: https://github.com/hadolint/hadolint
_name: hadolint
brew: hadolint
dnf:fedora: hadolint
scoop: hadolint
handbrake:
_app: HandBrake.app
_bin: handbrake
_github: https://github.com/HandBrake/HandBrake
cask: handbrake
choco: handbrake
flatpak: fr.handbrake.ghb
handlr:
_bin: handlr
_desc: A better xdg-utils
_docs: https://github.com/chmln/handlr#usage
_github: https://github.com/chmln/handlr
_home: https://github.com/chmln/handlr
_name: Handlr
cargo: handlr --locked
yay: handlr-bin
haproxy:
_bin: haproxy
_github: https://github.com/haproxy/haproxy
_name: HAProxy
_service: haproxy
apk: haproxy
apt: haproxy
brew: haproxy
choco: haproxy
dnf: haproxy
pacman: haproxy
zypper: haproxy
has:
_bin: has
_github: https://github.com/kdabir/has
_name: Has
brew: kdabir/tap/has
hbs-cli:
_bin: hbs
_desc: This is a CLI tool to render handlebars templates, with the ability to require in Partials, Helpers and JSON Data
_github: https://github.com/keithamus/hbs-cli
npm: hbs-cli
hclq:
_bin: hclq
_desc: Command-line processor for HashiCorp config files, like sed for HCL — Terraform, Consul, Nomad, Vault
_github: https://github.com/mattolenik/hclq
_name: hclq
github: github.com/mattolenik/hclq
go: github.com/mattolenik/hclq@latest
helix:
_bin: hx
_desc: A post-modern modal text editor.
_docs: https://docs.helix-editor.com/
_github: https://github.com/helix-editor/helix
_home: https://helix-editor.com/
_name: Helix Editor
_repology: helix
brew: helix
choco: helix
flatpak: com.helix_editor.Helix
pacman: helix
scoop: helix
winget: Helix.Helix
helm:
_bin: helm
_desc: The Kubernetes Package Manager. Helm is the best way to find, share, and use software built for Kubernetes.
_docs: https://helm.sh/docs
_github: https://github.com/helm/helm
_home: https://helm.sh/
_name: Helm
brew: helm
choco: kubernetes-helm
scoop: helm
snap: helm --classic
helm-docs:
_bin: helm-docs
_github: https://github.com/norwoodj/helm-docs
_name: Helm Docs
brew: norwoodj/tap/helm-docs
scoop: helm-docs
helmfile:
_bin: helmfile
_github: https://github.com/helmfile/helmfile
_name: Helmfile
brew: helmfile
pacman: helmfile
scoop: helmfile
zypper: helmfile
heroku-cli:
_bin: heroku
_github: https://github.com/heroku/cli
_desc: '[Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) lets you create and manage Heroku apps directly from the terminal. Its an essential part of using Heroku.'
_name: Heroku CLI
ansible: professormanhattan.heroku
brew: heroku/brew/heroku
choco: heroku-cli
npm: heroku
scoop: heroku-cli
yay: heroku-cli
hexyl:
_bin: hexyl
_desc: '[hexyl](https://github.com/sharkdp/hexyl) is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes (NULL bytes, printable ASCII characters, ASCII whitespace characters, other ASCII characters and non-ASCII).'
_github: https://github.com/sharkdp/hexyl
_name: hexyl
ansible: professormanhattan.hexyl
apt: hexyl
brew: hexyl
cargo: hexyl
dnf:fedora: hexyl
github: github.com/sharkdp/hexyl
nix: hexyl
pacman: hexyl
pkg-freebsd: hexyl
pkg-termux: hexyl
port: hexyl
scoop: hexyl
xbps: hexyl
hey:
_bin: hey
_desc: HTTP load generator, ApacheBench (ab) replacement, formerly known as rakyll/boom
_github: https://github.com/rakyll/hey
_name: hey
brew: hey
github: github.com/rakyll/hey
hiddenbar:
_app: Hidden Bar.app
_bin: null
_desc: macOS menu bar application that allows you to add menu bar items to a hideable drawer
_docs: https://github.com/dwarvesf/hidden
_github: https://github.com/dwarvesf/hidden
_home: https://dwarves.foundation/opensource/
_name: Hidden Bar
cask: hiddenbar
mas: 1452453066
himalaya:
_bin: himalaya
_github: https://github.com/soywod/himalaya
_desc: '[Himalaya](https://github.com/soywod/himalaya) is a CLI email client written in Rust.'
_name: Himalaya
ansible: professormanhattan.himalaya
brew: himalaya
scoop: himalaya
hishtory:
_bin: hishtory
_github: https://github.com/ddworken/hishtory
_name: hiSHtory
_post: |
#!/usr/bin/env bash
echo y | hishtory init "$HISHTORY_USER_SECRET"
_todo: Check for Homebrew version
script: curl -sSL --compressed https://hishtory.dev/install.py | python3 -
hoard:
_bin: hoard
_github: https://github.com/Hyde46/hoard
_name: Hoard
# brew: Hyde46/hoard/hoard # Fails with cURL trying to download non-existant release file
cargo: hoard-rs
nix-env: hoard
# Might be paru instead of pacman
pacman: hoard
port: hoard-cli
holehe:
_bin: holehe
_github: https://github.com/megadose/holehe
_name: Holehe
pipx: holehe
hostctl:
_bin: hostctl
_desc: This tool gives more control over the use of hosts file
_github: https://github.com/guumaster/hostctl
_name: hostctl
brew: guumaster/tap/hostctl
github: github.com/guumaster/hostctl
scoop: hostctl
yay: hostctl
hosthomepage:
_bin: null
_name: Host Home Page
_github: false
ansible: professormanhattan.hosthomepage
hosts:
_bin: null
_github: false
_desc: This role is intended to be used with the [main ProfessorManhattan playbook](https://gitlab.com/ProfessorManhattan/Playbooks). It integrates tightly with the configuration variables that come with the playbook.
_name: Hosts
ansible: professormanhattan.hosts
howdoi:
_bin: howdoi
_github: https://github.com/gleitz/howdoi
_name: howdoi
brew: howdoi
pipx: howdoi
hss:
_bin: hss
_github: https://github.com/six-ddc/hss
_name: hss
brew: hss
port: hss
script: cd /tmp && git clone https://github.com/six-ddc/hss.git && cd hss && make && make install && cd /tmp && rm -rf hss
hstr:
_bin: hstr
_github: https://github.com/dvorka/hstr
_name: HiSToRy
apk: hstr
apt: hstr
brew: hstr
dnf: hstr
emerge: app-shells/hstr
nix-env: hstr
pkg-freebsd: hstr
port: histr
xbps: hstr
htmlhint:
_bin: htmlhint
_desc: The static code analysis tool you need for your HTML
_docs: https://htmlhint.com/docs/user-guide/getting-started
_github: https://github.com/htmlhint/HTMLHint
_home: https://htmlhint.com/
_name: HTMLHint
npm: htmlhint
htmlq:
_bin: htmlq
_desc: A lightweight and flexible command-line JSON processor for HTML
_github: https://github.com/mgdm/htmlq
_name: htmlq
brew: htmlq
cargo: htmlq
github: github.com/mgdm/htmlq
htop:
_bin: htop
_desc: '[htop](https://htop.dev/) is an interactive system-monitor process-viewer and process-manager. It is designed as an alternative to the Unix program top. It shows a frequently updated list of the processes running on a computer, normally ordered by the amount of CPU usage.'
_docs: https://www.man7.org/linux/man-pages/man1/htop.1.html
_github: https://github.com/htop-dev/htop
_home: https://htop.dev/
_name: htop
ansible:darwin: professormanhattan.htop
ansible:linux: professormanhattan.htop
apt: htop
brew: htop
dnf: htop
pacman: htop
port: htop
http-prompt:
_bin: http-prompt
_desc: HTTP Prompt is an interactive command-line HTTP client featuring autocomplete and syntax highlighting, built on HTTPie and prompt_toolkit.
_docs: https://docs.http-prompt.com/en/latest/
_github: https://github.com/httpie/http-prompt
_home: https://http-prompt.com/
_name: HTTP Prompt
brew: http-prompt
pipx: http-prompt
http-toolkit:
_app: HTTP Toolkit.app
_github: https://github.com/httptoolkit/httptoolkit
_name: HTTP Toolkit
apt: https://github.com/httptoolkit/httptoolkit-desktop/releases/download/v1.14.8/HttpToolkit-1.14.8.deb
cask: http-toolkit
winget: HTTPToolKit.HTTPToolKit
yay: httptoolkit
httpie:
_bin: httpie
_desc: '[HTTPie](https://httpie.io/) is a terminal-based, user-friendly command-line HTTP client for the API era. It comes with JSON support, syntax highlighting, persistent sessions, wget-like downloads, plugins, and more.'
_name: HTTPie
_github: https://github.com/httpie/cli
_todo: Look into https://github.com/httpie/desktop as alternative to Postman and other HTTP request clients
ansible: professormanhattan.httpie
brew: httpie
choco: httpie
dnf: httpie
pacman: httpie
pipx: httpie
port: httpie
snap: httpie
httpstat:
_bin: httpstat
_desc: curl statistics made simple
_docs: https://github.com/reorx/httpstat#usage
_github: https://github.com/reorx/httpstat
_home: https://github.com/reorx/httpstat
_name: httpstat
brew: httpstat
pipx: httpstat
hub:
_bin: hub
_desc: Add GitHub support to git on the command-line
_github: https://hub.github.com/
apt: hub
brew: hub
choco: hub
dnf:fedora: hub
pacman: hub
pkg: hub
scoop: hub
hugo:
_bin: hugo
_desc: The worlds fastest framework for building websites.
_docs: https://gohugo.io/documentation/
_github: https://github.com/gohugoio/hugo
_home: https://gohugo.io/
_name: Hugo
apt: hugo
brew: hugo
choco: hugo
dnf: hugo
eopkg: hugo
go: github.com/gohugoio/hugo@latest
pacman: hugo
port: hugo
scoop: main/hugo
snap: hugo
zypper: hugo
hurl:
_bin: hurl
_github: https://github.com/Orange-OpenSource/hurl
brew: hurl
cargo: hurl
choco: hurl
npm: '@orangeopensource/hurl'
pkg-freebsd: hurl
port: hurl
scoop: hurl
winget: hurl
husky:
_bin: husky
_desc: Husky improves your commits and more
_github: https://github.com/typicode/husky
_home: https://typicode.github.io/husky/
_name: Husky
npm: husky
hyper:
_appImageName: Hyper
_bin: null
_desc: '[Hyper](https://hyper.is/) is an electron-based terminal. It is written using web technologies such as HTML, CSS, JavaScript etc. It looks very modern and has lots of customization options.'
_docs: https://hyper.is/blog
_github: https://github.com/vercel/hyper
_home: https://hyper.is/
_name: Hyper
ansible: professormanhattan.hyper
appimage: hyper
brew: hyper
choco: hyper
yay: hyper
hyperfine:
_bin: hyperfine
_desc: '[hyperfine](https://github.com/sharkdp/hyperfine) is a cross-platform command-line benchmarking tool that can be used to determine the performance of shell commands.'
_docs: https://docs.rs/crate/hyperfine/1.2.0
_github: https://github.com/sharkdp/hyperfine
_name: hyperfine
ansible: professormanhattan.hyperfine
apk: hyperfine
brew: hyperfine
cargo: hyperfine
choco: hyperfine
dnf: hyperfine
github: github.com/sharkdp/hyperfine
pacman: hyperfine
pkg: hyperfine
hyperkit:
_bin: hyperkit
_deps:darwin:
- xcode
_github: https://github.com/moby/hyperkit
_name: HyperKit
brew:darwin: hyperkit
ideviceinstaller:
_bin: ideviceinstaller
_github: https://github.com/libimobiledevice/ideviceinstaller
brew:darwin: ideviceinstaller
iina:
_app: iina.app
_bin: null
_desc: The modern video player for macOS.
_docs: https://iina.io/
_github: https://github.com/iina/iina
_home: https://iina.io/
_name: iina macOS Video Player
cask: iina
imagemagick:
_bin: convert
_github: https://github.com/ImageMagick/ImageMagick
apk: imagemagick
apt:
- imagemagick
- libx11-dev
brew: imagemagick
choco: imagemagick
dnf:fedora: imagemagick
scoop: imagemagick
imageoptim:
_app: ImageOptim.app
_bin: null
_desc: Image compressor that utilizes other applications like ImageOptim under the hood
_github: https://github.com/ImageOptim/ImageOptim
_home: https://imageoptim.com/mac
cask: imageoptim
imageoptim-cli:
_bin: imageoptim
_deps:
- imageoptim
_desc: Image compressor that utilizes other applications like ImageOptim under the hood
_github: https://github.com/ImageOptim/ImageOptim
_home: https://imageoptim.com/mac
brew:darwin-x86_64: imageoptim-cli
npm:darwin: imageoptim-cli
imagine:
_app: Imagine.app
_bin: null
_desc: Imagine is a desktop app for compression of PNG and JPEG, with a modern and friendly UI.
_docs: https://github.com/meowtec/Imagine
_github: https://github.com/meowtec/Imagine
_home: https://github.com/meowtec/Imagine
_name: Imagine
appimage: meowtec/Imagine
exe: https://github.com/meowtec/Imagine/releases/download/v0.7.4/Imagine-Setup-0.7.4.exe
script:darwin: curl -sSL https://github.com/meowtec/Imagine/releases/download/v0.7.4/Imagine-0.7.4.dmg > /tmp/Imagine.dmg && sudo hdiutil attach /tmp/Imagine.dmg && sudo cp -R "/Volumes/Imagine 0.7.4/Imagine.app" /Applications && sudo hdiutil detach "/Volumes/Imagine 0.7.4" && rm -f /tmp/Imagine.dmg
imgur-uploader:
_bin: imgur-uploader
_desc: Upload images to imgur
_github: https://github.com/kevva/imgur-uploader-cli
npm: imgur-uploader-cli
impl:
_bin: impl
_desc: impl generates method stubs for implementing an interface
_github: https://github.com/josharian/impl
go: github.com/josharian/impl@latest
infracost:
_bin: infracost
_desc: '[infracost](https://www.infracost.io/) provides cloud cost estimates for Terraform in pull requests'
_docs: https://www.infracost.io/docs
_github: https://github.com/infracost/infracost
_home: https://www.infracost.io/
_name: infracost
brew: infracost
choco: infracost
yay: infracost
inkscape:
_app: Inkscape.app
_bin: inkscape
_desc: '[Inkscape](https://inkscape.org/) is a free and open-source vector graphics editor used to create vector images, primarily in Scalable Vector Graphics format. Other formats can be imported and exported. Inkscape can render primitive vector shapes and text. This role installs Inkscape on nearly any platform.'
_docs: https://inkscape.org/*docs/
_github: https://github.com/inkscape/inkscape
_home: https://inkscape.org
_name: Inkscape
ansible: professormanhattan.inkscape
apt: inkscape
cask: inkscape
choco: inkscape
dnf: inkscape
flatpak: org.inkscape.Inkscape
pacman: inkscape
snap: inkscape
intellij-idea-ce:
_app: IntelliJ IDEA CE.app
_bin: intellij-idea-community
_desc: '[IntelliJ IDEA](https://www.jetbrains.com/idea/) is an integrated development environment written in Java for developing computer software. It is developed by JetBrains, and is available as an Apache 2 Licensed community edition, and in a proprietary commercial edition. Both can be used for commercial development.'
_docs: https://www.jetbrains.com/help/
_github: https://github.com/JetBrains/intellij-community
_home: https://www.jetbrains.com/idea/
_name: IntelliJ IDEA (CE)
ansible: professormanhattan.intellij
cask: intellij-idea-ce
choco: intellijidea-community
snap: intellij-idea-community --classic
iodine:
_bin: iodined
_github: https://github.com/yarrick/iodine
_name: Iodine
brew: iodine
choco: iodine
ionic:
_bin: ionic
_desc: '[Ionic Framework](https://ionicframework.com/) The Ionic command line interface (CLI) is your go-to tool for developing Ionic apps'
_docs: https://ionicframework.com/docs
_github: https://github.com/ionic-team/ionic-cli
_home: https://ionicframework.com/
_name: Ionic Framework
npm: '@ionic/cli'
ios-deploy:
_bin: ios-deploy
_desc: Install and debug iPhone apps from the command line, without using Xcode
_github: https://github.com/ios-control/ios-deploy
brew:darwin: ios-deploy
npm:darwin: ios-deploy
ios-sim:
_bin: ios-sim
_github: https://github.com/ios-control/ios-sim
_name: ios-sim
npm:darwin: ios-sim
ipfs:
_bin: ipfs
_desc: A peer-to-peer hypermedia protocol designed to preserve and grow humanity's knowledge by making the web upgradeable, resilient, and more open
_docs: https://docs.ipfs.tech/
_github: https://github.com/ipfs/ipfs
_home: https://ipfs.tech/
_name: IPFS
_service: ipfs
brew: ipfs
choco: go-ifps
nix: ipfs
port: ipfs
scoop: go-ipfs
snap: ipfs
ipfs-deploy:
_bin: ipd
_desc: A peer-to-peer hypermedia protocol designed to preserve and grow humanity's knowledge by making the web upgradeable, resilient, and more open
_docs: https://docs.ipfs.tech/
_github: https://github.com/ipfs/ipfs
_home: https://ipfs.tech/
_name: IPFS
npm: ipfs-deploy
ipfs-desktop:
_app: IPFS Desktop.app
_bin: null
_desc: An unobtrusive and user-friendly desktop application for IPFS on Windows, Mac and Linux.
_docs: https://docs.ipfs.tech/install/ipfs-desktop/
_github: https://github.com/ipfs/ipfs-desktop
_home: https://ipfs.tech/
_name: IPFS Desktop
appimage: https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.28.0/ipfs-desktop-0.28.0-linux-x86_64.AppImage
cask: ipfs
choco: ipfs-desktop
scoop: extras/ipfs-desktop
winget: IPFS.IPFS-Desktop
ipmitool:
_bin: ipmitool
_github: https://github.com/ipmitool/ipmitool
_name: IPMI Tool
apt: ipmitool
brew: ipmitool
dnf: ipmitool
pacman: ipmitool
iproute2mac:
_bin: ip
_github: https://github.com/brona/iproute2mac
_name: iproute2mac
brew:darwin: iproute2mac
iredis:
_bin: iredis
_desc: A terminal client for Redis with auto-completion and syntax highlightin
_docs: https://github.com/laixintao/iredis
_github: https://github.com/laixintao/iredis
_home: https://pypi.org/project/iredis/
_name: iRedis
apt: iredis
brew: iredis
pipx: iredis
irssi:
_bin: irssi
_desc: Irssi is a modular text mode chat client. It comes with IRC support built in, and there are third party ICB, SILC, XMPP (Jabber), PSYC and Quassel protocol modules available.
_docs: https://irssi.org/documentation/
_github: https://github.com/irssi/irssi
_home: https://irssi.org/
_name: irssi
apt: irssi
brew: irssi
dnf: irssi
pacman: irssi
port: irssi
is-up:
_bin: is-up
_desc: Check whether a website is up or down using the isitup.org API
_github: https://github.com/sindresorhus/is-up-cli
npm: is-up-cli
iso-image-writer:
_github: https://github.com/KDE/isoimagewriter
_bin: iso-image-writer
_name: ISO Image Writer
flatpak: org.kde.isoimagewriter
isort:
_bin: isort
_desc: isort is a Python utility / library to sort imports alphabetically, and automatically separated into sections and by type.
_docs: https://pycqa.github.io/isort/index.html
_github: https://github.com/PyCQA/isort
_home: https://pycqa.github.io/isort/
_name: iSort
brew: isort
pipx: isort
iterm2:
_app: iTerm.app
_bin: null
_desc: '[iTerm2](https://eugeny.github.io/iterm2/) is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux.'
_docs: https://iterm2.com/documentation.html
_github: https://github.com/gnachman/iTerm2
_home: https://iterm2.com/
_name: iTerm2
_post:cask: |
#!/usr/bin/env bash
echo "Setting iTerm2 options location to Install Doctor Chezmoi location" && defaults write com.googlecode.iterm2 PrefsCustomFolder -string "${XDG_DATA_HOME:-$HOME/.local/share}/chezmoi/home/Library/Preferences/com.googlecode.iterm2.plist"
echo "Setting iTerm2 to automatically sync with managed options" && defaults write com.googlecode.iterm2 NoSyncNeverRemindPrefsChangesLostForFile_selection -int 2
ansible:darwin: professormanhattan.iterm2
cask: iterm2
java:
_bin: false
_desc: '[Java](https://www.java.com/en/) is a class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible.'
_docs: https://docs.oracle.com/en/cloud/paas/nosql-cloud/index.html
_github: https://github.com/oracle/nosql-java-sdk
_home: https://www.java.com/en/
_name: Java
_when:cask: '! brew list temurin > /dev/null'
ansible: professormanhattan.java
apt: openjdk-11-jdk
brew: openjdk
cask: temurin
choco: jdk11
dnf: java-11-openjdk-devel.x86_64
pacman: jdk-openjdk
port: openjdk11
scoop: openjdk11
jc:
_bin: jc
_github: https://github.com/kellyjonbrazil/jc
_name: jc
apt: jc
brew: jc
dnf: jc
nix-env: nixpkgs.jc
pacman: jc
pipx: jc
zypper: jc
jenv:
_bin: jenv
_desc: '[jenv](https://www.jenv.be/) lets you switch between Java versions. It sets JAVA_HOME inside your shell, in a way that can be set globally, local to the current working directory or per shell.'
_docs: https://github.com/gcuisinier/jenv/wiki
_github: https://github.com/jenv/jenv
_home: https://www.jenv.be/
_name: jenv
ansible: professormanhattan.jenv
brew: jenv
jest:
_bin: jest
_desc: Delightful JavaScript testing.
_docs: https://jestjs.io/docs/getting-started
_github: https://github.com/jestjs/jest
_home: https://jestjs.io/
_name: Jest
npm: jest
jiq:
_bin: jiq
_desc: Create jq queries interactively by leveraging a live reload feature in the terminal
_github: https://github.com/fiatjaf/jiq
_name: jiq
github: github.com/fiatjaf/jiq/cmd/jiq
go: github.com/fiatjaf/jiq/cmd/jiq@latest
jitsi-meet:
_app: Jitsi Meet.app
_bin: jitsi-meet
_desc: Desktop application for Jitsi Meet built with Electron
_github: https://github.com/jitsi/jitsi-meet-electron
_name: Jitsi Meet Electron
cask: jitsi-meet
choco: jitsi-meet-electron
flatpak: org.jitsi.jitsi-meet
github: github.com/jitsi/jitsi-meet-electron
pkg: jitsi-meet
yay: jitsi-meet-desktop-bin
jo:
_bin: jo
_desc: '[jo](https://github.com/jpmens/jo) is a free and open-source command-line tool that allows you to create JSON objects.'
_github: https://github.com/jpmens/jo
_name: jo
ansible: professormanhattan.jo
apt: jo
brew: jo
github: github.com/jpmens/jo
pkg: jo
scoop: jo
snap: jo
yay: jo
john:
_bin: john
_github: https://github.com/openwall/john
_name: John
apt: john
brew: john
choco: john
dnf: john
pacman: john
jpegoptim:
_bin: jpegoptim
_github: https://github.com/tjko/jpegoptim
_name: JPEGOptim
apt: jpegoptim
brew: jpegoptim
choco: jpegoptim
dnf: jpegoptim
pacman: jpegoptim
zypper: jpegoptim
jq:
_bin: jq
_desc: '[jq](https://github.com/stedolan/jq) is like sed for JSON data. You can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.'
_docs: https://stedolan.github.io/jq/manual/
_github: https://github.com/stedolan/jq
_home: https://stedolan.github.io/jq
_name: jq
ansible: professormanhattan.jq
apk: jq
apt: jq
brew: jq
choco: jq
dnf: jq
github: github.com/stedolan/jq
pkg: jq
jqp:
_bin: jqp
_desc: A TUI playground to experiment with jq
_docs: https://github.com/noahgorstein/jqp#usage
_github: https://github.com/noahgorstein/jqp
_home: https://github.com/noahgorstein/jqp
_name: jqp
brew: noahgorstein/tap/jqp
port: jqp
yay: jqp
json-server:
_bin: json-server
_desc: Get a full fake REST API with zero coding in less than 30 seconds (seriously)
_docs: https://github.com/typicode/json-server
_github: https://github.com/typicode/json-server
_home: https://github.com/typicode/json-server
_name: JSON Server
npm: json-server
juicefs:
_bin: juicefs
_github: https://github.com/juicedata/juicefs
_name: JuiceFS
_post: |
#!/usr/bin/env sh
. "$HOME/.local/bin/installx/juicefs.sh"
brew: juicefs
scoop: juicefs
snap: juicefs
yay: juicefs
juju:
_bin: juju
_github: https://github.com/juju/juju
_desc: '[Juju](https://juju.is/) is a Charmed Operator Framework, composed of a Charmed Operator Lifecycle Manager, and the Charmed Operator SDK. It allows you to deploy, integrate, and manage Kubernetes, container, and VM-native applications seamlessly across hybrid clouds. Juju drives Day 0 through Day 2 operations in your complex environment.'
_docs: https://juju.is/docs
_home: https://juju.is/
_name: Juju
ansible: professormanhattan.juju
brew: juju
choco: juju
snap: juju --classic
junction:
_bin: junction
_github: https://github.com/sonnyp/Junction
flatpak: re.sonny.Junction
just:
_bin: just
_github: https://github.com/casey/just
_name: Just
apk: just
apt: just
brew: just
cargo: just
choco: just
dnf: just
eopkg: just
nix-env: nixpkgs.just
pacman: just
pkg-freebsd: just
port: just
scoop: just
snap: --edge --classic just
winget: Casey.Just
xbps: just
k9s:
_bin: k9s
_github: https://github.com/derailed/k9s
_name: K9s
brew: derailed/k9s/k9s
choco: k9s
pacman: k9s
port: k9s
scoop: k9s
kap:
_app: Kap.app
_bin: kap
_github: https://github.com/wulkano/Kap
_name: Kap
cask: kap
kasmvnc:
_bin: kasmvncpasswd
_github: https://github.com/kasmtech/KasmVNC
script:linux: |
RELEASES=$(curl -sS "https://api.github.com/repos/kasmtech/KasmVNC/releases/latest") || :
LATEST_VERSION=$(echo $RELEASES | grep -o '"tag_name": "[^"]*' | grep -o '[^"]*$') || :
if command -v apt-get > /dev/null; then
. /etc/os-release
cd /tmp
case $VERSION_CODENAME in
bullseye )
wget "https://github.com/kasmtech/KasmVNC/releases/download/$LATEST_VERSION/kasmvncserver_bullseye_${LATEST_VERSION:1}_amd64.deb" || :
;;
buster )
wget "https://github.com/kasmtech/KasmVNC/releases/download/$LATEST_VERSION/kasmvncserver_buster_${LATEST_VERSION:1}_amd64.deb" || :
;;
focal )
wget "https://github.com/kasmtech/KasmVNC/releases/download/$LATEST_VERSION/kasmvncserver_focal_${LATEST_VERSION:1}_amd64.deb" || :
;;
jammy )
wget "https://github.com/kasmtech/KasmVNC/releases/download/$LATEST_VERSION/kasmvncserver_jammy_${LATEST_VERSION:1}_amd64.deb" || :
;;
* )
;;
esac
if ls kasmvncserver*.deb > /dev/null 2>&1; then sudo apt-get install ./kasmvncserver_*.deb; sudo addgroup $USER ssl-cert; fi
elif command -v dnf > /dev/null; then
wget "https://github.com/kasmtech/KasmVNC/releases/download/$LATEST_VERSION/kasmvncserver_centos_core_${LATEST_VERSION:1}_x86_64.rpm" || :
if ls kasmvncserver*.rpm > /dev/null 2>&1; then sudo rpm -ivh ./kasmvncserver_*.rpm; sudo usermod -a -G kasmvnc-cert $USER; fi
elif command -v zypper > /dev/null; then
wget "https://github.com/kasmtech/KasmVNC/releases/download/$LATEST_VERSION/kasmvncserver_opensuse_15_${LATEST_VERSION:1}_x86_64.rpm" || :
if ls kasmvncserver*.rpm > /dev/null 2>&1; then sudo rpm -ivh ./kasmvncserver_*.rpm; sudo usermod -a -G kasmvnc-cert $USER; fi
elif command -v apk > /dev/null; then
wget "https://github.com/kasmtech/KasmVNC/releases/download/$LATEST_VERSION/kasmvnc.alpine_317_x86_64.tgz" || :
if ls kasmvncserver*.rpm > /dev/null 2>&1; then sudo tar -xzf "./kasmvnc.alpine_317_x86_64.tgz" -C /; fi
fi
yay: kasmvncserver-bin
kcpassword:
_bin: kcpassword
_github: https://github.com/xfreebird/kcpassword
_name: kcpassword
brew:darwin: xfreebird/utils/kcpassword
kdash:
_bin: kdash
_desc: A simple and fast dashboard for Kubernetes
_github: https://github.com/kdash-rs/kdash
_home: https://kdash.cli.rs/
_name: kdash
brew: kdash-rs/kdash/kdash
cargo: kdash
choco: kdash
github: github.com/kdash-rs/kdash
scoop: kdash
kde-plasma-desktop:
_bin: plasmashell
_github: https://github.com/KDE/plasma-desktop
_deps:
- kdeplasma-addons
apt: kde-plasma-desktop
dnf: kde-plasma-desktop
pacman: kde-plasma-desktop
kdenlive:
_app: kdenlive.app
_bin: kdenlive
_github: https://github.com/KDE/kdenlive
_name: Kdenlive
cask: kdenlive
choco: kdenlive
flatpak: org.kde.kdenlive
kdeplasma-addons:
_github: https://github.com/KDE/kdeplasma-addons
apt: kdeplasma-addons
dnf: kdeplasma-addons
pacman: kdeplasma-addons
keybase:
_app: Keybase.app
_bin: null
_desc: '[Keybase](https://keybase.io/) is secure messaging and file-sharing. Keybase uses public key cryptography to ensure your messages stay private. Keybase works for families, roommates, clubs, and groups of friends. Keybase connects to public identities, too. You can connect with communities from Twitter, Reddit, and elsewhere.'
_docs: https://book.keybase.io/docs
_github: https://github.com/keybase/client
_home: https://keybase.io/
_name: Keybase
_post: |
#!/usr/bin/env bash
# @file Keybase Configuration
# @brief Updates Keybase's system configuration with the Keybase configuration stored in the `home/dot_config/keybase/config.json` location.
# @description
# This script ensures Keybase utilizes a configuration that, by default, adds a security fix.
if command -v keybase > /dev/null; then
KEYBASE_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/keybase/config.json"
if [ -f "$KEYBASE_CONFIG" ]; then
logg info 'Ensuring /etc/keybase is a directory' && sudo mkdir -p /etc/keybase
logg info "Copying $KEYBASE_CONFIG to /etc/keybase/config.json" && sudo cp -f "$KEYBASE_CONFIG" /etc/keybase/config.json
else
logg warn "No Keybase config located at $KEYBASE_CONFIG"
fi
else
logg info 'The keybase executable is not available'
fi
_post:cask: |
#!/usr/bin/env bash
if [ ! -f /usr/local/bin/keybase ] && [ -f /Applications/Keybase.app/Contents/SharedSupport/bin/keybase ]; then echo "Fixing missing keybase executable symlink permission issue" && sudo ln -s /Applications/Keybase.app/Contents/SharedSupport/bin/keybase /usr/local/bin/keybase; fi
_when:ansible: '! test -f /opt/keybase/Keybase'
ansible: professormanhattan.keybase
cask: keybase
choco: keybase
pacman:
- keybase
- keybase-gui
yay: keybase-bin
keycastr:
_app: KeyCastr.app
_bin: null
_desc: Keystroke visualizer for macOS screen recordings
_docs: https://github.com/keycastr/keycastr
_github: https://github.com/keycastr/keycastr
_home: https://github.com/keycastr/keycastr
_name: Keycastr
cask: keycastr
kitty:
_bin: null
_desc: '[KiTTY](https://sw.kovidgoyal.net/kitty/) is designed for power keyboard users. To that end all its controls work with the keyboard (although it fully supports mouse interactions as well). Its configuration is a simple, human editable, single file for easy reproducibility.'
_docs: https://sw.kovidgoyal.net/kitty/quickstart/
_github: https://github.com/kovidgoyal/kitty
_home: https://sw.kovidgoyal.net/kitty/
_name: KiTTY
ansible: professormanhattan.kitty
kn:
_bin: kn
_desc: The Knative CLI (kn) provides a quick and easy interface for creating Knative resources, such as Knative Services and Event Sources
_github: https://github.com/knative/client
_name: kn
brew: kn
github: github.com/knative/client
yay: knative-client-bin
kodi:
_app: Kodi.app
_bin: kodi
_desc: '[Kodi](https://kodi.tv/) is a free and open-source media player software application developed by the XBMC Foundation, a non-profit technology consortium. Kodi is available for multiple operating systems and hardware platforms, with a software 10-foot user interface for use with televisions and remote controls.'
_docs: https://kodi.wiki/view/Main_Page
_github: https://github.com/xbmc/xbmc
_home: https://kodi.tv/
_name: Kodi
ansible: professormanhattan.kodi
apt: kodi
cask: kodi
choco: kodi
dnf: kodi
flatpak: tv.kodi.Kodi
pacman: kodi
koodo-reader:
_app: Koodo Reader.app
_bin: koodo-reader
_github: https://github.com/koodo-reader/koodo-reader
_name: Koodo Reader
cask: koodo-reader
flatpak: io.github.troyeguo.koodo-reader
scoop: extras/koodo-reader
winget: AppbyTroye.KoodoReader
kooha:
_bin: kooha
_github: https://github.com/SeaDve/Kooha
flatpak: io.github.seadve.Kooha
korkut:
_bin: korkut
_github: https://github.com/oguzhaninan/korkut
_name: Korkut
npm: korkut
krew:
_bin: kubectl-krew
_github: https://github.com/kubernetes-sigs/krew
_name: KubeCTL
brew: krew
krita:
_app: krita.app
_bin: krita
_github: https://github.com/KDE/krita
cask: krita
choco: krita
flatpak: org.kde.krita
ksnip:
_app: ksnip.app
_bin: ksnip
_github: https://github.com/ksnip/ksnip
_name: kSnip
_post:snap: |
#!/usr/bin/env bash
sudo snap connect ksnip:network-observe && sudo snap connect ksnip:network-manager-observe && sudo snap connect ksnip:removable-media
cask: ksnip
choco: ksnip
flatpak: org.ksnip.ksnip
snap: ksnip
kube-shell:
_bin: kube-shell
_desc: An integrated shell for working with the Kubernetes
_docs: https://github.com/cloudnativelabs/kube-shell
_github: https://github.com/cloudnativelabs/kube-shell
_home: https://github.com/cloudnativelabs/kube-shell
_name: Kube Shell
pipx: kube-shell
kubectx:
_bin: kubectx
_desc: Faster way to switch between clusters and namespaces in kubectl
_github: https://github.com/ahmetb/kubectx
_name: kubectx
brew: kubectx
choco:
- kubens
- kubectx
pacman: kubectx
port: kubectx
snap: kubectx --classic
kubekey:
_bin: kk
_desc: kk stands for KubeKey and it is an installer for [KubeSphere](https://github.com/kubesphere/kubesphere)
_docs: https://github.com/kubesphere/kubekey#usage
_github: https://github.com/kubesphere/kubekey
_home: https://kubesphere.io/
_name: KubeKey
brew: kubekey
kubenav:
_app: kubenav.app
_bin: null
_desc: kubenav is the navigator for your Kubernetes clusters right in your pocket
_docs: https://github.com/kubenav/kubenav
_github: https://github.com/kubenav/kubenav
_home: https://kubenav.io/
_name: kubenav
cask: kubenav
github: github.com/kubenav/kubenav
yay: kubenav-bin
kubernetes-cli:
_bin: kubectl
_desc: kubectl is a command line tool for communicating with a Kubernetes cluster's control plane, using the Kubernetes API
_docs: https://kubernetes.io/docs/reference/kubectl/kubectl/
_github: https://github.com/kubernetes/kubectl
_name: kubectl
brew: kubectl
choco: kubernetes-cli
snap: kubectl --classic
kubernetes-kompose:
_bin: kompose
_desc: Go from Docker Compose to Kubernetes
_docs: https://kompose.io/getting-started/
_github: https://github.com/kubernetes/kompose
_home: https://kompose.io/
_name: kompose
brew: kompose
choco: kubernetes-kompose
snap: kompose
kubeval:
_bin: kubeval
_desc: Validate your Kubernetes configuration files, supports multiple Kubernetes versions
_github: https://github.com/instrumenta/kubeval/
_home: https://www.kubeval.com/
_name: kubeval
_post:binary:darwin: |
#!/usr/bin/env bash
tar xf kubeval-darwin-amd64.tar.gz
sudo cp kubeval /usr/local/bin
_post:binary:linux: |
#!/usr/bin/env bash
tar xf kubeval-linux-amd64.tar.gz
sudo cp kubeval /usr/local/bin
_pre:scoop: scoop bucket add instrumenta https://github.com/instrumenta/scoop-instrumenta
binary:darwin: https://github.com/instrumenta/kubeval/releases/latest/download/kubeval-darwin-amd64.tar.gz
binary:linux: https://github.com/instrumenta/kubeval/releases/latest/download/kubeval-linux-amd64.tar.gz
# Following Homebrew does not work properly
# brew: instrumenta/instrumenta/kubeval
go: github.com/instrumenta/kubeval@latest
scoop: kubeval
kustomize:
_bin: kustomize
_github: https://github.com/kubernetes-sigs/kustomize
_name: Kustomize
brew: kustomize
choco: kustomize
go: sigs.k8s.io/kustomize/kustomize/v5@latest
port: kustomize
kvantum:
_bin: kvantummanager
_desc: Kvantum is an SVG-based theme engine for Qt4/Qt5 and KDE, i.e. a program for styling Qt applications with SVG images, with an emphasis on elegance, usability and practicality.
_docs: https://github.com/tsujan/Kvantum/blob/master/Kvantum/doc/Theme-Config.pdf
_github: https://github.com/tsujan/Kvantum
_home: https://github.com/tsujan/Kvantum
_name: Kvantum
apt:
- qt5-style-kvantum
- qt5-style-kvantum-themes
dnf:fedora: kvantum
eopkg: kvantum
pacman: kvantum
kvm:
_github: false
_bin:
- kvm
- qemu-img
_bin:brew:
- libvirtd
- qemu-img
_desc: Kernel-based Virtual Machine (or [KVM](https://www.linux-kvm.org/page/Main_Page)) is a virtualization module in the Linux kernel that allows the kernel to function as a hypervisor. It was merged into the Linux kernel mainline in kernel version 2.6.20, which was released on February 5, 2007.
_docs: https://www.linux-kvm.org/page/Documents
_groups:
- kvm
- libvirt
_home: https://www.linux-kvm.org/page/Main_Page
_name: KVM
_service: libvirt
_serviceEnabled: true
ansible: professormanhattan.kvm
apt:
- bridge-utils
- libvirt-clients
- libvirt-daemon-system
- qemu-kvm
- virt-manager
- virtinst
brew:
- libvirt
- qemu
dnf:
- bridge-utils
- libvirt
- qemu-kvm
- virt-install
- virt-manager
- virt-top
- virt-viewer
pacman:
- bridge-utils
- libvirt
- virt-manager
langflow:
_bin: langflow
_github: https://github.com/logspace-ai/langflow
_name: LangFlow
pipx: langflow
lapce:
_app: Lapce.app
_bin: lapce
_desc: Lightning-fast and Powerful Code Editor written in Rust
_docs: https://docs.lapce.dev/
_github: https://github.com/lapce/lapce
_home: https://lapce.dev/
_name: Lapce
cask: lapce
emerge: app-editors/lapce
flatpak: dev.lapce.lapce
nix-env: nixpkgs.lapce
scoop: lapce
winget: lapce
lazygit:
_bin: lazygit
_desc: Simple terminal UI for git commands
_github: https://github.com/jesseduffield/lazygit
brew: lazygit
choco: lazygit
eopkg: lazygit
go: github.com/jesseduffield/lazygit@latest
pacman: lazygit
port: lazygit
scoop: lazygit
xbps: lazygit
ledger-live:
_app: Ledger Live.app
_bin: ledger-live
_github: https://github.com/LedgerHQ/ledger-live
_desc: '[Ledger Live](https://www.ledger.com/ledger-live) is a new generation wallet desktop application providing a unique interface to maintain multiple cryptocurrencies for your Ledger Nano S / Blue. Manage your device, create accounts, receive and send cryptoassets and many more.'
_home: https://www.ledger.com/ledger-live
_name: Ledger Live
ansible: professormanhattan.ledgerlive
appimage: ledger-live-desktop
cask: ledger-live
choco: ledger-live
lens:
_app: Lens.app
_bin: lens
_bin:snap: kontena-lens
_desc: '[Lens IDE](https://k8slens.dev/) provides the full situational awareness for everything that runs in Kubernetes. It is an IDE designed for those who work with Kubernetes on a daily basis'
_docs: https://docs.k8slens.dev/main/
_github: https://github.com/lensapp/lens
_home: https://k8slens.dev/
_name: Lens
ansible: professormanhattan.lens
cask: lens
choco: lens
snap: kontena-lens --classic
yay: lens
lepton:
_app: Lepton.app
_bin: lepton
_bin:snap: lepton
_desc: Cross-platform snippet manager
_github: https://github.com/hackjutsu/Lepton
_home: https://hackjutsu.com/Lepton/
_name: lepton
cask: lepton
snap: lepton
lexicon:
_bin: lexicon
_desc: '[Lexicon](https://github.com/AnalogJ/lexicon) provides a way to manipulate DNS records on multiple DNS providers in a standardized/agnostic way.'
_github: https://github.com/AnalogJ/lexicon
_name: Lexicon
_post:pipx: |
#!/usr/bin/env bash
pipx inject dns-lexicon dns-lexicon[full]
ansible: professormanhattan.lexicon
pipx: dns-lexicon
libguestfs-tools:
_bin: guestfish
_github: https://github.com/libguestfs/libguestfs
apt: libguestfs-tools
dnf: libguestfs-tools
libimobiledevice:
_bin: null
_github: https://github.com/libimobiledevice/libimobiledevice
_home: https://libimobiledevice.org/
brew:darwin: libimobiledevice
libre-menu-editor:
_bin: libre-menu-editor
_name: Libre Menu Editor for GNOME
flatpak: page.codeberg.libre_menu_editor.LibreMenuEditor
_github: false
libreoffice:
_app: LibreOffice.app
_bin: libreoffice
_github: https://github.com/LibreOffice/core
_desc: '[LibreOffice](https://www.libreoffice.org/) is a free and open-source office productivity software suite, a project of The Document Foundation. It was forked in 2010 from OpenOffice.org, which was an open-sourced version of the earlier StarOffice.'
_docs: https://documentation.libreoffice.org/en/english-documentation/
_home: https://www.libreoffice.org/
_name: LibreOffice
apt: libreoffice
cask: libreoffice
choco: libreoffice-fresh
dnf: libreoffice
flatpak: org.libreoffice.LibreOffice
mas: 1630474372
pacman: libreoffice
librewolf:
_app: LibreWolf.app
_bin: librewolf
_gitlab: https://gitlab.com/librewolf-community/browser/linux
_github: https://github.com/librewolf-community/browser-linux
_scoopExtras: true
cask: librewolf
choco: librewolf
flatpak: io.gitlab.librewolf-community
scoop: librewolf
winget: librewolf
yay: librewolf
license:
_bin: license
_desc: Command-line license text generator
_github: https://github.com/nishanths/license
_name: license
go: github.com/nishanths/license@latest
yay: nishanths-license-git
lighthouse:
_bin: lighthouse
_github: https://github.com/GoogleChrome/lighthouse
_name: Lighthouse
npm: lighthouse
lightproxy:
_app: LightProxy.app
_bin: lightproxy
_github: https://github.com/alibaba/lightproxy
_name: LightProxy
cask: lightproxy
linkerd2:
_bin: linkerd
_desc: Linkerd is an ultralight, security-first service mesh for Kubernetes
_github: https://github.com/linkerd/linkerd2
_home: https://linkerd.io/
_name: linkerd2
brew: linkerd
github: github.com/linkerd/linkerd2
yay: linkerd
linkliar:
_app: LinkLiar.app
_bin: null
_desc: Menu bar application for macOS that allows you to spoof your MAC address
_docs: https://halo.github.io/LinkLiar/usage.html
_github: https://github.com/halo/LinkLiar
_home: https://halo.github.io/LinkLiar/
_name: Link Liar
cask: linkliar
liquidjs:
_bin: liquidjs
_desc: A simple, expressive and safe template engine.
_docs: https://liquidjs.com/tutorials/intro-to-liquid.html
_github: https://github.com/harttle/liquidjs
_home: https://liquidjs.com/
_name: LiquidJS
npm: liquidjs
litecli:
_bin: litecli
_desc: CLI for SQLite Databases with auto-completion and syntax highlighting
_docs: https://litecli.com/features/
_github: https://github.com/dbcli/litecli
_home: https://litecli.com/
_name: LiteCLI
brew: litecli
pipx: litecli
yay: litecli
live-captions:
_bin: live-captions
_github: https://github.com/abb128/LiveCaptions
_desc: Linux Desktop application that provides live captioning
flatpak: net.sapples.LiveCaptions
localtunnel:
_bin: lt
_desc: localtunnel exposes your localhost to the world for easy testing and sharing
_github: https://github.com/localtunnel/localtunnel
_home: https://theboroer.github.io/localtunnel-www/
_name: localtunnel
brew: localtunnel
npm: localtunnel
logcli:
_bin: logcli
_desc: Run LogQL queries against a Loki server
_github: https://github.com/grafana/loki
_home: https://grafana.com/loki
_name: logcli
brew: logcli
github: github.com/grafana/loki
yay: logcli-git
logi-options-plus:
_app: logioptionsplus.app
_bin: logi-options-plus
_env:
LOGI_OPTIONS_PLUS_APPDATA:
cask: "$HOME/Library/Application Support/LogiOptionsPlus"
choco: "TODO"
_github: false
_name: Logi Options+
cask: logi-options-plus
choco: logioptionsplus
exe: https://download01.logi.com/web/ftp/pub/techsupport/optionsplus/logioptionsplus_installer.exe
winget: Logitech.OptionsPlus
logi-tune:
_bin: logi-tune
_github: false
_name: Logi Tune
dmg: https://software.vc.logitech.com/downloads/tune/LogiTuneInstaller.dmg
exe: https://software.vc.logitech.com/downloads/tune/LogiTuneInstall.exe
lolcat:
_bin: lolcat
_github: https://github.com/busyloop/lolcat
_name: lolcat
brew: lolcat
choco: lolcat
snap: lolcat
lollypop:
_bin: lollypop
_gitlab: https://gitlab.gnome.org/World/lollypop
_github: https://github.com/hamonikr/lollypop
_desc: '[Lollypop](https://wiki.gnome.org/Apps/Lollypop) is a lightweight modern music player designed to work excellently on the GNOME desktop environment. Lollypop also features a party mode which will automatically select party-related playlists to play; a full-screen view which lets you visually access the player from your couch thanks to its HiDPI support; and native support for replay gain.'
_docs: https://gitlab.gnome.org/World/lollypop/issues
_home: https://wiki.gnome.org/Apps/Lollypop
_name: Lollypop
ansible:linux: professormanhattan.lollypop
apt: lollypop
dnf: lollypop
flatpak: org.gnome.Lollypop
pacman: lollypop
yay: lollypop-stable-git
loop:
_bin: loop
_github: https://github.com/Miserlou/Loop
_name: Loop
cargo: loop-rs
pacman: loop
snap: loop-rs --beta
lpass:
_bin: null
_desc: >-
[LastPass CLI](https://github.com/lastpass/lastpass-cli) is a user-friendly command-line client for [LastPass](https://www.lastpass.com/). LastPass is a freemium password manager that stores encrypted passwords online. The standard version of LastPass comes with a web interface, but also includes plugins for various web browsers and apps for many smartphones. It also includes support for bookmarklets. It is similar to but not open-source like [Bitwarden](https://gitlab.com/megabyte-labs/ansible-roles/bw).
_docs: LastPass command line interface tool
_github: https://github.com/lastpass/lastpass-cli
_name: LastPass CLI
ansible: professormanhattan.lpass
lsd:
_bin: lsd
_desc: '[LSD](https://github.com/Peltoche/lsd) (LSDeluxe), a clone of ls, is the next gen ls command with colorful output, file type icons, and more.'
_docs: https://github.com/lsd-rs/lsd
_github: https://github.com/Peltoche/lsd
_home: https://github.com/lsd-rs/lsd
_name: LSD (LSDeluxe)
_notes: Only the Chocolatey definition is included because LSD is only used on Windows (when `exa` is not available)
apt: lsd
brew: lsd
cargo: lsd
choco: lsd
dnf: lsd
eopkg: lsd
pacman: lsd
pkg-freebsd: lsd
pkg-termux: lsd
port: lsd
scoop: lsd
xbps: lsd
zypper: lsd
lsyncd:
_bin: lsyncd
_desc: Lsyncd (Live Syncing Daemon) synchronizes local directories with remote targets (via SSH and more)
_docs: https://lsyncd.github.io/lsyncd/
_github: https://github.com/lsyncd/lsyncd
_home: false
_name: Lsyncd
apt: lsyncd
brew: lsyncd
dnf: lsyncd
pacman: lsyncd
lua:
_bin: lua
_github: https://github.com/lua/lua
_name: Lua
apt: lua
brew: lua
choco: lua
dnf: lua
pacman: lua
lulu:
_app: LuLu.app
_bin: null
_desc: Powerful firewall application for macOS
_docs: https://objective-see.org/products/lulu.html
_github: https://github.com/objective-see/LuLu
_home: https://objective-see.org/products/lulu.html
_name: LuLu
cask: lulu
lux:
_bin: lux
_github: https://github.com/iawia002/lux
_name: Lux
brew: lux
choco: github.com/iawia002/lux
go: github.com/iawia002/lux@latest
scoop: lux
xbps: lux
lxc:
_bin: lxc
_desc: Linux Containers is an operating-system-level virtualization method for running multiple isolated Linux systems on a control host using a single Linux kernel.
_docs: https://linuxcontainers.org/lxc/documentation/
_github: https://github.com/lxc/lxc
_home: https://linuxcontainers.org/lxc/
_name: LXC
_service: lxc
apt: lxc
brew: lxc
dnf: lxc
pacman: lxc
lxd:
_bin: null
_desc: '[LXD](https://linuxcontainers.org) is a next generation system container manager. It offers a user experience similar to virtual machines but using Linux containers instead'
_docs: https://linuxcontainers.org/lxd/docs/master/
_github: https://github.com/lxc/lxd
_groups:
- lxd
_home: https://linuxcontainers.org/lxd/
_name: LXDC
ansible:linux: professormanhattan.lxdc
snap: lxd
lxd-ui:
_bin: lxd-ui
_github: https://github.com/canonical/lxd-ui
_name: LXD UI
_post: |
#!/usr/bin/env bash
lxd init && lxc config set core.https_address "[::]:8443"
snap: lxd
lxdc:
_github: false
_deps:
- lxc
- lxd
m-cli:
_bin: m
_desc: Swiss Army Knife for macOS. A wrapper for many types of macOS-specific commands.
_docs: https://github.com/rgcr/m-cli
_github: https://github.com/rgcr/m-cli
_home: https://github.com/rgcr/m-cli
_name: m-cli
brew:darwin: m-cli
maas:
_bin: maas
_desc: '[MAAS](https://maas.io/) allows very fast server provisioning for your data centre. It allows self-service, remote installation of Windows, CentOS, ESXi and Ubuntu on real servers. It turns your data centre into a bare metal cloud.'
_docs: https://maas.io/docs
_github: https://github.com/maas/maas
_home: https://maas.io/
_name: MAAS
_ports:
- port: 5240
proto: tcp
- port: 5240
proto: udp
- port: 5248
proto: tcp
- port: 5248
proto: udp
- port: 5241-5247
proto: tcp
- port: 5241-5247
proto: udp
- port: 5250-5270
proto: tcp
- port: 5250-5270
proto: udp
ansible:ubuntu: professormanhattan.maas
snap:ubuntu: maas
mackup:
_bin: mackup
_desc: '[mackup](https://github.com/lra/mackup) lets you keep your application settings in sync.'
_docs: https://github.com/lra/mackup
_github: https://github.com/lra/mackup
_home: https://github.com/lra/mackup
_name: mackup
ansible: professormanhattan.mackup
brew: mackup
pipx: mackup
macprefs:
_bin: macprefs
_github: https://github.com/clintmod/macprefs
_name: MacPrefs
brew: clintmod/formulas/macprefs
macvim:
_app: MacVim.app
_github: https://github.com/macvim-dev/macvim
_todo: Integrate this into macOS setup
cask: macvim
mage-ai:
_bin: mage
_desc: The modern replacement for Airflow. Build, run, and manage data pipelines for integrating and transforming data.
_docs: https://docs.mage.ai/introduction/overview
_github: https://github.com/mage-ai/mage-ai
_home: https://www.mage.ai
_name: Mage AI
pipx: mage-ai
magic-wormhole:
_bin: wormhole
_github: https://github.com/magic-wormhole/magic-wormhole
_name: Magic Wormhole
brew: magic-wormhole
mailcatcher:
_bin: mailcatcher
_github: https://github.com/sj26/mailcatcher
_name: Mail Catcher
_service: mailcatcher
brew: mailcatcher
gem: mailcatcher
mailspring:
_app: Mailspring.app
_bin: mailspring
_desc: '[Mailspring](https://getmailspring.com/) comes packed with powerful features like Unified Inbox, Snooze, Send Later, Mail Rules, Templates and more. Mailspring Pro, which you can unlock with a monthly subscription, adds even more features for people who send a ton of email: link tracking, read receipts, mailbox analytics, contact and company profiles. All of these features run in the client - Mailspring does not send your email credentials to the cloud.'
_docs: https://community.getmailspring.com/docs/
_env:
MAILSPRING_APPDATA:
cask: "$HOME/Library/Application Support/Mailspring"
choco: "TODO"
flatpak: "TODO"
snap: "TODO"
_github: https://github.com/Foundry376/Mailspring
_home: https://getmailspring.com/
_name: Mailspring
cask: mailspring
choco: mailspring
flatpak: com.getmailspring.Mailspring
snap: mailspring
yay: mailspring
mailsy:
_bin: mailsy
_github: https://github.com/BalliAsghar/Mailsy
_name: Mailsy
brew: mailsy
npm: mailsy
majestic:
_bin: majestic
_github: https://github.com/Raathigesh/majestic
_name: Majestic
npm: majestic
makeself:
_bin: makeself
_github: https://github.com/megastep/makeself
_name: MakeSelf
brew: makeself
malwarebytes:
_app: Malwarebytes.app
_bin: malwarebytes
_desc: Cybersecurity. For every one.
_home: https://www.malwarebytes.com/
_github: false
_name: Malwarebytes
cask: malwarebytes
choco: malwarebytes
mambaforge:
_bin: conda
_github: https://github.com/mamba-org/mamba
_name: Mamba Forge
_post: |
#!/usr/bin/env bash
echo y | conda update -n base -c conda-forge conda
cask: mambaforge
choco: mambaforge
script:linux: bash <(curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh")
manta:
_app: Manta.app
_bin: null
_desc: Flexible invoicing desktop app with beautiful & customizable templates
_github: https://github.com/hql287/Manta
_name: Manta
appimage: https://github.com/hql287/Manta/releases/download/v1.1.4/Manta-1.1.4-x86_64.AppImage
cask: manta
exe: https://github.com/hql287/Manta/releases/download/v1.1.4/Manta.Setup.1.1.4.exe
github: github.com/hql287/Manta
mariadb:
_bin: mariadb
_github: false
_name: MariaDB
_service: mariadb
apk: mariadb-server
apt: mariadb-server
brew: mariadb
choco: mariadb
dnf: mariadb-server
pacman: mariadb-server
mark-text:
_app: MarkText.app
_bin: marktext
_desc: A simple and elegant markdown editor, available for Linux, macOS and Windows
_env:
MARK_TEXT_APPDATA:
cask: "$HOME/Library/Application Support/marktext"
choco: "TODO"
flatpak: "TODO"
winget: "TODO"
_github: https://github.com/marktext/marktext
_name: MarkText
cask: mark-text
choco: marktext
flatpak: com.github.marktext.marktext
winget: marktext
yay: marktext
markdownlint-cli:
_bin: markdownlint
_desc: MarkdownLint command line interface
_docs: https://github.com/igorshubovych/markdownlint-cli
_github: https://github.com/igorshubovych/markdownlint-cli
_home: https://github.com/igorshubovych/markdownlint-cli
_name: Markdownlint CLI
brew: markdownlint-cli
pipx: markdownlint-cli
markmap:
_bin: markmap
_desc: Visualize your Markdown as mindmaps with Markmap.
_docs: https://markmap.js.org/docs/markmap
_github: https://github.com/markmap/markmap
_home: https://markmap.js.org/
_name: Markmap
npm: markmap-cli
marp:
_bin: marp
_desc: A CLI interface for Marp and Marpit based converters
_docs: https://github.com/marp-team/marp-cli
_github: https://github.com/marp-team/marp-cli
_home: https://marp.app/
_name: Marp
brew: marp-cli
npm: '@marp-team/marp-cli'
scoop: marp
mas:
_bin: mas
_desc: '[MAS CLI](https://github.com/mas-cli/mas) is a simple command line interface for the Mac App Store. Designed for scripting and automation.'
_name: MAS CLI
_github: https://github.com/mas-cli/mas
ansible:darwin: professormanhattan.mas
brew:darwin: mas
port: mas
mask:
_bin: mask
_github: https://github.com/jacobdeichert/mask
_name: Mask
brew: mask
cargo: mask
masscan:
_bin: masscan
_github: https://github.com/robertdavidgraham/masscan
_name: Masscan
brew: masscan
choco: masscan
masscode:
_app: massCode.app
_bin: null
_desc: A free and open source code snippets manager for developers
_github: https://github.com/antonreshetov/massCode
_name: MassCode
cask: masscode
github: github.com/antonreshetov/massCode
mc:
_bin: mc
_desc: MinIO Client is a replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage
_github: https://github.com/minio/mc
_home: https://min.io/
_name: mc
_post:binary:linux: |
#!/usr/bin/env bash
# TODO
_post:binary:windows: |
#!/usr/bin/env bash
# TODO
binary:linux: https://dl.min.io/client/mc/release/linux-amd64/mc
binary:windows: https://dl.min.io/client/mc/release/windows-amd64/mc.exe
brew: minio/stable/mc
go: github.com/minio/mc@latest
mcfly:
_bin: mcfly
_desc: "[McFly](https://github.com/cantino/mcfly) replaces your default CTRL-r shell history search with an intelligent search engine that takes into account your working directory and the context of recently executed commands. McFly's suggestions are prioritized in real time with a small neural network."
_github: https://github.com/cantino/mcfly
_name: McFly
ansible:darwin: professormanhattan.mcfly
ansible:linux: professormanhattan.mcfly
brew: mcfly
port: mcfly
script:darwin: curl -LSfs https://raw.githubusercontent.com/cantino/mcfly/master/ci/install.sh | sh -s -- --git cantino/mcfly
script:linux: curl -LSfs https://raw.githubusercontent.com/cantino/mcfly/master/ci/install.sh | sh -s -- --git cantino/mcfly
medis:
_app: Medis.app
_bin: medis
_github: https://github.com/luin/medis
_name: Medis
cask: medis
medusa:
_bin: medusa
_github: https://github.com/medusajs/medusa
_name: Medusa
npm: '@medusajs/medusa-cli'
meetingbar:
_app: MeetingBar.app
_bin: null
_desc: Meeting menu bar application that shows calendar event details on macOS
_docs: https://github.com/leits/MeetingBar
_github: https://github.com/leits/MeetingBar
_home: https://apps.apple.com/app/id1532419400
_name: Meeting Bar
cask: meetingbar
mas: 1532419400
meld:
_app: Meld.app
_bin: meld
_github: https://github.com/GNOME/meld
cask: meld
choco: meld
flatpak: org.gnome.meld
meta:
_bin: meta
_github: https://github.com/mateodelnorte/meta
_name: Meta
npm: meta
meta-package-manager:
_bin: mpm
_github: https://github.com/kdeldycke/meta-package-manager
_name: Meta Package Manager
brew: meta-package-manager
pipx: meta-package-manager
metasploit:
_github: https://github.com/rapid7/metasploit-framework
_name: Metasploit Framework
_when: '! test -f /opt/metasploit-framework/bin/msfconsole'
script: curl -sSL --compressed https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > /tmp/msfinstall && chmod 755 /tmp/msfinstall && sudo /tmp/msfinstall
micromamba:
_bin: micromamba
_github: https://github.com/mamba-org/mamba
_name: MicroMamba
_post: |
#!/usr/bin/env bash
micromamba self-update
brew: micromamba
microsoft-edge:
_app: Microsoft Edge.app
_bin: microsoft-edge
_desc: '[Microsoft Edge](https://www.microsoft.com/en-us/edge) is a cross-platform web browser developed by Microsoft. It was first released for Windows 10 and Xbox One in 2015, then for Android and iOS in 2017, for macOS in 2019, and as a preview for Linux in October 2020.'
_docs: https://docs.microsoft.com/en-us/microsoft-edge/
_env:
MICROSOFT_EDGE_APPDATA:
cask: "$HOME/Library/Application Support/Microsoft Edge/Default"
choco: "TODO"
flatpak: "TODO"
_github: false
_home: https://www.microsoft.com/en-us/edge
_name: Microsoft Edge
_post: |
#!/usr/bin/env bash
# @brief See `google-chrome` `_post` script for more details
function chromeSetUp() {
### Ensure Chrome policies directory is present
# logg info 'Processing policy directories for Chromium based browsers'
### TODO - Find POLICY_DIR location for Microsoft Edge
# for POLICY_DIR in "/opt/google/chrome/policies" "/etc/chromium/policies" "/etc/brave/policies"; do
# if [ -d "$(dirname "$POLICY_DIR")" ]; then
# ### Managed policies
# if [ ! -f "$POLICY_DIR/managed/policies.json" ]; then
# logg info "Ensuring directory $POLICY_DIR/managed exists"
# sudo mkdir -p "$POLICY_DIR/managed"
# logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json to $POLICY_DIR/managed/policies.json"
# sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json" "$POLICY_DIR/managed/policies.json"
# fi
# ### Recommended policies
# if [ ! -f "$POLICY_DIR/recommended/policies.json" ]; then
# logg info "Ensuring directory $POLICY_DIR/recommended exists" && sudo mkdir -p "$POLICY_DIR/recommended"
# logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json to $POLICY_DIR/recommended/policies.json"
# sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json" "$POLICY_DIR/recommended/policies.json"
# fi
# else
# logg info "Skipping extension injection into $POLICY_DIR - create these folders prior to running to create managed configs"
# fi
# done
### Add Chrome extension JSON
logg info 'Populating Chrome extension JSON'
for EXTENSION_DIR in "$HOME/Library/Application Support/Microsoft/Edge/External Extensions"; do
### Ensure program-type is installed
if [ -d "$(dirname "$EXTENSION_DIR")" ]; then
### Ensure extension directory exists
if [[ "$EXTENSION_DIR" == '/opt/'* ]] || [[ "$EXTENSION_DIR" == '/etc/'* ]]; then
if [ ! -d "$EXTENSION_DIR" ]; then
logg info "Creating directory $EXTENSION_DIR" && sudo mkdir -p "$EXTENSION_DIR"
fi
else
if [ ! -d "$EXTENSION_DIR" ]; then
logg info "Creating directory $EXTENSION_DIR" && mkdir -p "$EXTENSION_DIR"
fi
fi
### Add extension JSON
logg info "Adding Chrome extensions to $EXTENSION_DIR"
for EXTENSION in {{ list (.chromeExtensions | toString | replace "[" "" | replace "]" "") | uniq | join " " }}; do
logg info "Adding Chrome extension manifest ($EXTENSION)"
if ! echo "$EXTENSION" | grep 'https://chrome.google.com/webstore/detail/' > /dev/null; then
EXTENSION="https://chrome.google.com/webstore/detail/$EXTENSION"
fi
EXTENSION_ID="$(echo "$EXTENSION" | sed 's/^.*\/\([^\/]*\)$/\1/')"
if [[ "$EXTENSION_DIR" == '/opt/'* ]] || [[ "$EXTENSION_DIR" == '/etc/'* ]]; then
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/extension.json" "$EXTENSION_DIR/${EXTENSION_ID}.json"
else
cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/extension.json" "$EXTENSION_DIR/${EXTENSION_ID}.json"
fi
done
else
logg info "$EXTENSION_DIR does not exist"
fi
done
}
chromeSetUp
cask: microsoft-edge
choco: microsoft-edge
flatpak: com.microsoft.Edge
yay: microsoft-edge-stable-bin
microsoft-git:
_bin: scalar
_github: https://github.com/microsoft/VFSForGit
_name: Microsoft Git (with Git VFS)
cask: microsoft/git/microsoft-git
script:linux: |
#!/usr/bin/env bash
mkdir -p "$HOME/.local/src"
rm -rf "$HOME/.local/src/microsoft-git"
git clone https://github.com/microsoft/git "$HOME/.local/src/microsoft-git"
cd "$HOME/.local/src/microsoft-git"
make -j12 prefix=/usr/local
sudo make -j12 prefix=/usr/local install
winget: microsoft.git
microsoft-office:
_app: Microsoft Word.app
_bin: null
_github: false
_desc: '[Microsoft Office](https://www.microsoft.com/en-us/microsoft-365/microsoft-office), or simply Office, is a family of client software, server software, and services developed by Microsoft.'
_docs: https://docs.microsoft.com/en-us/microsoft-365/?view=o365-worldwide
_home: https://www.office.com/
_name: Office
cask: microsoft-office
choco: office365business
microsoft-remote-desktop:
_app: Microsoft Remote Desktop.app
_bin: microsoft-remote-desktop
_github: false
_name: Microsoft Remote Desktop
cask: microsoft-remote-desktop
mas: 1295203466
microsoft-teams:
_app: Microsoft Teams.app
_bin: teams
_github: false
_desc: '[Microsoft Teams](https://www.microsoft.com/en-us/microsoft-teams/group-chat-software) is a proprietary business communication platform developed by Microsoft, as part of the Microsoft 365 family of products. Teams primarily competes with the similar service Slack, offering workspace chat and videoconferencing, file storage, and application integration.'
_name: Microsoft Teams
ansible: professormanhattan.teams
cask: microsoft-teams
choco: microsoft-teams
flatpak: com.microsoft.Teams
snap: teams-for-linux
yay: teams-for-linux
microsoft-todo:
_app: Ao.app
_bin:snap: microsoft-todo-unofficial
_desc: '[Microsoft To Do](https://todo.microsoft.com/tasks/) is a productivity application developed by Microsoft. It lets you create to do lists, reminders, and notes for any purpose. Sync lists across devices and Microsoft 365 accounts to access daily planner and task manager features anywhere.'
_docs: https://support.microsoft.com/en-us/todo
_github: false
_home: https://todo.microsoft.com/tasks/
_name: Microsoft To-Do
ansible: professormanhattan.microsofttodo
cask: ao
mas: 1274495053
snap: microsoft-todo-unofficial
miller:
_bin: mlr
_github: https://github.com/johnkerl/miller
_name: Miller
apt: miller
brew: miller
choco: miller
dnf: miller
port: miller
minikube:
_bin: minikube
_deps:
- docker
_deps:darwin:
- hyperkit
_desc: minikube quickly sets up a local Kubernetes cluster on macOS, Linux, and Windows
_docs: https://minikube.sigs.k8s.io/docs/
_github: https://github.com/kubernetes/minikube
_name: minikube
# TODO - Prefer HyperV on Windows https://minikube.sigs.k8s.io/docs/drivers/hyperv/
_post: |
#!/usr/bin/env bash
if command -v hyperkit > /dev/null; then minikube config set driver hyperkit; elif command -v docker > /dev/null; then minikube config set driver docker; elif command -v VBoxManage > /dev/null; then minikube config set driver virtualbox; fi
_todo: A full installation of Xcode.app 9.0 is required. Also, hyperkit x86_64 architecture is required for this software. So automate install of Xcode.app 9.0 and add check for x86_64 prior to installing this
brew: minikube
choco: minikube
mise:
_bin: mise
_github: https://github.com/jdx/mise
_name: mise
_post: |
#!/usr/bin/env bash
mise install
if [ -d "${XDG_DATA_HOME:-$HOME/.local/share}/mise/installs/java/openjdk-20/Contents" ]; then
sudo mkdir -p /Library/Java/JavaVirtualMachines/openjdk-20.jdk
sudo ln -s "${XDG_DATA_HOME:-$HOME/.local/share}/mise/installs/java/openjdk-20/Contents" /Library/Java/JavaVirtualMachines/openjdk-20.jdk/Contents
fi
apk: mise
brew: mise
cargo: mise-cli
nix-env: mise
npm: '@jdxcode/mise'
port: port
mitmproxy:
_bin: mitmproxy
_desc: '[mitmproxy](https://mitmproxy.org/) is an interactive, SSL/TLS-capable intercepting proxy with a console interface for HTTP/1, HTTP/2, and WebSockets. It also includes mitmweb which is a web-based interface for mitmproxy.'
_docs: https://docs.mitmproxy.org/stable
_github: https://github.com/mitmproxy/mitmproxy
_home: https://mitmproxy.org/
_name: mitmproxy
ansible: professormanhattan.mitmproxy
apt: mitmproxy
cask: mitmproxy
choco: mitmproxy
pacman: mitmproxy
mjml:
_app: MJML.app
_bin:npm: mjml
_desc: The desktop app for MJML
_docs: https://documentation.mjml.io/
_github: https://github.com/mjmlio/mjml-app
_home: https://mjmlio.github.io/mjml-app/
_name: MJML App
cask: mjml
github: github.com/mjmlio/mjml-app
npm: mjml
mkcert:
_bin: mkcert
_desc: A simple zero-config tool to make locally trusted development certificates with any names
_github: https://github.com/FiloSottile/mkcert
_name: mkcert
brew: mkcert
choco: mkcert
github: github.com/FiloSottile/mkcert
pacman: mkcert
scoop: mkcert
mockoon:
_app: Mockoon.app
_bin:snap: mockoon
_desc: Mockoon is the easiest and quickest way to run mock APIs locally. No remote deployment, no account required, open source
_github: https://github.com/mockoon/mockoon
_name: Mockoon
cask: mockoon
choco: mockoon
github: github.com/mockoon/mockoon
npm: '@mockoon/cli'
snap: mockoon
winget: mockoon
yay: mockoon-bin
modern-flyouts:
_bin: modern-flyouts
_github: https://github.com/ModernFlyouts-Community/ModernFlyouts
_name: Modern Flyouts
choco: modernflyouts
winapp: modernflyouts-preview/9MT60QV066RP
winget: ModernFlyouts.ModernFlyouts
mods:
_bin: mods
_desc: AI for the command-line that leverages OpenAI or LocalAI (if configured to do so)
_docs: https://github.com/charmbracelet/mods
_github: https://github.com/charmbracelet/mods
_home: https://charm.sh/
_name: Mods
brew: charmbracelet/tap/mods
go: github.com/charmbracelet/mods@latest
yay: mods
mole:
_bin: mole
_desc: CLI application to create ssh tunnels focused on resiliency and user experience
_docs: https://davrodpin.github.io/mole/
_github: https://github.com/davrodpin/mole
_home: https://davrodpin.github.io/mole/
_name: mole
brew: davrodpin/homebrew-mole/mole
github: github.com/davrodpin/mole
yay: mole-bin
molecule:
_bin: molecule
_desc: Molecule aids in the development and testing of Ansible roles
_docs: https://molecule.readthedocs.io/en/latest/getting-started.html
_github: https://github.com/ansible-community/molecule
_home: https://molecule.readthedocs.io/en/latest/
_name: Ansible Molecule
_post:pipx: |
#!/usr/bin/env bash
pipx inject molecule ansible PyObjC PyObjC-core docker lxml netaddr pexpect python-vagrant pywinrm requests-credssp watchdog apache-libcloud gcloud junit-xml molecule-docker molecule-gce molecule-vagrant pycrypto
# brew: molecule
pipx: molecule
monero:
_app: monero-wallet-gui.app
_bin: monero
_bin:flatpak: org.getmonero.Monero
_desc: '[Monero](https://www.getmonero.org/) is a leading cryptocurrency focused on private and censorship-resistant transactions. This role installs the Monero wallet application which is required for interacting with the Monero network.'
_docs: https://www.getmonero.org/resources/user-guides/
_github: https://github.com/monero-project/monero
_home: https://www.getmonero.org/
_name: Monero
_restricted: true
_service: monero
ansible: professormanhattan.monero
cask: monero-wallet
choco: monero
flatpak: org.getmonero.Monero
monero-cli:
_bin: monerod
_desc: CLI for Monero, a leading cryptocurrency focused on private and censorship-resistant transactions.
_docs: https://www.getmonero.org/resources/user-guides/
_github: https://github.com/monero-project/monero
_home: https://www.getmonero.org/
_restricted: true
brew: monero
scoop: monero
mongodb:
_bin: mongod
_github: https://github.com/mongodb/mongo
_name: MongoDB
_service: mongodb
_service:brew: mongodb-community
brew: mongodb/brew/mongodb-community
choco: mongodb
mongodb-atlas:
_bin: atlas
_desc: Install the Atlas CLI to quickly provision and manage Atlas database deployments from the terminal. (Official MongoDB hosted service provider CLI)
_docs: https://www.mongodb.com/docs/atlas/cli/stable/command/atlas/
_github: https://github.com/mongodb/mongodb-atlas-cli
_home: https://www.mongodb.com/docs/atlas/cli/stable/
_name: MongoDB Atlas
brew: mongodb-atlas
choco: mongodb-atlas
mongodb-compass:
_app: MongoDB Compass.app
_bin: mongodb-compass
_github: https://github.com/mongodb-js/compass
_name: MongoDB Compass
apt: https://downloads.mongodb.com/compass/mongodb-compass_1.38.0_amd64.deb
cask: mongodb-compass
choco: mongodb-compass
dnf: https://downloads.mongodb.com/compass/mongodb-compass-1.38.0.x86_64.rpm
monitorcontrol:
_app: MonitorControl.app
_bin: null
_desc: Menu bar application for macOS that allows you to control the screen brightness and volume
_docs: https://github.com/MonitorControl/MonitorControl
_github: https://github.com/MonitorControl/MonitorControl
_home: https://github.com/MonitorControl/MonitorControl
_name: Monitor Control
cask: monitorcontrol
mono:
_bin: mono
_desc: Mono open source ECMA CLI, C# and .NET implementation.
_docs: https://www.mono-project.com/docs/
_github: https://github.com/mono/mono
_home: https://www.mono-project.com/
_name: Mono
apt: mono-complete
brew: mono
choco: mono
dnf: mono-complete
port: mono
scoop: main/mono
winget: Mono.Mono
mosh:
_bin: mosh
_desc: Remote terminal application that allows roaming, supports intermittent connectivity, and provides intelligent local echo and line editing of user keystrokes.
_docs: https://mosh.org/#usage
_github: https://github.com/mobile-shell/mosh
_home: https://mosh.org/
_name: Mosh
apk: mosh
apt: mosh
brew: mosh
dnf: mosh
emerge: net-misc/mosh
pacman: mosh
pkg-freebsd: net/mosh
pkg_add: mosh
port: mosh
zypper: mosh
motrix:
_app: Motrix.app
_bin: motrix
_desc: '[Motrix](https://motrix.app/) is a full-featured download manager that supports downloading HTTP, FTP, BitTorrent, Magnet, etc.'
_github: https://github.com/agalwood/Motrix
_home: https://motrix.app/
_name: Motrix
ansible: professormanhattan.motrix
cask: motrix
choco: motrix
flatpak: net.agalwood.Motrix
github: github.com/agalwood/Motrix
scoop: motrix
yay: motrix-bin
mpg123:
_bin: mpg123
_github: false
_desc: mpg123 is a free and open-source audio player. It supports MPEG audio formats, including MP3
_home: https://mpg123.org/
_name: mpg123
apt: mpg123
brew: mpg123
choco: mpg123
dnf: mpg123
pacman: mpg123
port: mpg123
scoop: mpg123
mpv:
_app: mpv.app
_bin: mpv
_github: https://github.com/mpv-player/mpv
_name: MPV
_todo: This software does not run on macOS versions other than Mojave, Catalina, Big Sur and Ventura --- probably adding support - this issue will likely fix itself
brew: mpv
cask: mpv
choco: mpv
flatpak: io.mpv.Mpv
mqttx:
_app: MQTTX.app
_bin: mqttx
_desc: MQTT X - Elegant Cross-platform MQTT 5.0 Desktop Client
_github: https://github.com/emqx/MQTTX
_name: MQTT X
cask: mqttx
flatpak: com.emqx.MQTTX
github: github.com/emqx/MQTTX
snap: mqttx
yay: mqttx-bin
mudlet:
_app: mudlet.app
_bin: mudlet
_desc: A full-featured cross-OS MUD client
_docs: https://wiki.mudlet.org/?pk_vid=b53bfe5eba0aac5a1685341616dc4f27
_github: https://github.com/Mudlet/Mudlet
_home: https://www.mudlet.org/
_name: Mudlet
cask: mudlet
choco: mudlet
snap: mudlet-linux
muffet:
_bin: muffet
_desc: Fast website link checker in Go
_github: https://github.com/raviqqe/muffet
_name: muffet
brew: muffet
github: github.com/raviqqe/muffet
go: github.com/raviqqe/muffet/v2@latest
yay: muffet-bin
mullvad-vpn:
_app: Mullvad VPN.app
_bin: null
_desc: The Mullvad VPN client app for desktop and mobile
_github: https://github.com/mullvad/mullvadvpn-app
_name: Mullvad VPN
apt: https://github.com/mullvad/mullvadvpn-app/releases/download/2022.5/MullvadVPN-2022.5_amd64.deb
cask: mullvadvpn
dnf: https://github.com/mullvad/mullvadvpn-app/releases/download/2022.5/MullvadVPN-2022.5_x86_64.rpm
exe: https://github.com/mullvad/mullvadvpn-app/releases/download/2022.5/MullvadVPN-2022.5.exe
github: github.com/mullvad/mullvadvpn-app
yay: mullvad-vpn
multi-gitter:
_bin: multi-gitter
_github: https://github.com/lindell/multi-gitter
_name: Multi-Gitter
brew: lindell/multi-gitter/multi-gitter
go: github.com/lindell/multi-gitter@latest
multipass:
_app: Multipass.app
_bin: multipass
_desc: '[Multipass](https://multipass.run/) makes it so that you can get an instant Ubuntu VM with a single command. Multipass can launch and run virtual machines and configure them with cloud-init like a public cloud. It is a product of [Canonical](https://canonical.com/), the same company that publishes Ubuntu.'
_docs: https://multipass.run/docs
_github: https://github.com/canonical/multipass
_home: https://multipass.run/
_name: Multipass
_post:cask: |
#!/usr/bin/env bash
multipass set local.driver=virtualbox
_post:choco: |
#!/usr/bin/env bash
multipass set local.driver=virtualbox
ansible: professormanhattan.multipass
cask: multipass
choco: multipass
snap: multipass
mutagen:
_bin: mutagen
_github: https://github.com/mutagen-io/mutagen
_name: Mutagen
_post: |
#!/usr/bin/env bash
mutagen daemon register
brew: mutagen-io/mutagen/mutagen
mycli:
_bin: mycli
_desc: A terminal client for MySQL with auto-completion and syntax highlighting.
_docs: https://www.mycli.net/docs
_github: https://github.com/dbcli/mycli
_home: https://www.mycli.net/
_name: MyCLI
apt: mycli
brew: mycli
pipx: mycli
mymonero:
_app: MyMonero.app
_bin: null
_desc: Easy-to-use Monero client with managed keys
_docs: https://github.com/mymonero/mymonero-app-js
_github: https://github.com/mymonero/mymonero-app-js
_home: https://mymonero.com/
cask: mymonero
choco: mymonero
nativefier:
_bin: nativefier
_deps:
- imagemagick
_desc: Make any web page a desktop application
_github: https://github.com/nativefier/nativefier
_name: nativefier
npm: nativefier
nativescript:
_bin: ns
_github: https://github.com/NativeScript/NativeScript
_name: NativeScript
npm: nativescript
nautilus-brasero:
_github: false
apt: nautilus-extension-brasero
dnf: brasero-nautilus
pacman: brasero-nautilus
nautilus-gsconnect:
_github: false
apt: nautilus-gsconnect
dnf: nautilus-gsconnect
pacman: nautilus-gsconnect
nautilus-gtkhash:
_github: false
apt: nautilus-gtkhash
dnf: gtkhash-nautilus
pacman: nautilus-gtkhash
nautilus-image-converter:
_github: false
apt: nautilus-image-converter
dnf:fedora: nautilus-image-converter
pacman: nautilus-image-converter
nautilus-python:
_github: false
apt: nautilus-python
dnf:fedora: nautilus-python
pacman: nautilus-python
nautilus-seahorse:
_github: false
apt: nautilus-seahorse
dnf: seahorse-nautilus
pacman: nautilus-seahorse
nautilus-search-tool:
_github: false
apt: nautilus-search-tool
dnf:fedora: nautilus-search-tool
pacman: nautilus-search-tool
nautilus-share:
_github: false
apt: nautilus-share
pacman: nautilus-share
nautilus-wipe:
_github: false
apt: nautilus-wipe
pacman: nautilus-wipe
navi:
_bin: navi
_desc: An interactive cheatsheet tool for the command-line
_docs: https://github.com/denisidoro/navi/blob/master/docs/installation.md
_github: https://github.com/denisidoro/navi
_home: https://github.com/denisidoro/navi
_name: Navi
_repology: navi
brew: navi
cargo: navi --locked
emerge: app-misc/navi
nix-env: nixpkgs.navi
pacman: navi
nb:
_bin: nb
_deps:
- bat
- netcat
- pandoc
- ripgrep
- tig
- w3m
_desc: '[nb](https://xwmx.github.io/nb) is a command line and local web notetaking, bookmarking, archiving, and knowledge base application with plain text data storage, encryption, filtering, pinning, #tagging, search, Git-backed versioning and syncing, Pandoc-backed conversion and many more features.'
_github: https://github.com/xwmx/nb
_home: https://xwmx.github.io/nb
_name: nb
# Permission denied: /usr/share/zsh/site-functions after running sudo nb completions install and nb completions install on macOS arm64
# _post: nb completions install
ansible: professormanhattan.nb
basher: xwmx/nb
bpkg: xwmx/nb
brew: nb
npm: nb.sh
ncc:
_bin: ncc
_desc: Compile a Node.js project into a single file. Supports TypeScript, binary addons, dynamic requires.
_github: https://github.com/vercel/ncc
brew: ncc
npm: '@vercel/ncc'
ndb:
_bin: ndb
_github: https://github.com/GoogleChromeLabs/ndb
_name: ndb
npm: ndb
nebula:
_bin: nebula
_desc: A scalable overlay networking tool with a focus on performance, simplicity and security
_docs: https://nebula.defined.net/docs/
_github: https://github.com/slackhq/nebula
_home: https://github.com/slackhq/nebula
_name: nebula
_service: nebula
_service:brew:
- name: nebula
sudo: true
_serviceEnabled: true
brew: nebula
dnf: nebula
pacman: nebula
nectar:
_bin: nectar
_desc: JavaScript native compiler. No bytecode no VM, just pure native binaries.
_docs: https://nectar.js.org/docs/
_github: https://github.com/NerdLang/nerd
_home: https://nectar.js.org/
_name: nerctarjs
npm: nectarjs
neofetch:
_bin: neofetch
_github: https://github.com/dylanaraps/neofetch
_name: NeoFetch
apk:
- ncurses
- neofetch
apt: neofetch
brew: neofetch
dnf: neofetch
eopkg: neofetch
nix-env: neofetch
pacman: neofetch
pkg-freebsd: neofetch
pkg-termux: neofetch
scoop: neofetch
xbps: neofetch
zypper: neofetch
neovide:
_app: Neovide.app
_bin: neovide
_desc: No Nonsense Neovim Client in Rust
_docs: https://neovide.dev/installation.html
_github: https://github.com/neovide/neovide
_home: https://neovide.dev/
_name: Neovide
cask: neovide
pacman: neovide
scoop: neovide
snap: neovide
neovim:
_bin: nvim
_deps:
- clangd
- terraform-ls
- neovim-node-host
_desc: '[neovim](https://neovim.io/) is Vim-fork focused on extensibility and usability'
_docs: https://neovim.io/doc/general/
_github: https://github.com/neovim/neovim
_home: https://neovim.io/
_name: neovim
apk: neovim
apt:
- neovim
- python3-neovim
brew: neovim
choco: neovim
dnf:
- neovim
- python3-neovim
# Need to figure out how to include neovim plugin suite
# flatpak: io.neovim.nvim
nix: neovim
pacman:
- neovim
- python-pynvim
pkg:
- neovim
- py27-pynvim
- py36-pynvim
port: neovim
winget: Neovim.Neovim
zypper:
- neovim
- python-neovim
- python3-neovim
neovim-node-host:
_bin: neovim-node-host
_github: https://github.com/neovim/node-client
_name: Neovim Node Host
npm: neovim
nest:
_bin: nest
_desc: CLI tool for Nest applications
_docs: https://docs.nestjs.com/cli/overview
_github: https://github.com/nestjs/nest-cli
_name: nest
npm: '@nestjs/cli'
netcat:
_bin: netcat
_github: false
_desc: netcat (often abbreviated to nc) is a computer networking utility for reading from and writing to network connections using TCP or UDP.
_home: https://nc110.sourceforge.io/
_name: netcat
apt: netcat
brew: netcat
choco: netcat
dnf: netcat
pacman: netcat
scoop: netcat
netdata:
_bin: netdata
_deps:
- debsecan
- speedtest-cli
_desc: '[Netdata](https://www.netdata.cloud/) is an open source tool designed to collect real-time metrics, such as CPU usage, disk activity, bandwidth usage, website visits, etc., and then display them in live, easy-to-interpret charts.'
_docs: https://learn.netdata.cloud/docs/
_github: https://github.com/netdata/netdata
_groups:
- netdata
_home: https://www.netdata.cloud/
_name: Netdata
_post: "#!/usr/bin/env bash\n# @file Netdata\n# @brief Connects Netdata with Netdata's free cloud dashboard and applies some system optimizations, if necessary\n# @description\n# This script connects Netdata with Netdata Cloud if Netdata is installed, the `NETDATA_TOKEN` is provided, and the\n# `NETDATA_ROOM` is defined. This allows you to graphically browse through system metrics on all your connected devices\n# from a single free web application.\n#\n# This script installs additional alerts and enables notifications if Netdata is installed. Email notifications are configured\n# using the provided primary email address. If the OS is Debian based, Netdata shows the number of CVEs in currently installed packages.\n\nensureNetdataOwnership() {\n ### Ensure /usr/local/var/lib/netdata/cloud.d is owned by user\n if [ -d /usr/local/var/lib/netdata ]; then\n logg info 'Ensuring permissions are correct on /usr/local/var/lib/netdata' && sudo chown -Rf netdata:netdata /usr/local/var/lib/netdata 2> /dev/null || sudo chown -Rf netdata:$(id -g -n) /usr/local/var/lib/netdata\n elif [ -d /var/lib/netdata ]; then\n logg info 'Ensuring permissions are correct on /var/lib/netdata' && sudo chown -Rf netdata:netdata /var/lib/netdata 2> /dev/null || sudo chown -Rf netdata:$(id -g -n) /var/lib/netdata\n elif [ -d \"${HOMEBREW_PREFIX:-/opt/homebrew}/var/lib/netdata\" ]; then\n logg info \"Ensuring permissions are correct on ${HOMEBREW_PREFIX:-/opt/homebrew}/var/lib/netdata\" && sudo chown -Rf netdata:netdata \"${HOMEBREW_PREFIX:-/opt/homebrew}/var/lib/netdata\" 2> /dev/null || sudo chown -Rf netdata:$(id -g -n) \"${HOMEBREW_PREFIX:-/opt/homebrew}/var/lib/netdata\"\n else\n logg warn 'No /var/lib/netdata folder found'\n fi\n}\n\n### Claim the instance with Netdata Cloud\nif command -v netdata-claim.sh > /dev/null; then\n ### Add user / group with script in ~/.local/bin/add-usergroup, if it is available\n if command -v add-usergroup > /dev/null; then\n sudo add-usergroup \"$USER\" netdata\n fi\n\n ### Ensure ownership\n ensureNetdataOwnership\n\n ### netdata-claim.sh must be run as netdata user\n sudo -H -u netdata bash -c 'export NETDATA_ROOM=\"{{- if (stat (joinPath .chezmoi.sourceDir \".chezmoitemplates\" \"secrets\" \"NETDATA_ROOM\")) -}}{{- includeTemplate \"secrets/NETDATA_ROOM\" | decrypt | trim -}}{{- else -}}{{- env \"NETDATA_ROOM\" -}}{{- end -}}\" && export NETDATA_TOKEN=\"{{- if (stat (joinPath .chezmoi.sourceDir \".chezmoitemplates\" \"secrets\" \"NETDATA_TOKEN\")) -}}{{- includeTemplate \"secrets/NETDATA_TOKEN\" | decrypt | trim -}}{{- else -}}{{- env \"NETDATA_TOKEN\" -}}{{- end -}}\" && yes | netdata-claim.sh -token=\"$NETDATA_TOKEN\" -rooms=\"$NETDATA_ROOM\" -url=\"https://app.netdata.cloud\"'\n \n ### Kernel optimizations\n # These are mentioned while installing via the kickstart.sh script method. We are using Homebrew for the installation though.\n # Assuming these optimizations do not cause any harm.\n if [ -d /Applications ] && [ -d /System ]; then\n ### macOS\n logg info 'System is macOS so Netdata kernel optimizations are not required'\n else\n ### Linux\n if [ -d /sys/kernel/mm/ksm ]; then\n logg info 'Adding Netdata kernel optimization for /sys/kernel/mm/ksm/run'\n echo 1 | sudo tee /sys/kernel/mm/ksm/run\n logg info 'Adding Netdata kernel optimization for /sys/kernel/mm/ksm/sleep_millisecs'\n echo 1000 | sudo tee /sys/kernel/mm/ksm/sleep_millisecs\n else\n logg info 'The /sys/kernel/mm/ksm directory does not exist so Netdata kernel optimizations are not being applied'\n fi\n fi\n\n ### Install additional alerts and enable notifications\n if command -v netdata > /dev/null; then\n ### Copy the additional alert definitions\n if [ -d /usr/local/etc/netdata ]; then\n NETDATA_ETC='/usr/local/etc/netdata/'\n elif [ -d /etc/netdata ]; then\n NETDATA_ETC='/etc/netdata'\n elif [ -d \"${HOMEBREW_PREFIX:-/opt/homebrew}/etc/netdata\" ]; then\n NETDATA_ETC=\"${HOMEBREW_PREFIX:-/opt/homebrew}/etc/netdata\"\n else\n logg error 'No etc location found for netdata' && exit 1\n fi\n logg info \"Copying ${XDG_CONFIG_HOME:-$HOME/.config}/netdata/health.d/ to $NETDATA_ETC\" && sudo cp -rf \"${XDG_CONFIG_HOME:-$HOME/.config}/netdata/health.d/\" \"$NETDATA_ETC\"\n \n if command -v gsed > /dev/null; then\n SED_UTIL=\"gsed\"\n else\n SED_UTIL=\"sed\"\n fi\n\n ### Blocky\n logg info \"Adding Blocky metrics collection to $NETDATA_ETC/go.d/prometheus.conf\"\n sudo \"$SED_UTIL\" -i \"/jobs:/a\\ - name: blocky_local \\n url: 'http://127.0.0.1:4000/metrics'\" \"$NETDATA_ETC/go.d/prometheus.conf\"\n \n ### SFTPGo\n logg info \"Adding SFTPGo metrics collection to $NETDATA_ETC/go.d/prometheus.conf\"\n sudo \"$SED_UTIL\" -i \"/jobs:/a\\ - name: sftpgo_local \\n url: 'http://127.0.0.1:57500/metrics'\" \"$NETDATA_ETC/go.d/prometheus.conf\"\n\n # Backup current health alarm configuration and apply new one\n if [ -d /usr/local/lib/netdata ]; then\n NETDATA_LIB='/usr/local/lib/netdata'\n elif [ -d /usr/lib/netdata ]; then\n NETDATA_LIB='/usr/lib/netdata'\n elif [ -d \"${HOMEBREW_PREFIX:-/opt/homebrew}/lib/netdata\" ]; then\n NETDATA_LIB=\"${HOMEBREW_PREFIX:-/opt/homebrew}/lib/netdata\"\n else\n logg error 'No lib location found for netdata' && exit 1\n fi\n logg info \"Copying ${XDG_CONFIG_HOME:-$HOME/.config}/netdata/health_alarm_notify.conf to $NETDATA_LIB/conf.d/health_alarm_notify.conf\" && sudo cp -f \"${XDG_CONFIG_HOME:-$HOME/.config}/netdata/health_alarm_notify.conf\" \"$NETDATA_LIB/conf.d/health_alarm_notify.conf\"\n else\n logg warn 'netdata is not available in the PATH or is not installed'\n fi\n\n ### Ensure the apt command is available before running `debsecan` logic\n if command -v apt-get > /dev/null; then\n ### Configure Netdata to gather information about CVEs in the installed packages\n if command -v debsecan > /dev/null; then\n DEBSECAN_GIT=\"${XDG_DATA_HOME:-$HOME/.local/share}/netdata-debsecan\"\n ### Installing the script to generate report on CVEs in installed packages\n logg info 'Installing script to generate report on CVEs in installed packages' && sudo cp -f \"$DEBSECAN_GIT/usr_local_bin_debsecan-by-type\" \"/usr/local/bin/debsecan-by-type\"\n ### Generate initial debsecan reports in /var/log/debsecan/\n logg info 'Generating initial debsecan reports in /var/log/debsecan/' && debsecan-by-type\n ### Configure dpkg to refresh the file after each run\n logg info 'Configuring dpkg to refresh the file after each run' && sudo cp -f \"$DEBSECAN_GIT/etc_apt_apt.conf.d_99debsecan\" /etc/apt/apt.conf.d/99-debsecan\n ### Add a cron job to refresh the file every hour\n logg info 'Adding a cron job to refresh the file every hour' && sudo cp -f \"$DEBSECAN_GIT/etc_cron.d_debsecan\" /etc/cron.d/debsecan\n ### Install the module/configuration file\n logg info 'Installing the module and configuration file'\n sudo \"$DEBSECAN_GIT/debsecan.chart.py\" /usr/libexec/netdata/python.d/debsecan.chart.py\n sudo \"$DEBSECAN_GIT/debsecan.conf\" /etc/netdata/python.d/debsecan.conf\n else\n logg warn 'apt-get is available but debsecan is not available in the PATH or is not installed'\n fi\n fi\n\n ### Ensure / report whether speedtest-cli is installed\n if ! command -v speedtest-cli > /dev/null; then\n if command -v pipx > /dev/null; then\n pipx install speedtest-cli\n else\n logg warn 'speedtest-cli not installed and pipx is not available'\n fi\n fi\n\n ### Configure Netdata to gather information about Internet connection speed\n if command -v speedtest-cli > /dev/null; then\n ### Installing the script to generate report on Internet connection speed\n logg info 'Installing script to generate report on Internet connection speed'\n LIBEXEC_PATH=\"$(netdata -W buildinfo | grep 'Configure' | sed \"s/.*--libexecdir=\\([^ \\']*\\).*/\\1/\")\"\n if [ -d /usr/libexec/netdata/charts.d ]; then\n sudo cp -f \"${XDG_DATA_HOME:-$HOME/.local/share}/netdata-speedtest/speedtest.chart.sh\" \"/usr/libexec/netdata/charts.d/speedtest.chart.sh\"\n elif [ -d \"$LIBEXEC_PATH/netdata/charts.d\" ]; then\n logg info \"$LIBEXEC_PATH/netdata/charts.d present on system\"\n cp -f \"${XDG_DATA_HOME:-$HOME/.local/share}/netdata-speedtest/speedtest.chart.sh\" \"$LIBEXEC_PATH/netdata/charts.d/speedtest.chart.sh\"\n else\n logg warn \"Failed to find appropriate directory to add Netdata speedtest chart script\"\n fi\n else\n logg warn 'speedtest-cli is not available in the PATH or is not installed'\n fi\n\n ### Ensure ownership again\n ensureNetdataOwnership\n\n ### Restart Netdata service\n if command -v systemctl > /dev/null; then\n logg info 'Enabling netdata service' && sudo systemctl enable netdata\n logg info 'Restarting netdata service' && sudo systemctl restart netdata\n elif [ -d /Applications ] && [ -d /System ]; then\n logg info 'Starting / enabling netdata service' && brew services restart netdata\n else\n logg warn 'systemctl is not available'\n fi\nelse\n logg info 'netdata-claim.sh is not available in the PATH'\nfi\n"
_service: netdata
_service:brew:
- name: netdata
sudo: true
_serviceEnabled: true
ansible: professormanhattan.netdata
brew: netdata
pacman: netdata
port: netdata
script: curl https://my-netdata.io/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh
networkmanager:
_bin: networkmanager
_github: https://github.com/BornToBeRoot/NETworkManager
_name: NETworkManager
scoop: networkmanager
winget: BornToBeRoot.NETworkManager
newman:
_bin: newman
_desc: Command-line collection runner for Postman
_github: https://github.com/postmanlabs/newman
_home: https://www.getpostman.com
_name: newman
brew: newman
npm: newman
newsflash:
_bin: newsflash
_github: false
_gitlab: https://gitlab.com/news-flash/news_flash_gtk
flatpak: com.gitlab.newsflash
nextcloud:
_app: Nextcloud.app
_bin: nextcloudcmd
_desc: '[Nextcloud Client](https://nextcloud.com) is a tool to keep your files synchronized between your Nextcloud server and your desktop. Select one or more directories on your local machine and always have access to your latest files wherever you are'
_docs: https://docs.nextcloud.com/server/latest/user_manual/en/
_github: https://github.com/nextcloud/desktop
_home: https://nextcloud.com
_name: Nextcloud Client
cask: nextcloud
choco: nextcloud-client
flatpak: com.nextcloud.desktopclient.nextcloud
nginx:
_bin: nginx
_desc: It also generates sites-enabled proxies using YML configurations. Easter eggs included. [Nginx](https://www.nginx.com/), stylized as NGINX, nginx or NginX, is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. The software was created by Igor Sysoev and publicly released in 2004. Nginx is free and open-source software, released under the terms of the 2-clause BSD license.
_docs: https://nginx.org/en/docs/
_github: https://github.com/nginx/nginx
_home: https://nginx.org/
_name: NGINX
_ports:
- port: 80
proto: tcp
- port: 443
proto: tcp
_post: |
#!/usr/bin/env bash
# @file NGINX Amplify Join
# @brief Set up NGINX Amplify and joins the cloud monitoring service dashboard
# @description
# This script installs NGINX Amplify and connects with the user's NGINX Amplify instance, assuming the `NGINX_AMPLIFY_API_KEY`
# is defined. NGINX Amplify is a free web application that serves as a way of browsing through metrics of all your connected
# NGINX instances.
#
# ## Links
#
# * [NGINX Amplify login](https://amplify.nginx.com/login)
# * [NGINX Amplify documentation](https://docs.nginx.com/nginx-amplify/#)
if command -v nginx > /dev/null; then
logg info 'Downloading the NGINX Amplify installer script'
TMP="$(mktemp)"
curl -sSL https://github.com/nginxinc/nginx-amplify-agent/raw/master/packages/install.sh > "$TMP"
logg info 'Running the NGINX Amplify setup script'
API_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NGINX_AMPLIFY_API_KEY")) }}{{- includeTemplate "secrets/NGINX_AMPLIFY_API_KEY" | decrypt | trim -}}{{ else }}{{- env "NGINX_AMPLIFY_API_KEY" -}}{{ end }}" sh "$TMP"
fi
_service: nginx
_serviceEnabled: true
_todo: Check out /opt/homebrew/etc/nginx/nginx.conf / nginx/servers
ansible: professormanhattan.nginx
apt: nginx
brew: nginx
choco: nginx
dnf: nginx
pacman: nginx
port: nginx
scoop: nginx
nginx-unit:
_bin: unitd
_github: https://github.com/nginx/unit
_name: NGINX Unit
_service: unit
brew: nginx/unit/unit
ngrok:
_bin: ngrok
_github: false
_desc: '[Ngrok](https://ngrok.com/) exposes local servers behind NATs and firewalls to the public internet over secure tunnels. Ngrok also provides a real-time web UI where you can introspect all HTTP traffic running over your tunnels. You can replay any request against your tunnels with one click. The main feature is the ability to generate an internet-accessible URL that directs traffic to your local web server even if it is behind a firewall or proxy.'
_home: https://ngrok.com/)
_name: Ngrok
ansible: professormanhattan.ngrok
cask: ngrok
choco: ngrok
snap: ngrok
ngxtop:
_bin: ngxtop
_desc: Real-time metrics for nginx server
_github: https://github.com/lebinh/ngxtop
_name: ngxtop
pipx: ngxtop
ninja:
_bin: ninja
_github: https://github.com/ninja-build/ninja
_name: Ninja
apt: ninja
brew: ninja
dnf: ninja
pacman: ninja
zypper: ninja
nitroshare:
_app: nitroshare.app
_bin: nitroshare
_desc: Network file transfer application for Windows, OS X, & Linux
_docs: https://nitroshare.net/
_github: https://github.com/nitroshare/nitroshare-desktop
_home: https://nitroshare.net/
_name: NitroShare
apt: nitroshare
cask: nitroshare
choco: nitroshare
dnf: nitroshare
pacman: nitroshare
nmap:
_bin: nmap
_desc: >-
[Nmap](https://github.com/nmap/nmap) (short for Network Mapper) is a free and open source utility for network discovery and security auditing. Many systems and network administrators also find it useful for tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime. Nmap uses raw IP packets in novel ways to determine what hosts are available on the network, what services those hosts are offering, what operating systems they are running, what type of packet filters/firewalls are in use, and dozens of other characteristics. It was designed to rapidly scan large networks, but works fine against single hosts. Nmap runs on all major operating systems.
_docs: https://nmap.org/docs.html
_github: https://github.com/nmap/nmap
_home: https://nmap.org/
_name: Nmap
_post:snap: |
#!/usr/bin/env bash
sudo snap connect nmap:network-control
ansible: professormanhattan.nmap
apt: nmap
brew: nmap
choco: nmap
dnf: nmap
pacman: nmap
port: nmap
scoop: nmap
snap: nmap
nnn:
_bin: nnn
_desc: A full-featured terminal file manager
_github: https://github.com/jarun/nnn
_name: nnn
apk: nnn
apt: nnn
brew: nnn
github: github.com/jarun/nnn
pacman: nnn
pkg: nnn
node:
_bin: node
_desc: '[Node.js](https://nodejs.org/en/) is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser.'
_docs: https://nodejs.org/en/docs/
_github: https://github.com/nodejs/node
_home: https://nodejs.org/en/
_name: Node.js
ansible: professormanhattan.nodejs
brew: node
scoop: nodejs
node-prune:
_bin: node-prune
_desc: Extension to remove unnecessary files from node_modules
_github: https://github.com/tj/node-prune
_name: node-prune
github: github.com/tj/node-prune
go: github.com/tj/node-prune@latest
nodemon:
_bin: nodemon
_github: https://github.com/remy/nodemon
_name: Nodemon
npm: nodemon
nomad:
_bin: nomad
_github: https://github.com/hashicorp/nomad
_desc: '[HashiCorp Nomad](https://www.nomadproject.io/) is a simple and flexible scheduler and workload orchestrator to deploy and manage containers and non-containerized applications across on-prem and clouds at scale.'
_docs: https://developer.hashicorp.com/nomad/docs
_home: https://www.nomadproject.io/
_name: HashiCorp Nomad
_service: nomad
ansible: professormanhattan.nomad
brew: nomad
choco: nomad
yay: nomad-git
nomino:
_bin: nomino
_desc: Batch rename utility for developers
_github: https://github.com/yaa110/nomino
_name: nomino
cargo: nomino
github: github.com/yaa110/nomino
yay: nomino
nordvpn:
_bin: null
_desc: '[NordVPN](https://nordvpn.com/) is a virtual private network service provider. It has desktop applications for Windows, macOS, and Linux, mobile apps for Android and iOS, as well as an application for Android TV. Manual setup is available for wireless routers, NAS devices and other platforms.'
_docs: https://support.nordvpn.com/
_github: https://github.com/jotyGill/openpyn-nordvpn
_home: https://nordvpn.com/
_name: NordVPN
ansible: professormanhattan.nordvpn
normit:
_bin: normit
_deps:
- mpg123
_desc: '[Normit](https://github.com/pawurb/normit) allows you to easily translate any text from one language to another. It also includes the ability to generate audio through speech synthesis as well.'
_github: https://github.com/pawurb/normit
_name: Normit
ansible: professormanhattan.normit
npm: normit
notion:
_app: Notion.app
_bin: null
_desc: Notion is the connected workspace where better, faster work happens.
_docs: https://www.notion.so/help/guides/category/documentation
_env:
NOTION_APPDATA:
cask: "$HOME/Library/Application Support/Notion"
choco: "TODO"
_github: https://github.com/makenotion/notion-sdk-js
_home: https://www.notion.so/
_name: Notion AI
_note: Waiting on Linux install alternative.
cask: notion
choco: notion
mas: 1559269364
np:
_bin: np
_desc: A better `npm publish`
_github: https://github.com/sindresorhus/np
_name: np
npm: np
# Error installing aiohttp dependency
# starred:
# _bin: starred
# pipx: starred
npkill:
_bin: npkill
_github: https://github.com/voidcosmos/npkill
_name: npkill
npm: npkill
npm-check:
_bin: npm-check
_desc: Check for outdated, incorrect, and unused dependencies.
_github: https://github.com/dylang/npm-check
_name: npm-check
npm: npm-check
npm-check-updates:
_bin: ncu
_github: https://github.com/raineorshine/npm-check-updates
_name: NPM Check Updates
npm: npm-check-updates
ntfy:
_bin: nfty
_github: https://github.com/dschep/ntfy
_name: NFTY
_post: |
#!/usr/bin/env bash
sudo mkdir -p /usr/local/etc/branding
sudo cp -f "$HOME/.local/etc/branding/logo-color-256x256.png" /usr/local/etc/branding/logo-color-256x256.png
sudo mkdir -p /usr/local/share/sounds
sudo rsync -rtvp "${XDG_DATA_HOME:-$HOME/.local/share}/sounds/" /usr/local/share/sounds
if command -v apt-get > /dev/null; then
sudo apt install python-dbus
fi
if command -v termux-setup-storage > /dev/null; then
apt install termux-api
fi
pip3: ntfy[emoji,matrix,pid,slack]
ntl:
_bin: ntl
_github: https://github.com/ruyadorno/ntl
_name: NTL
npm: ntl
nuclear:
_app: nuclear.app
_bin: nuclear
_desc: Streaming music player that finds free music
_github: https://github.com/nukeop/nuclear
_home: https://nuclear.js.org/
_name: Nuclear
cask: nuclear
choco: nuclear
flatpak: org.js.nuclear.Nuclear
github: github.com/nukeop/nuclear
snap: nuclear
yay: nuclear-player-bin
nugetpackageexplorer:
_bin: nugetpackageexplorer
_github: https://github.com/NuGetPackageExplorer/NuGetPackageExplorer
_name: NuGet Package Explorer
choco: nugetpackageexplorer
winapp: nuget-package-explorer/9WZDNCRDMDM3
winget: NuGet Package Explorer
nushell:
_bin: nu
_github: https://github.com/nushell/nushell
_name: Nu
apk: nushell
apt: nushell
brew: nushell
choco: nushell
dnf: nushell
pacman: nushell
port: nushell
scoop: nushell
winget: nushell
nve:
_bin: nve
_github: https://github.com/ehmicky/nve
_name: nve
npm: nve
nx:
_bin: nx
_github: https://github.com/nrwl/nx
_name: NX
npm: nx
obs-studio:
_app: OBS.app
_bin: obs-studio
_github: https://github.com/obsproject/obs-studio
_name: OBS Studio
cask: obs
choco: obs-studio
flatpak: com.obsproject.Studio
obsidian:
_app: Obsidian.app
_bin: null
_desc: Obsidian is the private and flexible notetaking app that adapts to the way you think.
_docs: https://help.obsidian.md/Home
_github: false
_home: https://obsidian.md/
_name: Obsidian
appimage: Obsidian
cask: obsidian
choco: obsidian
flatpak: md.obsidian.Obsidian
scoop: extras/obsidian
winget: Obsidian.Obsidian
obsidian-cli:
_bin: obs
_github: https://github.com/Yakitrak/obsidian-cli
_name: Obsidian CLI
_pre:scoop: scoop bucket add scoop-yakitrak https://github.com/yakitrak/scoop-yakitrak.git
brew: megabyte-labs/tap/obs-cli
scoop: obs
oclif:
_bin: oclif
_desc: "[oclif](https://oclif.io/) is a framework for building CLIs in Node.js. This framework was built out of the Heroku CLI but generalized to build any custom CLI. It's designed both for single-file CLIs with a few flag options, or for very complex CLIs that have subcommands (like git or heroku)"
_docs: https://oclif.io/docs/
_github: https://github.com/oclif/oclif
_home: https://oclif.io/
_name: oclif
npm: oclif
octosql:
_bin: octosql
_github: https://github.com/cube2222/octosql
_name: OctoSQL
brew: cube2222/octosql/octosql
scoop: octosql
oh-my-posh:
_bin: oh-my-posh
_desc: A blazing fast cross platform/shell prompt renderer
_docs: https://ohmyposh.dev/docs
_github: https://github.com/jandedobbeleer/oh-my-posh
_home: https://ohmyposh.dev/
_name: oh-my-posh
_post:scoop: |
#!/usr/bin/env bash
clink autorun install
brew: jandedobbeleer/oh-my-posh/oh-my-posh
scoop:
- clink
- https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json
onionshare:
_bin: onionshare
_desc: '[OnionShare](https://.onionshare.org/) is an open source tool that lets you securely and anonymously share files, host websites, and chat with friends using the Tor network.'
_docs: https://docs.onionshare.org/2.5/en/
_github: https://github.com/onionshare/onionshare
_home: https://onionshare.org/
_name: OnionShare
ansible: professormanhattan.onionshare
apt: onionshare
cask: onionshare
choco: onionshare
dnf: onionshare
flatpak: org.onionshare.OnionShare
snap: onionshare
onlykey:
_app: OnlyKey App.app
_bin: onlykey
_bin:snap: onlykey-app
_github: https://github.com/trustcrypto/OnlyKey-App
_name: onlykey
_post:snap: |
#!/usr/bin/env bash
sudo curl -sSL https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/pages/49-onlykey.rules -o /etc/udev/rules.d/49-onlykey.rules
sudo chmod 644 /etc/udev/rules.d/49-onlykey.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
ansible:darwin: professormanhattan.onlykey
choco: onlykey
script:darwin: cd /tmp && curl -sSL https://github.com/trustcrypto/OnlyKey-App/releases/download/v5.3.6/OnlyKey.App.5.3.6.dmg > OnlyKey.dmg && hdiutil attach "/tmp/OnlyKey.dmg" && sudo cp -R "/Volumes/OnlyKey App/OnlyKey App.app" /Applications && sudo hdiutil detach "/Volumes/OnlyKey App" && rm -f "/tmp/OnlyKey.dmg"
snap: onlykey-app
onlykey-agent:
_bin: onlykey-agent
_deps:
- onlykey-cli-deps
_github: https://github.com/trustcrypto/onlykey-agent
_name: OnlyKey Agent
brew: onlykey-agent
pipx: onlykey-agent
onlykey-cli:
_bin: onlykey-cli
_deps:
- onlykey-cli-deps
_github: https://github.com/trustcrypto/python-onlykey
_name: OnlyKey CLI
pipx: onlykey
onlykey-cli-deps:
_github: false
_post:linux: |
#!/usr/bin/env bash
sudo curl -sSL https://raw.githubusercontent.com/trustcrypto/trustcrypto.github.io/pages/49-onlykey.rules -o /etc/udev/rules.d/49-onlykey.rules
sudo chmod 644 /etc/udev/rules.d/49-onlykey.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
apt:
- python3-pip
- python3-tk
- libusb-1.0-0-dev
- libudev-dev
brew:darwin:
- libusb
dnf:
- python3-pip
- python3-devel
- python3-tkinter
- libusb-devel
- libudev-devel
- gcc
- redhat-rpm-config
pacman:
- git
- python3-setuptools
- python3
- libusb
- python3-pip
zypper:
- python3-pip
- python3-devel
- python3-tk
- libusb-1_0-devel
- libudev-devel
opencommit:
_bin: opencommit
_desc: GPT CLI to auto-generate impressive commits in 1 second
_docs: https://github.com/di-sukharev/opencommit
_github: https://github.com/di-sukharev/opencommit
_home: https://www.npmjs.com/package/opencommit
_name: OpenCommit
npm: opencommit
openinterminal:
_app: OpenInTerminal.app
_bin: null
_desc: Finder Toolbar app for macOS to open the current directory in Terminal, iTerm, Hyper or Alacritty
_docs: https://github.com/Ji4n1ng/OpenInTerminal
_github: https://github.com/Ji4n1ng/OpenInTerminal
_home: https://github.com/Ji4n1ng/OpenInTerminal
_name: OpenInTerminal
cask: openinterminal
openjdk:
_bin: javac
_desc: Latest version of the OpenJDK (Java Development Kit)
_docs: https://openjdk.org/groups/build/doc/building.html
_github: https://github.com/openjdk/jdk
_home: https://openjdk.org/
_name: OpenJDK
apt: default-jdk
brew: openjdk
choco: openjdk
dnf: java-latest-openjdk.x86_64
pacman: jdk-openjdk
openshift-cli:
_bin: oc
_desc: The OpenShift Command Line, part of OKD
_docs: https://docs.openshift.com/container-platform/4.8/cli_reference/openshift_cli/getting-started-cli.html
_github: https://github.com/openshift/oc
_home: https://www.redhat.com/en/technologies/cloud-computing/openshift
_name: OpenShift CLI
brew: openshift-cli
choco: openshift-cli
openssh-server:
_service: sshd
_github: false
_when: test -f /proc/version && ! grep Microsoft /proc/version > /dev/null && ! test -d /Applications'
apt: openssh-server
dnf: openssh-server
pacman: openssh
openssl:
_bin: openssl
_github: false
_name: OpenSSL
apt: openssl
brew: openssl
choco: openssl
dnf: openssl
pacman: openssl
port: openssl
scoop: openssl
openssl-osx-ca:
_bin: openssl-osx-ca
_github: https://github.com/raggi/openssl-osx-ca
_name: OpenSSL macOS CA
_service:brew:darwin:
- name: openssl-osx-ca
sudo: true
_serviceEnabled: true
brew:darwin: raggi/ale/openssl-osx-ca
openvpn:
_bin: openvpn
_github: https://github.com/OpenVPN/openvpn
_name: OpenVPN
_service: openvpn
_service:brew:
- name: openvpn
sudo: true
apt: openvpn
brew: openvpn
choco: openvpn
dnf: openvpn
pacman: openvpn
opn-cli:
_bin: opn-cli
_github: https://github.com/andeman/opn-cli
_name: OPNSense CLI
pipx: opn-cli
oq:
_bin: oq
_desc: A performant, and portable jq wrapper to facilitate the consumption and output of formats other than JSON; using jq filters to transform the data
_github: https://github.com/Blacksmoke16/oq
_home: https://blacksmoke16.github.io/oq/
_name: oq
brew: oq
github: github.com/Blacksmoke16/oq
snap: oq
yay: oq
orbstack:
_app: OrbStack.app
_github: https://github.com/orbstack/orbstack
_bin: orb
_name: OrbStack
cask: orbstack
osquery:
_bin: osqueryctl
_desc: SQL powered operating system instrumentation, monitoring, and analytics
_docs: https://osquery.readthedocs.io/en/stable/
_github: https://github.com/osquery/osquery
_home: https://osquery.io/
_name: osquery
cask: osquery
choco: osquery
github: github.com/osquery/osquery
yay: osquery-git
osx-sign:
_bin: electron-osx-sign
_github: https://github.com/electron/osx-sign
_name: macOS Code Sign
npm: '@electron/osx-sign'
ots:
_bin: ots
_desc: Share end-to-end encrypted secrets with others via a one-time URL
_github: https://github.com/sniptt-official/ots
_home: https://ots.sniptt.com/
_name: ots
brew: ots
github: github.com/sniptt-official/ots
go: github.com/sniptt-official/ots@latest
p7zip:
_bin: p7zip
_name: p7zip
_github: https://github.com/p7zip-project/p7zip
apt: p7zip
brew: p7zip
dnf: p7zip
pacman: p7zip
package-size:
_bin: package-size
_desc: Get the bundle size of an npm package
_github: https://github.com/egoist/package-size
_name: package-size
npm: package-size
packer:
_bin: packer
_desc: '[Packer](https://www.packer.io/) is a free and open source tool for creating golden images for multiple platforms from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. It is a [HashiCorp](https://www.hashicorp.com/) product.'
_docs: https://developer.hashicorp.com/packer/docs
_github: https://github.com/hashicorp/packer
_home: https://www.packer.io/
_name: Packer
ansible: professormanhattan.packer
apt: packer
brew: packer
choco: packer
pacman: packer
page-fetch:
_bin: page-fetch
_desc: Fetch web pages using headless Chrome, storing all fetched resources including JavaScript files
_github: https://github.com/detectify/page-fetch
_name: page-fetch
go: github.com/detectify/page-fetch@latest
pageres:
_bin: pageres
_desc: Capture website screenshots
_github: https://github.com/sindresorhus/pageres-cli
_name: pageres
npm: pageres-cli
pake:
_bin: pake
_github: https://github.com/tw93/Pake
npm: pake-cli
pandoc:
_bin: pandoc
_deps:
- python
_deps:darwin:
- basictex
- python
_desc: '[Pandoc](https://pandoc.org/) is a Haskell library for converting from one documentation markup format to another. If you need to convert files from one markup format into another, then look no further. Pandoc is your swiss-army knife. It converts from and to dozens of formats like HTML, markdown, docx, JSON, YAML, and CSV, to name a few.'
_docs: https://pandoc.org/getting-started.html
_github: https://github.com/jgm/pandoc
_home: https://pandoc.org/
_name: Pandoc
ansible: professormanhattan.pandoc
apt: pandoc
brew:
- pandoc
- librsvg
choco:
- pandoc
- rsvg-convert
- miktex
crew: pandoc
dnf: pandoc
nix: pandoc
pacman: pandoc
winget: pandoc
papertrail:
_bin: papertrail
_desc: Command-line client for Papertrail hosted log management service. Tails and searches app server logs and system syslog. Supports Boolean search and works with grep and pipe output (Unix)
_github: https://github.com/papertrail/papertrail-cli
_name: papertrail
gem: papertrail
parallels:
_app: Parallels Desktop.app
_bin: parallels
_github: false
_desc: '[Parallels Desktop for Mac](https://www.parallels.com/) is software providing hardware virtualization for Macintosh computers with Intel processors. It is developed by Parallels, since 2018 a subsidiary of Corel.'
_docs: https://kb.parallels.com/
_home: https://www.parallels.com/
_name: Parallels
_notes: On macOS, full disk access is required for Terminal. For Homebrew Cask, this requires the terminal to have full disk access
ansible:darwin: professormanhattan.parallels
cask: parallels
mas: 1085114709
pass:
_bin: pass
_desc: pass is a very simple password store that keeps passwords inside gpg2(1) encrypted files
_home: https://www.passwordstore.org/
_github: false
_name: pass
apt: pass
brew: pass
dnf: pass
pacman: pass
pkg: password-store
pastel:
_bin: pastel
_desc: A command-line tool to generate, analyze, convert and manipulate colors
_github: https://github.com/sharkdp/pastel
_name: pastel
brew: pastel
cargo: pastel
github: github.com/sharkdp/pastel
snap: pastel
yay: pastel
patch-package:
_bin: patch-package
_github: https://github.com/ds300/patch-package
_name: Patch Package
npm: patch-package
pb:
_app: PB for Desktop.app
_bin: pushbullet
_github: https://github.com/sidneys/pb-for-desktop
_name: Pushbullet for Desktop
appimage: sidneys/pb-for-desktop
cask: pb
choco: pushbullet
peco:
_bin: peco
_desc: '[peco](https://github.com/peco/peco) can be a great tool to filter stuff like logs, process stats, find files, because unlike grep, you can type as you think and look through the current results.'
_github: https://github.com/peco/peco
_home: https://peco.github.io/
_name: Peco
ansible: professormanhattan.peco
apt: peco
brew: peco
choco: peco
github: github.com/peco/peco
pacman: peco
peek:
_bin: peek
_desc: '[Peek](https://github.com/phw/peek) is an animated GIF screen recorder with an easy-to-use interface. It is available for Linux systems that are running GNOME. It is not a general purpose screencast app with extended features. It focuses on simply creating small screencasts of an area of the screen that are output as a GIF, WebM, or MP4 video.'
_github: https://github.com/phw/peek
_name: Peek
_rpmFusion: true
ansible:linux: professormanhattan.peek
apt:
- software-properties-common
- peek
dnf:
- ffmpeg
- gstreamer1-plugins-ugly
- peek
flatpak: com.uploadedlobster.peek
pacman:
- gst-plugins-good
- gst-plugins-ugly
- gifski
- peek
yay: peek-git
percol:
_bin: percol
_github: https://github.com/mooz/percol
_name: Percol
pipx: percol
pfsense-fauxapi:
_bin: fauxapi
_github: https://github.com/ndejong/pfsense_fauxapi_client_python
_name: pfSense CLI (fauxapi)
pipx: pfsense-fauxapi
pgcli:
_bin: pgcli
_desc: '[pgcli](https://www.pgcli.com/) is a free and open-source CLI for Postgres that does auto-completion and syntax highlighting.'
_docs: https://www.pgcli.com/docs
_github: https://github.com/dbcli/pgcli
_home: https://www.pgcli.com/
_name: pgcli
ansible: professormanhattan.pgcli
brew: pgcli
choco: pgcli
pipx: pgcli
port: pgcli
php:
_bin: php
_deps:
- php-extensions
_desc: '[PHP](https://www.php.net/) is a general-purpose scripting language especially suited to web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1994. The PHP reference implementation is now produced by The PHP Group.'
_docs: https://www.php.net/docs.php
_github: https://github.com/php/php-src
_home: https://www.php.net/
_name: PHP
_service: php
ansible: professormanhattan.php
apt: php
brew: php
choco: php
dnf: php
pacman: php
port: php
scoop: php
php-extensions:
_deps:
- postgresql
_name: PHP Extensions
_github: false
_note: Needs testing
apt:
- libpcre3-dev
- libpq-dev
- php-apcu
- php-cgi
- php-cli
- php-common
- php-curl
- php-dev
- php-fpm
- php-gd
- php-intl
- php-imap
- php-json
- php-mbstring
- php-opcache
- php-pgsql
- php-redis
- php-snmp
- php-sqlite3
- php-xml
dnf:
- pcre-devel
- postgresql-devel
- php-apcu
- php-cgi
- php-cli
- php-common
- php-curl
- php-devel
- php-fpm
- php-gd
- php-intl
- php-json
- php-mbstring
- php-opcache
- php-pgsql
- php-redis
- php-snmp
- php-sqlite3
- php-xml
pacman:
- libpcre3-dev
- postgresql-libs
- php-apcu
- php-cgi
- php-cli
- php-common
- php-curl
- php-dev
- php-fpm
- php-gd
- php-intl
- php-imap
- php-json
- php-mbstring
- php-opcache
- php-redis
- php-snmp
- php-sqlite3
- php-xml
zypper:
- pcre-devel
- postgresql-devel
- php-apcu
- php-cgi
- php-cli
- php-common
- php-curl
- php-devel
- php-fpm
- php-gd
- php-intl
- php-json
- php-mbstring
- php-opcache
- php-redis
- php-snmp
- php-sqlite3
- php-xml
phpmon:
_app: PHP Monitor.app
_bin: phpmon
_github: https://github.com/nicoverbruggen/phpmon
_name: PHP Mon
_pre: |
#!/usr/bin/env bash
if ! command -v valet > /dev/null; then
if ! command -v composer > /dev/null; then
brew install composer
fi
composer global require laravel/valet
valet install
valet trust
fi
cask: nicoverbruggen/homebrew-cask/phpmon
pick:
_bin: pick
_github: https://github.com/mptre/pick
_name: Pick
apt: pick
brew: pick
dnf: pick
emerge: pick
pkg-freebsd: pick
pkg_add: pick
port: pick
xbps: pick
yay: pick
pidcat:
_bin: pidcat
_github: https://github.com/JakeWharton/pidcat
_name: PidCat
brew: pidcat
pieces:
_app: Pieces.app
_bin: pieces-for-developers
_desc: Pieces is a first-in-kind productivity suite that optimizes developer tools and eliminates the chaos of context switching.
_docs: https://docs.pieces.app/
_github: false
_home: https://pieces.app/
_name: Pieces
appinstaller: https://builds.pieces.app/stages/production/appinstaller/pieces_for_x.appinstaller
cask: pieces
exe: https://builds.pieces.app/stages/production/pieces_for_x/windows-exe/download
snap: pieces-for-developers
pieces-cli:
_bin: pieces
_desc: Pieces is a first-in-kind productivity suite that optimizes developer tools and eliminates the chaos of context switching.
_docs: https://docs.pieces.app/
_github: false
_home: https://pieces.app/
_name: Pieces CLI
cask: pieces-cli
pieces-os:
_app: Pieces.app
_bin: pieces-os
_docs: https://docs.pieces.app/
_env:
PIECES_OS_APPDATA:
cask: "$HOME/Library/Application Support/com.pieces.os"
snap: "TODO"
_github: false
_home: https://pieces.app/
_name: Pieces OS
_note: Waiting for choco package
_post:snap: |
#!/usr/bin/env bash
sudo snap connect pieces-os:dotnet-runtime-aspnetcore
appinstaller: https://builds.pieces.app/stages/production/appinstaller/os_server.appinstaller
cask: pieces-os
exe: https://builds.pieces.app/stages/production/os_server/windows-exe/download
snap: pieces-os
pigz:
_bin: pigz
_github: https://github.com/madler/pigz
_name: PIGZ
apt: pigz
brew: pigz
dnf: pigz
pacman: pigz
pika:
_app: Pika.app
_bin: null
_desc: An open-source colour picker app for macOS
_docs: https://github.com/superhighfives/pika
_github: https://github.com/superhighfives/pika
_home: https://superhighfives.com/pika
_name: Pika
cask: pika
pinapp:
_bin: pinapp
_github: https://github.com/fabrialberio/PinApp
flatpak: io.github.fabrialberio.pinapp
pip:
_bin: pip
_desc: '[pip](https://pypi.org/project/pip/) is a package-management system written in Python used to install and manage software packages. It connects to an online repository of public and paid-for private packages, called the Python Package Index.'
_docs: https://pip.pypa.io/en/stable/user_guide/
_github: https://github.com/pypa/pip
_home: https://pip.pypa.io/en/stable/
_name: PIP
ansible: professormanhattan.pip
pipedream-cli:
_bin: pd
_desc: Connect APIs, remarkably fast. Free for developers.
_docs: https://pipedream.com/docs/cli/reference/
_github: https://github.com/PipedreamHQ/pipedream
_home: https://pipedream.com/
_name: Pipedream CLI
brew: pipedreamhq/pd-cli/pipedream
pipelight:
_bin: pipelight
_github: https://github.com/pipelight/pipelight
_name: Pipelight
cargo:linux: --git https://github.com/pipelight/pipelight
yay: pipelight
pipx:
_bin: pipx
_desc: "[pipx](https://pypi.org/project/pipx/) is a tool to help you install and run end-user applications written in Python. It's roughly similar to macOS's brew, JavaScript's npx, and Linux's apt"
_docs: https://pypa.github.io/pipx/
_github: https://github.com/pypa/pipx
_home: https://pypi.org/project/pipx/
_post:brew: |
#!/usr/bin/env bash
pipx ensurepath
brew: pipx
pkg:
_bin: pkg
_desc: This command line interface enables you to package your Node.js project into an executable that can be run even on devices without Node.js installed.
_github: https://github.com/vercel/pkg
_name: pkg
npm: pkg
pkgx:
_bin: pkgx
_desc: The next-generation, crossplatform package manager
_docs: https://docs.pkgx.sh/
_github: https://github.com/pkgxdev/pkgx
_home: https://pkgx.sh/
_name: pkgx
brew: pkgxdev/made/pkgx
platformio:
_bin: platformio
_github: https://github.com/platformio/platformio-core
_name: PlatformIO
brew: platformio
pipx: platformio
playwright:
_bin: playwright
_desc: '[Playwright](https://playwright.dev) enables reliable end-to-end testing for modern web apps. It allows testing Chromium, Firefox and WebKit with a single API'
_docs: https://playwright.dev/docs/intro
_github: https://github.com/Microsoft/playwright
_home: https://playwright.dev
_name: Playwright
npm: playwright
please:
_bin: plz
_github: https://github.com/thought-machine/please
_name: Please
brew: thought-machine/please/please
plex:
_app: Plex.app
_bin: plex
_desc: '[Plex](https://www.plex.tv/) is a global streaming service of free ad-supported video, with TV shows and movies from distributors such as Crackle, Warner Bros., MGM, Endemol Shine Group, Lionsgate, and Legendary. Plex is also a clientserver media player system plus an ancillary software suite.'
_github: false
_home: https://www.plex.tv/
_name: Plex
ansible: professormanhattan.plex
cask: plex
choco: plex
flatpak: tv.plex.PlexDesktop
plex-htpc:
_app: Plex HTPC.app
_bin: plex-htpc
_github: false
_home: https://www.plex.tv/
_name: Plex HTPC
cask: plex-htpc
choco: plex-home-theater
flatpak: tv.plex.PlexHTPC
snap: plex-htpc
plex-media-server:
_app: Plex Media Server.app
_bin: plex-media-server
_github: false
_name: Plex Media Server
_ports:
- port: 32400
proto: tcp
- port: 3005
proto: tcp
- port: 5353
proto: udp
- port: 8324
proto: tcp
- port: 32410-32414
proto: udp
- port: 1900
proto: udp
- port: 32469
proto: tcp
cask: plex-media-server
choco: plexmediaserver
snap: plexmediaserver
yay: plex-media-server
plumber:
_bin: plumber
_github: https://github.com/streamdal/plumber
_name: Plumber
brew: streamdal/public/plumber
exe: https://github.com/streamdal/plumber/releases/latest/download/plumber-windows.exe
plymouth:
_github: false
_post: |
#!/usr/bin/env bash
# @file Plymouth Theme / Configuration
# @brief Configures Plymouth to use a custom theme
# @description
# This script installs Plymouth and then configures it to use our custom Betelgeuse theme.
### Create /etc/plymouth/plymouthd.conf
if [ -f /etc/plymouth/plymouthd.conf ]; then
### Back up original plymouthd.conf
if [ ! -f /etc/plymouth/plymouthd.conf.bak ]; then
logg info 'Backing up /etc/plymouth/plymouthd.conf to /etc/plymouth/plymouthd.conf.bak'
sudo cp -f /etc/plymouth/plymouthd.conf /etc/plymouth/plymouthd.conf.bak
fi
### Create new plymouthd.conf
logg info 'Populating the /etc/plymouth/plymouthd.conf file'
echo "[Daemon]" | sudo tee /etc/plymouth/plymouthd.conf > /dev/null
echo "Theme={{ .theme }}" | sudo tee -a /etc/plymouth/plymouthd.conf > /dev/null
echo "ShowDelay=1" | sudo tee -a /etc/plymouth/plymouthd.conf > /dev/null
fi
### Apply update-alternatives
if command -v update-alternatives > /dev/null; then
if [ -f "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth" ]; then
sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth" 100
logg success 'Installed default.plymouth'
# Required sometimes
sudo update-alternatives --set default.plymouth "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth"
logg success 'Set default.plymouth'
else
logg warn "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth does not exist!"
fi
else
logg warn 'update-alternatives is not available'
fi
### Update /etc/plymouth/plymouthd.conf
# Replaced by code above
# if [ -f /etc/plymouth/plymouthd.conf ]; then
# logg info 'Setting ShowDelay=1 in /etc/plymouth/plymouthd.conf'
# if cat /etc/plymouth/plymouthd.conf | grep ShowDelay; then
# sudo sed -i 's/^ShowDelay=.*/ShowDelay=1/' /etc/plymouth/plymouthd.conf
# else
# echo 'ShowDelay=1' | sudo tee -a /etc/plymouth/plymouthd.conf > /dev/null
# fi
# else
# logg warn '/etc/plymouth/plymouthd.conf does not exist!'
# fi
### Symlink /usr/local/share/plymouth/themes to /usr/share/plymouth/themes
if [ ! -d '/usr/share/plymouth/themes/{{ .theme }}' ]; then
logg info 'Symlinking /usr/local/share/plymouth/themes/{{ .theme }} to /usr/share/plymouth/themes/{{ .theme }}'
sudo ln -s '/usr/local/share/plymouth/themes/{{ .theme }}' '/usr/share/plymouth/themes/{{ .theme }}'
fi
### Set default Plymouth theme
if command -v plymouth-set-default-theme > /dev/null; then
sudo plymouth-set-default-theme -R '{{ .theme }}' || EXIT_CODE=$?
if [ -n "$EXIT_CODE" ]; then
logg warn 'There may have been an issue while setting the Plymouth default theme with plymouth-set-default-theme'
else
logg success 'Set Plymouth default theme with plymouth-set-default-theme'
fi
else
logg warn 'Could not apply default Plymouth theme because plymouth-set-default-theme is missing'
fi
### Apply update-alternatives (again - required sometimes)
if command -v update-alternatives > /dev/null; then
if [ -f "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth" ]; then
# Required sometimes
sudo update-alternatives --set default.plymouth "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth"
logg success 'Set default.plymouth (second time is required sometimes)'
else
logg warn "/usr/local/share/plymouth/themes/{{ .theme }}/{{ .theme }}.plymouth does not exist!"
fi
else
logg warn 'update-alternatives is not available'
fi
### Update kernel / initrd images
# Set `export DEBUG_MODE=true` to bypass GRUB2 / Plymouth application
if [ "$DEBUG_MODE" != 'true' ]; then
if command -v update-initramfs > /dev/null; then
logg info 'Running sudo update-initramfs -u'
sudo update-initramfs -u
logg success 'Updated kernel / initrd images for Plymouth'
elif command -v dracut > /dev/null; then
logg info 'Running sudo dracut --regenerate-all -f'
sudo dracut --regenerate-all -f
logg success 'Updated kernel / initrd images for Plymouth'
else
logg warn 'Unable to update kernel / initrd images because neither update-initramfs or dracut are available'
fi
fi
apt:
- libplymouth5
- plymouth
- plymouth-themes
- plymouth-label
dnf:
- plymouth
# - plymouth-x11
- plymouth-plugin-script
pacman:
- plymouth
pm2:
_bin: pm2
_desc: PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks
_docs: https://pm2.keymetrics.io/docs/usage/quick-start/
_github: https://github.com/Unitech/pm2
_home: https://pm2.keymetrics.io/
_name: pm2
npm: pm2
pnpm:
_bin: pnpm
_desc: '[pnpm](https://github.com/pnpm/pnpm) is a fast, disk space efficient package manager'
_docs: https://pnpm.io/motivation
_github: https://github.com/pnpm/pnpm
_home: https://pnpm.io/
_name: pnpm
ansible: professormanhattan.pnpm
brew: pnpm
npm: pnpm
scoop: pnpm
yay: pnpm
pnpm-lock-export:
_bin: pnpm-lock-export
_github: https://github.com/cvent/pnpm-lock-export
_desc: A CLI utility that reads a package.json and pnpm-lock.yaml, and outputs an npm ci compatible package-lock.json
npm: pnpm-lock-export
pock:
_app: Pock.app
_bin: null
_desc: Widgets manager for MacBook Touch Bar
_docs: https://github.com/pock/pock
_github: https://github.com/pock/pock
_home: https://pock.app/
_name: Pock
cask: pock
podman:
_bin: podman
_github: https://github.com/containers/podman
_name: Podman
apk: podman
apt: podman
bitbake: podman
brew: podman
dnf: podman
emerge: app-containers/podman
pacman: podman
zypper: podman
poetry:
_bin: poetry
_desc: '[Poetry](https://python-poetry.org) helps you declare, manage and install dependencies of Python projects, ensuring you have the right stack everywhere.'
_docs: https://python-poetry.org/docs/
_github: https://github.com/python-poetry/poetry
_home: https://python-poetry.org/
_name: Poetry
ansible: professormanhattan.poetry
brew: poetry
yay: python-poetry-git
polybar:
_bin: polybar
_github: https://github.com/polybar/polybar
_name: Polybar
apt: polybar
dnf: polybar
pacman: polybar
pkg-freebsd: polybar
xbps: polybar
zypper: polybar
pony:
_bin: pony
_desc: Local file-based password, API key, secret, recovery code store backed by GPG
_github: https://github.com/jessfraz/pony
_name: pony
github: github.com/jessfraz/pony
go: github.com/jessfraz/pony@latest
poppler:
_github: https://github.com/Belval/pdf2image
brew: poppler
portal:
_bin: portal
_desc: Portal is a quick and easy command-line file transfer utility from any computer to another
_docs: https://github.com/SpatiumPortae/portal
_github: https://github.com/SpatiumPortae/portal
_home: https://portal.spatiumportae.com/
_name: Portal
brew: portal
scoop: portal
winget: SpatiumPortae.portal
yay: portal-bin
porter:
_bin: porter
_desc: Porter enables you to package your application artifact, client tools, configuration and deployment logic together as an installer that you can distribute, and install with a single command.
_docs: https://getporter.org/docs/
_github: https://github.com/getporter/porter
_home: https://getporter.org/
_name: Porter
script:darwin: curl -L https://cdn.porter.sh/latest/install-mac.sh | bash
script:linux: curl -L https://cdn.porter.sh/latest/install-linux.sh | bash
script:windows: iwr "https://cdn.porter.sh/latest/install-windows.ps1" -UseBasicParsing | iex
portmaster:
_bin: null
_desc: "[Portmaster](https://safing.io/portmaster/) is a free and open-source application that puts you back in charge over all your computer's network connections."
_docs: https://docs.safing.io/portmaster/architecture/overview
_github: https://github.com/safing/portmaster
_home: https://safing.io/
_name: Portmaster
_when:linux: '! test -f /opt/safing/portmaster/portmaster-start'
ansible:linux: professormanhattan.portmaster
ansible:windows: professormanhattan.portmaster
apt: https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.deb
choco: portmaster
dnf: https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.rpm
exe: https://updates.safing.io/latest/windows_amd64/packages/portmaster-installer.exe
scoop: portmaster-np
postfix:
_bin: postfix
_desc: Postfix is an e-mail server that can be used to send e-mail
_docs: https://www.postfix.org/documentation.html
_github: https://github.com/vdukhovni/postfix
_home: https://www.postfix.org/
_name: Postfix
_post: |
#!/usr/bin/env bash
# @file SendGrid Postfix Configuration
# @brief Configures Postfix to use SendGrid as a relay host so you can use the `mail` program to send e-mail from the command-line
# @description
# This script follows the instructions from [SendGrid's documentation on integrating Postfix](https://docs.sendgrid.com/for-developers/sending-email/postfix).
# After this script runs, you should be able to send outgoing e-mails using SendGrid as an SMTP handler. In other words, you will
# be able to use the `mail` CLI command to send e-mails. The following is an example mailing the contents of `~/.bashrc` to `name@email.com`:
#
# ```shell
# cat ~/.bashrc | mail -s "My subject" name@email.com
# ```
if [ -n "$SENDGRID_API_KEY" ] && [ "$SENDGRID_API_KEY" != "" ]; then
if command -v postfix > /dev/null; then
### Ensure dependencies are installed
if command -v apt-get > /dev/null; then
logg info 'Installing libsasl2-modules'
sudo apt-get update
sudo apt-get install -y libsasl2-modules || EXIT_CODE=$?
elif command -v dnf > /dev/null; then
sudo dnf install -y cyrus-sasl-plain || EXIT_CODE=$?
elif command -v yum > /dev/null; then
sudo yum install -y cyrus-sasl-plain || EXIT_CODE=$?
fi
if [ -n "$EXIT_CODE" ]; then
logg warn 'There was an error ensuring the Postfix-SendGrid dependencies were installed'
fi
if [ -d /etc/postfix ]; then
### Add the SendGrid Postfix settings to the Postfix configuration
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/postfix/main.cf" ]; then
CONFIG_FILE=/etc/postfix/main.cf
if cat "$CONFIG_FILE" | grep '### INSTALL DOCTOR MANAGED' > /dev/null; then
logg info 'Removing Install Doctor-managed block of code in /etc/postfix/main.cf block'
START_LINE="$(echo `grep -n -m 1 "### INSTALL DOCTOR MANAGED ### START" "$CONFIG_FILE" | cut -f1 -d ":"`)"
END_LINE="$(echo `grep -n -m 1 "### INSTALL DOCTOR MANAGED ### END" "$CONFIG_FILE" | cut -f1 -d ":"`)"
if [ -n "$START_LINE" ] && [ -n "$END_LINE" ]; then
if command -v gsed > /dev/null; then
sudo gsed -i "${START_LINE},${END_LINE}d" "$CONFIG_FILE"
else
sudo sed -i "${START_LINE},${END_LINE}d" "$CONFIG_FILE"
fi
else
logg info 'No start-line or end-line detected - configuration appears to already be clean'
fi
fi
### Add Postfix main configuration
logg "Adding the following configuration from ${XDG_CONFIG_HOME:-$HOME/.config}/postfix/main.cf to /etc/postfix/main.cf"
cat "${XDG_CONFIG_HOME:-$HOME/.config}/postfix/main.cf" | sudo tee -a "$CONFIG_FILE" > /dev/null
echo "" | sudo tee -a "$CONFIG_FILE" > /dev/null
fi
### Ensure proper permissions on `sasl_passwd` and update Postfix hashmaps
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/postfix/sasl_passwd" ]; then
logg info "Copying file from ${XDG_CONFIG_HOME:-$HOME/.config}/postfix/sasl_passwd to /etc/postfix/sasl_passwd"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/postfix/sasl_passwd" /etc/postfix/sasl_passwd
logg info 'Assigning proper permissions to /etc/postfix/sasl_passwd'
sudo chmod 600 /etc/postfix/sasl_passwd
logg info 'Updating Postfix hashmaps for /etc/postfix/sasl_passwd'
sudo postmap /etc/postfix/sasl_passwd
else
logg warn '~/.config/postfix/sasl_passwd file is missing'
fi
### Forward root e-mails
if [ -d /root ]; then
logg info "Forwarding root e-mails to $PRIMARY_EMAIL"
echo "$PRIMARY_EMAIL" | sudo tee /root/.forward > /dev/null || logg error 'Failed to set root user .forward file'
elif [ -d /var/root ]; then
logg info "Forwarding root e-mails to $PRIMARY_EMAIL"
echo "$PRIMARY_EMAIL" | sudo tee /var/root/.forward > /dev/null || logg error 'Failed to set root user .forward file'
else
logg warn 'Unable to identify root user home directory'
fi
### Ensure /etc/postfix/header_checks exists
if [ ! -d /etc/postfix/header_checks ]; then
logg info 'Creating /etc/postfix/header_checks since it does not exist'
sudo touch /etc/postfix/header_checks
fi
### Re-write header From for SendGrid
if ! cat /etc/postfix/header_checks | grep "no-reply@${PUBLIC_SERVICES_DOMAIN}" > /dev/null; then
logg info 'Added From REPLACE to /etc/postfix/header_checks'
echo "/^From:.*@${PUBLIC_SERVICES_DOMAIN}/ REPLACE From: no-reply@${PUBLIC_SERVICES_DOMAIN}" | sudo tee -a /etc/postfix/header_checks > /dev/null
fi
### Update aliases
if [ -f /etc/aliases ]; then
logg info "Forward root e-mails to $PRIMARY_EMAIL"
ALIASES_TMP="$(mktemp)"
logg info "Setting $PRIMARY_EMAIL as root e-mail in temporary file"
sudo sed "s/#root.*/root:\ $PRIMARY_EMAIL/" /etc/aliases > "$ALIASES_TMP"
logg info 'Moving temporary file to /etc/aliases'
sudo mv -f "$ALIASES_TMP" /etc/aliases
if ! cat /etc/aliases | grep "$USER_USERNAME: root" > /dev/null; then
logg info 'Forward user e-mail to root@localhost'
echo "$USER_USERNAME: root" | sudo tee -a /etc/aliases > /dev/null
fi
### Ensure old /etc/aliases.db is removed
if [ -f /etc/aliases.db ]; then
logg info 'Ensuring /etc/aliases.db is removed' && sudo rm -f /etc/aliases.db
else
logg info '/etc/aliases.db was not found'
fi
### Re-generate the /etc/aliases.db file
if [ -f /etc/aliases ]; then
logg info 'Ensuring proper permissions on the /etc/aliases file' && sudo chown $(stat -c "%U:%G" /etc/sudoers) /etc/aliases
logg info 'Generating Postfix aliases' && sudo postalias /etc/aliases > /dev/null
else
logg warn '/etc/aliases is missing which is required for Postfix'
fi
# The `sudo newaliases` mode is probably used to regenerate the /etc/aliases.db
# but since we are removing it to ensure proper permissions, this method is commented out.
# logg info 'Running newaliases to regenerate the alias database' && sudo newaliases
else
logg warn '/etc/aliases does not appear to exist'
fi
if [ -d /Applications ] && [ -d /System ]; then
### macOS
# Source: https://budiirawan.com/install-mail-server-mac-osx/
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/postfix/com.apple.postfix.master.plist" ] && ! sudo launchctl list | grep 'postfix.master' > /dev/null; then
logg info 'Copying com.apple.postfix.master.plist'
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/postfix/com.apple.postfix.master.plist" /System/Library/LaunchDaemons/com.apple.postfix.master.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.postfix.master.plist && logg success 'launchctl load of com.apple.postfix.master successful'
fi
if ! sudo postfix status > /dev/null; then
logg info 'Starting postfix'
sudo postfix start > /dev/null
else
logg info 'Reloading postfix'
sudo postfix reload > /dev/null
fi
else
### Enable / restart postfix on Linux
logg info 'Enabling / restarting postfix'
sudo systemctl enable postfix
sudo systemctl restart postfix
fi
else
logg warn '/etc/postfix is not a directory! Skipping SendGrid Postfix setup.'
fi
else
logg info 'Skipping Postfix configuration because Postfix is not installed'
fi
fi
apt: postfix
dnf: postfix
pacman: postfix
port: postfix
script:darwin: echo "Postfix is included by macOS already"
postgresql:
_bin: postgresql
_github: https://github.com/postgres/postgres
_name: PostgreSQL
_service: postgresql
_service:brew: postgresql@14
apt: postgresql
brew: postgresql
choco: postgresql
dnf: postgresql
pacman: postgresql
zypper: postgresql
postman:
_app: Postman.app
_bin: postman
_github: https://github.com/postmanlabs/postman-app-support
_desc: "[Postman](https://www.postman.com/) is a collaboration platform for API development. Postman's features simplify each step of building an API and streamline collaboration so you can create better APIs — faster."
_docs: https://learning.postman.com/docs/getting-started/introduction/
_home: https://www.postman.com/
_name: Postman
ansible: professormanhattan.postman
cask: postman
choco: postman
flatpak: com.getpostman.Postman
snap: postman
yay: postman-bin
powerline:
_bin: powerline
_github: https://github.com/powerline/powerline
apt: powerline
dnf: powerline
pacman: powerline
pipx: powerline-status
powershell:
_app: PowerShell.app
_bin: powershell
_github: https://github.com/PowerShell/PowerShell
_desc: '[PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.1) is a task automation and configuration management framework from Microsoft, consisting of a command-line shell and the associated scripting language. Initially a Windows component only, known as Windows PowerShell, it was made open-source and cross-platform in 2016 with the introduction of PowerShell Core.'
_docs: https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.1
_name: Powershell
_post:cask: |
#!/usr/bin/env bash
brew install mono-libgdiplus
ansible: professormanhattan.powershell
cask: powershell
snap: powershell --classic
pppc-utility:
_app: PPPC Utility.app
_bin: pppc-utility
_github: https://github.com/jamf/PPPC-Utility
_name: Privacy Preferences Policy Control (PPPC) Utility
cask: pppc-utility
pre-commit:
_bin: pre-commit
_desc: Automatically installs a git pre-commit script in your git repository which runs your `npm test` on pre-commit
_github: https://github.com/observing/pre-commit
_name: pre-commit
brew: pre-commit
pipx: pre-commit
prefsniff:
_bin: prefsniff
_github: https://github.com/zcutlip/prefsniff
_name: PrefSniff
pipx: prefsniff
prepare:
_bin: null
_github: false
_desc: An Ansible Role that prepares hosts for playbook execution
ansible: professormanhattan.prepare
prettier:
_bin: prettier
_desc: '[Prettier](https://prettier.io/docs/en/index.html) is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary'
_docs: https://prettier.io/docs/en/index.html
_github: https://github.com/prettier/prettier
_home: https://prettier.io/
_name: Prettier
brew: prettier
npm: prettier
prettierd:
_bin: prettierd
_desc: Prettier, as a daemon, for improved formatting speed.
_docs: https://github.com/fsouza/prettierd
_github: https://github.com/fsouza/prettierd
_home: https://github.com/fsouza/prettierd
_name: Prettierd
brew: fsouza/prettierd/prettierd
npm: '@fsouza/prettierd'
pretzel:
_app: Pretzel.app
# cask: pretzel
_bin: null
_desc: Pretzel is Mac desktop app that shows and find keyboard shortcuts based on your current app
_docs: https://github.com/amiechen/pretzel
_github: https://github.com/amiechen/pretzel
_home: https://github.com/amiechen/pretzel
_name: Pretzel
_todo: Waiting for SHASUM error on Homebrew cask to resolve
prezi-video:
_app: Prezi Video.app
_bin: prezi-video
_github: false
_name: Prezi Video
cask: prezi-video
privaxy:
_app: Privaxy.app
_bin: privaxy
_desc: Privaxy is the next generation tracker and advertisement blocker. It blocks ads and trackers by MITMing HTTP(s) traffic.
_docs: false
_github: https://github.com/Barre/privaxy
_home: false
_name: Privaxy
appimage: barre/privaxy
apt: https://github.com/Barre/privaxy/releases/download/v0.5.2/privaxy_0.5.2_amd64.deb
script:darwin: curl -sSL https://github.com/Barre/privaxy/releases/download/v0.5.2/Privaxy_0.5.2_universal.dmg > /tmp/Privaxy.dmg && sudo hdiutil attach /tmp/Privaxy.dmg && sudo cp -R /Volumes/Privaxy/Privaxy.app /Applications && sudo hdiutil detach /Volumes/Privaxy && rm -f /tmp/Privaxy.dmg
privileges:
_app: Privileges.app
_bin: privileges
_github: https://github.com/SAP/macOS-enterprise-privileges
_name: Privileges
cask: privileges
privoxy:
_bin: privoxy
_desc: Privoxy is a non-caching web proxy with advanced filtering capabilities for enhancing privacy, modifying web page data and HTTP headers, controlling access, and removing ads and other obnoxious Internet junk
_docs: https://www.privoxy.org/user-manual/index.html
_github: https://github.com/unisx/privoxy
_groups:
- privoxy
_home: https://www.privoxy.org/
_name: Privoxy
_post: "#!/usr/bin/env bash\n# @file Privoxy Configuration\n# @brief This script applies the Privoxy configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config` to the system and then restarts Privoxy\n# @description\n# Privoxy is a web proxy that can be combined with Tor to provide an HTTPS / HTTP proxy that can funnel all traffic\n# through Tor. This script:\n#\n# 1. Determines the system configuration file location\n# 2. Applies the configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config`\n# 3. Enables and restarts the Privoxy service with the new configuration\n#\n# ## Links\n#\n# * [Privoxy configuration](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_config/privoxy/config)\n\n### Define the Privoxy configuration location based on whether system is macOS or Linux\nif [ -d /Applications ] && [ -d /System ]; then\n ### macOS\n if [ -d \"/usr/local/etc/privoxy\" ]; then\n PRIVOXY_CONFIG_DIR=/usr/local/etc/privoxy\n elif [ -d \"${HOMEBREW_PREFIX:-/opt/homebrew}/etc/privoxy\" ]; then\n PRIVOXY_CONFIG_DIR=\"${HOMEBREW_PREFIX:-/opt/homebrew}/etc/privoxy\"\n else\n logg warn 'Unable to detect Privoxy configuration directory'\n fi\nelse\n ### Linux\n PRIVOXY_CONFIG_DIR=/etc/privoxy\nfi\nPRIVOXY_CONFIG=\"$PRIVOXY_CONFIG_DIR/config\"\n\n### Copy Privoxy configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config` to the system location\nif command -v privoxy > /dev/null; then\n if [ -d \"$PRIVOXY_CONFIG_DIR\" ]; then\n sudo cp -f \"${XDG_CONFIG_HOME:-HOME/.config}/privoxy/config\" \"$PRIVOXY_CONFIG\"\n sudo chmod 600 \"$PRIVOXY_CONFIG\"\n if command -v add-usergroup > /dev/null; then\n sudo add-usergroup \"$USER\" privoxy\n fi\n sudo chown privoxy:privoxy \"$PRIVOXY_CONFIG\" 2> /dev/null || sudo chown privoxy:$(id -g -n) \"$PRIVOXY_CONFIG\"\n \n ### Restart Privoxy after configuration is applied\n if [ -d /Applications ] && [ -d /System ]; then\n ### macOS\n brew services restart privoxy\n else\n if [[ ! \"$(test -d /proc && grep Microsoft /proc/version > /dev/null)\" ]]; then\n ### Linux\n sudo systemctl enable privoxy\n sudo systemctl restart privoxy\n else\n logg info 'The system is a WSL environment so the Privoxy systemd service will not be enabled / restarted'\n fi\n fi\n else\n logg warn 'The '\"$PRIVOXY_CONFIG_DIR\"' directory is missing'\n fi\nelse\n logg logg 'privoxy is missing from the PATH - skipping configuration'\nfi\n"
_service: privoxy
_serviceEnabled: true
apt: privoxy
brew: privoxy
dnf: privoxy
pacman: privoxy
port: privoxy
procs:
_bin: procs
_desc: A modern replacement for ps written in Rust
_github: https://github.com/dalance/procs
_name: procs
apk: procs
brew: procs
cargo: procs
dnf: procs
github: github.com/dalance/procs
pacman: procs
scoop: procs
snap: procs
profilecreator:
_app: ProfileCreator.app
_bin: null
_desc: Profile manifest creator GUI for macOS
_docs: https://github.com/ProfileCreator/ProfileCreator
_github: https://github.com/ProfileCreator/ProfileCreator
_home: https://github.com/ProfileCreator/ProfileCreator
_name: Profile Creator
cask: profilecreator
mas: 2141249187
progress:
_bin: progress
_github: https://github.com/Xfennec/progress
_name: Progress
apt: progress
brew: progress
dnf: progress
pacman: progress
port: progress
zypper: progress
projen:
_bin: projen
_github: https://github.com/projen/projen
_name: Projen
npm: projen
protonmail-bridge:
_app: Proton Mail Bridge.app
_github: https://github.com/ProtonMail/proton-bridge
_bin: protonmail-bridge
cask: protonmail-bridge
choco: protonmailbridge
flatpak: ch.protonmail.protonmail-bridge
yay: protonmail-bridge
protonmail-import-export:
_app: ProtonMail Import-Export app.app
_bin: protonmail-import-export
_github: false
cask: protonmail-import-export
flatpak: ch.protonmail.protonmail-import-export-app
protonvpn:
_app: ProtonVPN.app
_bin: protonvpn
_desc: '[Proton](https://www.proton.org/) is a free and open-source raster graphics editor used for image manipulation and image editing, free-form drawing, transcoding between different image file formats, and more specialized tasks. Proton is released under GPLv3+ license and is available for Linux, macOS, and Microsoft Windows.'
_docs: https://protonmail.com/support/
_github: https://github.com/ProtonVPN/linux-app
_home: https://protonmail.com/
_name: ProtonVPN
_post:dnf:fedora: |
#!/usr/bin/env bash
sudo dnf install -y python3-pip && pip3 install --user 'dnspython>=1.16.0'
_post:yay: |
#!/usr/bin/env bash
sudo pacman -Syu libappindicator-gtk3 gnome-shell-extension-appindicator
_pre:apt: |
#!/usr/bin/env bash
sudo apt-get install -y https://repo.protonvpn.com/debian/dists/stable/main/binary-all/protonvpn-stable-release_1.0.3_all.deb && sudo apt-get update
_pre:dnf: |
#!/usr/bin/env bash
sudo dnf install -y https://repo.protonvpn.com/fedora-36-stable/release-packages/protonvpn-stable-release-1.0.1-1.noarch.rpm && sudo dnf update
# ansible: professormanhattan.proton
apt:
- gir1.2-appindicator3-0.1
- gnome-shell-extension-appindicator
- protonvpn
cask: protonvpn
choco: protonvpn
dnf:fedora:
- gnome-extensions-app
- gnome-shell-extension-appindicator
- gnome-tweaks
- libappindicator-gtk3
- protonvpn
yay: protonvpn
protonvpn-cli:
_bin: protonvpn
_github: https://github.com/ProtonVPN/linux-cli
_deps:script:darwin:
- dialog
- openvpn
_desc: The ProtonVPN CLI official release for Linux along with an unofficial ProtonVPN CLI for macOS
_name: ProtonVPN CLI
_todo: Populate this once the ProtonVPN CLI is released to the package managers
apt: protonvpn-cli
dnf: protonvpn-cli
pacman: protonvpn-cli
script:darwin: |
sudo rm -rf /usr/local/src/protonvpn-cli
sudo git clone https://github.com/phx/protonvpn-cli-macos /usr/local/src/protonvpn-cli
cd /usr/local/src/protonvpn-cli && pip3 install -r requirements.txt
sudo python3 setup.py install
provisionql:
_github: https://github.com/ealeksandrov/ProvisionQL
_name: ProvisionQL
_when:cask: '! test -d "$HOME/Library/QuickLook/ProvisionQL.qlgenerator"'
cask: provisionql
proxyman:
_app: Proxyman.app
_bin: proxyman-cli
_github: https://github.com/ProxymanApp/Proxyman
_name: Proxyman
cask: proxyman
psi:
_bin: psi
_desc: Run mobile and desktop performance tests for your deployed site using Google PageSpeed Insights v5 with tidy reporting for your build process
_github: https://github.com/GoogleChromeLabs/psi
_name: psi
npm: psi
psscriptanalyzer:
_bin: psscriptanalyzer
_github: https://github.com/PowerShell/PSScriptAnalyzer
_name: PSScriptAnalyzer
choco: psscriptanalyzer
psu:
_bin: portainer-stack-utils
_desc: CLI client for Portainer
_docs: https://github.com/greenled/portainer-stack-utils
_github: https://github.com/greenled/portainer-stack-utils
_home: https://hub.docker.com/r/greenled/portainer-stack-utils/
_name: psu
go: github.com/greenled/portainer-stack-utils@master
pueue:
_bin: pueue
_github: https://github.com/Nukesor/pueue
_name: Pueue
_service: pueue
apk: pueue
apt: pueue
brew: pueue
cargo: pueue --locked
dnf: pueue
pacman: pueue
pulumi:
_bin: pulumi
_desc: Pulumi - Infrastructure as Code in any programming language. Build infrastructure intuitively on any cloud using familiar languages
_docs: https://www.pulumi.com/docs/quickstart/
_github: https://github.com/pulumi/pulumi
_home: https://www.pulumi.com/
_name: Pulumi
brew: pulumi/tap/pulumi
choco: pulumi
pup:
_bin: pup
_desc: '[pup](https://github.com/ericchiang/pup) is a command line tool for processing HTML. It reads from stdin, prints to stdout, and allows the user to filter parts of the page using CSS selectors.'
_github: https://github.com/ericchiang/pup
_name: pup
ansible: professormanhattan.pup
brew: pup
github: github.com/ericchiang/pup
go: github.com/ericchiang/pup@latest
pushpin:
_bin: pushpin
_github: https://github.com/fastly/pushpin
_name: Pushpin
brew: pushpin
pv:
_bin: pv
_github: https://github.com/icetee/pv
apt: pv
pwnat:
_bin: pwnat
_github: https://github.com/samyk/pwnat
_name: pwnat
brew: pwnat
python:
_bin: python3
_github: https://github.com/python/cpython
_post:brew: |
#!/usr/bin/env bash
python3 -m pip install --upgrade setuptools
python3 -m pip install --upgrade pip
apt: python3-pip
brew: python
dnf: python3-pip
pacman: python-pip
scoop: python
python2:
_bin: python2
_github: false
apt: python2
# Prepare an alternate method for installing python2 on macOS - python2 package no longer works
# brew: python2
choco: python2
dnf: python2
pacman: python2
scoop: python2
pywhat:
_bin: what
_desc: Identify anything. pyWhat easily lets you identify emails, IP addresses, and more. Feed it a .pcap file or some text and it'll tell you what it is!
_github: https://github.com/bee-san/pyWhat
brew: pywhat
pipx: pywhat
port: pywhat
pywin32:
_bin: pywin32
_github: https://github.com/mhammond/pywin32
_name: Pywin32
pipx:windows: pywin32
qbittorrent:
_app: qBittorrent.app
_bin: qbittorrent
_desc: '[qBittorrent](https://www.qbittorrent.org/) is a cross-platform free and open-source BitTorrent client. qBittorrent is a native application written in C++. It uses Boost, Qt 5 toolkit, and libtorrent-rasterbar library. Its optional search engine is written in Python.'
_docs: https://github.com/qbittorrent/qBittorrent/wiki
_github: https://github.com/qbittorrent/qBittorrent
_home: https://www.qbittorrent.org/
_name: qBittorrent
ansible: professormanhattan.qbittorrent
apt: qbittorrent
cask: qbittorrent
choco: qbittorrent
dnf: qbittorrent
flatpak: org.qbittorrent.qBittorrent
pacman: qbittorrent
yay: qbittorrent-git
qlcolorcode:
_github: https://github.com/n8gray/QLColorCode
_name: QLColorCode
_when:cask: '! test -d "$HOME/Library/QuickLook/QLColorCode.qlgenerator"'
cask: qlcolorcode
qlmarkdown:
_github: https://github.com/toland/qlmarkdown
_name: QLMarkdown
_when:cask: '! test -d "$HOME/Library/QuickLook/ProvisionQL.qlgenerator"'
cask: qlmarkdown
qlplugins:
_bin: null
_github: false
_deps:
- provisionql
- qlcolorcode
- qlmarkdown
- qlstephen
- qlvideo
- quicklook-json
- quicklookapk
- webpquicklook
_name: null
qlstephen:
_github: https://github.com/whomwah/qlstephen
_name: QLStephen
_when:cask: '! test -d "$HOME/Library/QuickLook/QLStephen.qlgenerator"'
cask: qlstephen
qlvideo:
_github: https://github.com/Marginal/QLVideo
_name: QLVideo
_when:cask: '! test -d "$HOME/Library/QuickLook/ProvisionQL.qlgenerator"'
cask: qlvideo
quark-engine:
_bin: quark
_desc: Dig Vulnerabilities in the BlackBox (requirement of APKLabs VSCode plugin)
_docs: https://quark-engine.readthedocs.io/en/latest/index.html
_github: https://github.com/quark-engine/quark-engine
_home: https://github.com/quark-engine/quark-engine
_name: Quark-Engine
pipx: quark-engine
quasar:
_bin: null
_desc: '[Quasar](https://github.com/quasar/Quasar) is a fast and light-weight remote administration tool coded in C#. The usage ranges from user support through day-to-day administrative work to employee monitoring. Providing high stability and an easy-to-use user interface, Quasar is the perfect remote administration solution for you.'
_docs: https://github.com/quasar/Quasar/wiki
_github: https://github.com/quasar/Quasar
_home: https://github.com/quasar/Quasar
_name: Quasar
ansible:windows: professormanhattan.quasar
quickemu:
_bin: quickemu
_github: https://github.com/quickemu-project/quickemu
_pre: |
#!/usr/bin/env bash
sudo apt-add-repository ppa:flexiondotorg/quickemu && sudo apt update
apt:ubuntu: quickemu
quickgui:
_github: https://github.com/quickemu-project/quickgui
_pre: |
#!/usr/bin/env bash
sudo add-apt-repository ppa:yannick-mauray/quickgui && sudo apt update
apt:ubuntu: quickgui
quicklook-json:
_github: false
_name: QLJSON
_when:cask: '! test -d "$HOME/Library/QuickLook/QuickLookJSON.qlgenerator"'
cask: quicklook-json
quicklookapk:
_github: https://github.com/hezi/QuickLookAPK
_name: QLAPK
_when:cask: '! test -d "$HOME/Library/QuickLook/QuickLookAPK.qlgenerator"'
cask: quicklookapk
quicktype:
_bin: quicktype
_github: https://github.com/quicktype/quicktype
_name: Quicktype
npm: quicktype
ramda:
_bin: ramda
_desc: A CLI tool for processing data with functional pipelines
_docs: https://github.com/raine/ramda-cli#synopsis
_github: https://github.com/raine/ramda-cli
_home: https://github.com/raine/ramda-cli
_name: Ramda
npm: ramda-cli
rancher-cli:
_bin: rancher
_desc: The Rancher Command Line Interface (CLI) is a unified tool for interacting with your Rancher Server
_docs: https://ranchermanager.docs.rancher.com/reference-guides/cli-with-rancher/rancher-cli
_github: https://github.com/rancher/cli
_name: rancher
brew: rancher-cli
github: github.com/rancher/cli
yay: rancher-cli-bin
rancher-desktop:
_github: https://github.com/rancher-sandbox/rancher-desktop/
cask: rancher
raspberry-pi-imager:
_app: Raspberry Pi Imager.app
_bin: rpi-imager
_desc: '[Raspberry Pi Imager](https://www.raspberrypi.org/software/) is the quick and easy way to install Raspberry Pi OS and other operating systems to a microSD card, ready to use with your Raspberry Pi.'
_docs: https://www.raspberrypi.com/documentation/computers/getting-started.html
_github: https://github.com/raspberrypi/rpi-imager
_home: https://www.raspberrypi.com/software/
_name: Raspberry Pi Imager
ansible: professormanhattan.raspberryimager
cask: raspberry-pi-imager
choco: rpi-imager
dnf: rpi-imager
flatpak: org.raspberrypi.rpi-imager
snap: rpi-imager
yay: rpi-imager
raycast:
_app: Raycast.app
_bin: null
_desc: Everything you need to extend Raycast (the search provider for macOS)
_docs: https://developers.raycast.com/
_env:
RAYCAST_APPDATA:
cask: "$HOME/Library/Application Support/com.raycast.macos"
_github: https://github.com/raycast/extensions
_home: https://www.raycast.com/
_name: Raycast
cask: raycast
rclone:
_bin: rclone
_desc: '[Rclone](https://rclone.org/) is an open source, multi threaded, command line computer program to manage content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists [fifty supported backends](https://rclone.org/overview/) including S3 services and Google Drive.'
_docs: https://rclone.org/docs/
_github: https://github.com/rclone/rclone
_groups:
- rclone
_home: https://rclone.org/
_name: Rclone
_post: |
#!/usr/bin/env bash
# @file Rclone S3 Mounts
# @brief This script configures Rclone to provide several S3-compliant mounts by leveraging CloudFlare R2
# @description
# Install Doctor leverages Rclone and CloudFlare R2 to provide S3-compliant bucket mounts that allow you to retain stateful files and configurations.
# In general, these buckets are used for backing up files like your browser profiles, Docker backup files, and other files that cannot be stored as
# as code in your Install Doctor fork.
#
# This script sets up Rclone to provide several folders that are synchronized with S3-compliant buckets (using CloudFlare R2 by default).
# The script ensures required directories are created and that proper permissions are applied. This script will only run if `rclone` is
# available in the `PATH`. It also requires the user to provide `CLOUDFLARE_R2_ID` and `CLOUDFLARE_R2_SECRET` as either environment variables
# or through the encrypted repository-fork-housed method detailed in the [Secrets documentation](https://install.doctor/docs/customization/secrets).
#
# ## Mounts
#
# The script will setup five mounts by default and enable / start `systemd` services on Linux systems so that the mounts are available
# whenever the device is turned on. The mounts are:
#
# | Mount Location | Description |
# |-----------------------|-----------------------------------------------------------------------------------------------------------------------|
# | `/mnt/Private` | Private system-wide bucket used for any private files that should not be able to be accessed publicly over HTTPS |
# | `/mnt/Public` | Public system-wide bucket that can be accessed by anyone over HTTPS with the bucket's URL (provided by CloudFlare R2) |
# | N/A | Private system-wide bucket used for storing Docker-related backups / files |
# | N/A | Private system-wide bucket similar to `/mnt/Private` but intended for system file backups |
# | `$HOME/Public` | Private user-specific bucket (used for backing up application settings) |
#
# ## Permissions
#
# The system files are all assigned proper permissions and are owned by the user `rclone` with the group `rclone`. The exception to this is the
# user-specific mount which uses the user's user name and user group.
#
# ## Samba
#
# If Samba is installed, then by default Samba will create two shares that are symlinked to the `/mnt/s3-private` and `/mnt/s3-public`
# buckets. This feature allows you to easily access the two buckets from other devices in your local network. If Rclone buckets are not
# available then the Samba setup script will just create regular empty folders as shares.
#
# ## Notes
#
# * The mount services all leverage the executable found at `$HOME/.local/bin/rclone-mount` to mount the shares.
#
# ## Links
#
# * [Rclone mount script](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_local/bin/executable_rclone-mount)
# * [Rclone default configurations](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_config/rclone)
# * [Rclone documentation](https://rclone.org/docs/)
if command -v rclone > /dev/null; then
{{- if and (or (and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID"))) (env "CLOUDFLARE_R2_ID")) (or (and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET"))) (env "CLOUDFLARE_R2_SECRET")) (ne .user.cloudflare.r2 "") }}
logg info 'Removing ~/.config/rclone/rclone.conf Install Doctor managed block'
CONFIG_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/rclone/rclone.conf"
if cat "$CONFIG_FILE" | grep '# INSTALL DOCTOR MANAGED S3 START' > /dev/null; then
# TODO: Remove old block
START_LINE="$(echo `grep -n -m 1 "# INSTALL DOCTOR MANAGED S3 START" "$CONFIG_FILE" | cut -f1 -d ":"`)"
END_LINE="$(echo `grep -n -m 1 "# INSTALL DOCTOR MANAGED S3 END" "$CONFIG_FILE" | cut -f1 -d ":"`)"
if command -v gsed > /dev/null; then
gsed -i "$START_LINE,${END_LINE}d" "$CONFIG_FILE" > /dev/null
else
sed -i "$START_LINE,${END_LINE}d" "$CONFIG_FILE" > /dev/null
fi
fi
logg info 'Adding ~/.config/rclone/rclone.conf INSTALL DOCTOR managed block'
sudo tee -a "$CONFIG_FILE" > /dev/null <<EOT
# INSTALL DOCTOR MANAGED S3 START
[User-{{ .user.username}}]
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID_USER")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID_USER" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_ID_USER" -}}{{ end }}
acl = private
endpoint = {{ .user.cloudflare.r2 }}.r2.cloudflarestorage.com
provider = Cloudflare
region = auto
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET_USER")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET_USER" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET_USER" -}}{{ end }}
type = s3
# INSTALL DOCTOR MANAGED S3 END
EOT
{{- end }}
sudo chown -f root "$CONFIG_FILE"
sudo chmod -f 600 "$CONFIG_FILE"
logg info 'Ensuring /var/cache/rclone exists'
sudo mkdir -p /var/cache/rclone
sudo chmod 750 /var/cache/rclone
### Add user / group with script in ~/.local/bin/add-usergroup, if it is available
if command -v add-usergroup > /dev/null; then
sudo add-usergroup "$USER" rclone
fi
sudo chown -Rf rclone:rclone /var/cache/rclone
logg info 'Ensuring /var/log/rclone exists'
sudo mkdir -p /var/log/rclone
sudo chmod 750 /var/log/rclone
sudo chown -Rf rclone:rclone /var/log/rclone
logg info 'Adding ~/.local/bin/rclone-mount to /usr/local/bin'
sudo cp -f "$HOME/.local/bin/rclone-mount" /usr/local/bin/rclone-mount
sudo chmod +x /usr/local/bin/rclone-mount
logg info 'Adding ~/.config/rclone/rcloneignore to /etc/rcloneignore'
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/rclone/rcloneignore" /etc/rcloneignore
sudo chown -Rf rclone:rclone /etc/rcloneignore
sudo chmod 640 /etc/rcloneignore
logg info 'Adding ~/.config/rclone/system-rclone.conf to /etc/rclone.conf'
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/rclone/system-rclone.conf" /etc/rclone.conf
sudo chown -Rf rclone:rclone /etc/rclone.conf
sudo chmod 600 /etc/rclone.conf
if [ -d /Applications ] && [ -d /System ]; then
### Enable Rclone mounts
logg info 'Ensuring Rclone mount-on-reboot definitions are in place'
if [ -f "$HOME/Library/LaunchDaemons/rclone.private.plist" ] && [ ! -f "/Library/LaunchDaemons/rclone.private.plist" ]; then
logg info 'Adding /Volumes/Private as S3 bucket mount, enabled at boot'
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/rclone.private.plist" '/Library/LaunchDaemons/rclone.private.plist'
sudo launchctl load '/Library/LaunchDaemons/rclone.private.plist' && logg success 'launchctl load successful'
fi
if [ -f "$HOME/Library/LaunchDaemons/rclone.public.plist" ] && [ ! -f "/Library/LaunchDaemons/rclone.public.plist" ]; then
logg info 'Adding /Volumes/Public as S3 bucket mount, enabled at boot'
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/rclone.public.plist" '/Library/LaunchDaemons/rclone.public.plist'
sudo launchctl load '/Library/LaunchDaemons/rclone.public.plist' && logg success 'launchctl load successful'
fi
if [ -f "$HOME/Library/LaunchDaemons/rclone.user.plist" ] && ! launchctl list | grep 'rclone.user' > /dev/null; then
logg info 'Adding ~/Public as S3 bucket mount, enabled at boot'
launchctl load "$HOME/Library/LaunchDaemons/rclone.user.plist" && logg success 'user launchctl load successful'
fi
elif [ -d /etc/systemd/system ]; then
find "${XDG_CONFIG_HOME:-$HOME/.config}/rclone/system" -mindepth 1 -maxdepth 1 -type f | while read RCLONE_SERVICE; do
### Add systemd service file
logg info "Adding S3 system mount service defined at $RCLONE_SERVICE"
FILENAME="$(basename "$RCLONE_SERVICE")"
SERVICE_ID="$(echo "$FILENAME" | sed 's/.service//')"
sudo cp -f "$RCLONE_SERVICE" "/etc/systemd/system/$(basename "$RCLONE_SERVICE")"
### Ensure mount folder is created
logg info "Ensuring /mnt/$SERVICE_ID is created with proper permissions"
sudo mkdir -p "/mnt/$SERVICE_ID"
sudo chmod 750 "/mnt/$SERVICE_ID"
### Enable / restart the service
logg info "Enabling / restarting the $SERVICE_ID S3 service"
sudo systemctl enable "$SERVICE_ID"
sudo systemctl restart "$SERVICE_ID"
done
### Add user Rclone mount
logg info 'Adding user S3 rclone mount (available at ~/.local/mnt/s3)'
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/rclone/s3-user.service" "/etc/systemd/system/s3-${USER}.service"
logg info 'Enabling / restarting the S3 user mount'
sudo systemctl enable "s3-${USER}"
sudo systemctl restart "s3-${USER}"
fi
else
logg info 'rclone is not available'
fi
ansible: professormanhattan.rclone
apt: rclone
brew:linux: rclone
choco:
- rclone
- winfsp
- nssm
dnf: rclone
pacman: rclone
port: rclone
scoop: rclone
script:darwin: |
#!/usr/bin/env bash
TMP="$(mktemp)"
curl https://rclone.org/install.sh > "$TMP"
sudo bash "$TMP"
rm -f "$TMP"
recoverpy:
_bin: recoverpy
_deps:
- coreutils
- grep
- progress
- util-linux
_desc: '[RecoverPy](https://github.com/PabloLec/RecoverPy) is a powerful tool that leverages your system capabilities to recover lost file. Unlike others, you can not only recover deleted files but also overwritten data.'
_docs: https://github.com/PabloLec/RecoverPy#usage
_github: https://github.com/PabloLec/RecoverPy
_home: https://github.com/PabloLec/RecoverPy
_name: RecoverPy
_when: echo '! pip3 list | grep recoverpy > /dev/null' | bash
ansible:linux: professormanhattan.recoverpy
script:linux: python3 -m pip install recoverpy
recuva:
_bin: recuva
_desc: Recuva recovers files from your Windows computer, recycle bin, digital camera card, or MP3 player!
_docs: https://www.ccleaner.com/recuva
_github: false
_home: https://www.ccleaner.com/recuva
_name: Recuva
choco: recuva
scoop: extras/recuva
redis-desktop-manager:
_bin: redis-desktop-manager
_desc: '[Redis Desktop Manager](https://rdm.dev/) is an open source cross-platform Desktop Manager for Redis based on Qt 5.'
_docs: https://docs.rdm.dev/en/docs-fix-edit-url/
_github: https://github.com/uglide/RedisDesktopManager
_home: https://resp.app/
_name: Redis Desktop Manager
ansible:linux: professormanhattan.rdm
flatpak: app.resp.RESP
snap: redis-desktop-manager
redis-insight:
_app: RedisInsight.app
_bin: redis-insight
_github: https://github.com/RedisInsight/RedisInsight
_name: Redis Insight
cask: redisinsight
flatpak: com.redis.RedisInsight
mas: 2142946629
reek:
_bin: reek
_github: https://github.com/troessner/reek
_name: Reek
gem: reek
remmina:
_bin: remmina
_github: https://github.com/FreeRDP/Remmina
_desc: Remmina is a GTK Remmina Remote Desktop Client which provides remote access, screen and file sharing to your desktop
_docs: https://gitlab.com/Remmina/Remmina/-/wikis/home
_env:
REMMINA_APPDATA:
flatpak: "$HOME/.var/app/org.remmina.Remmina/config/remmina/remmina.pref"
snap: "$HOME/snap/remmina/current/.config/remmina/remmina.pref"
_home: https://remmina.org/
_name: Remmina
apt: remmina
dnf: remmina
flatpak: org.remmina.Remmina
pacman: remmina
snap: remmina
yay: remmina-git
remote-desktop:
_github: false
_deps:
- gnome-boxes
- microsoft-remote-desktop
- remmina
- xrdp
repo:
_bin: repo
_github: false
_name: Repo
apt: repo
brew: repo
dnf: repo
pacman: repo
# TODO: Include Windows install method
responsively:
_app: ResponsivelyApp.app
_bin: null
_desc: A modified web browser that helps in responsive web development
_github: https://github.com/responsively-org/responsively-app
_name: Responsively
cask: responsively
choco: responsively
github: github.com/responsively-org/responsively-app
restic:
_bin: restic
_desc: '[Restic](https://restic.net/) is a modern backup program that can back up your files from Linux, BSD, Mac and Windows to many different storage types, including self-hosted and online services. It is a single executable that you can run without a server or complex setup. It can be used to only back-up the parts of files that actually changed. It uses cryptography in every part of the process. Restic is entirely free to use and completely open source.'
_docs: https://restic.readthedocs.io/en/latest/
_github: https://github.com/restic/restic
_home: https://restic.net/
_name: Restic
ansible: professormanhattan.restic
apk: restic
apt: restic
brew: restic
dnf: restic
eopkg: restic
nix: restic
pacman: restic
pkg-freebsd: restic
pkg_add: restic
port: restic
scoop: restic
zypper: restic
resume:
_bin: resume
_desc: CLI tool to easily setup a new resume
_docs: https://jsonresume.org/getting-started/
_github: https://github.com/jsonresume/resume-cli
_home: https://jsonresume.org/
_name: JSON Resume CLI
npm: resume-cli
ripgrep:
_bin: rg
_desc: '[ripgrep](https://github.com/BurntSushi/ripgrep) is a line-oriented search tool that recursively searches your current directory for a regex pattern. By default, ripgrep will respect your .gitignore and automatically skip hidden files/directories and binary files. This role also installs ripgrep-all. [ripgrep-all](https://github.com/phiresky/ripgrep-all) is just like ripgrep except it also searches in PDFs, E-Books, Office documents, zip, tar.gz, etc.'
_github: https://github.com/BurntSushi/ripgrep
_name: ripgrep
ansible: professormanhattan.ripgrep
apt: ripgrep
brew: ripgrep
cargo: ripgrep
choco: ripgrep
dnf: ripgrep
nix: ripgrep
pacman: ripgrep
pkg: ripgrep
port: ripgrep
scoop: ripgrep
zypper: ripgrep
ripgrep-all:
_bin: rga
_desc: rga is a line-oriented search tool that allows you to look for a regex in a multitude of file types. rga wraps the awesome ripgrep and enables it to search in pdf, docx, sqlite, jpg, movie subtitles (mkv, mp4), etc.
_github: https://github.com/phiresky/ripgrep-all
brew:
- ffmpeg
- pandoc
- poppler
- rga
- tesseract
choco: ripgrep-all
nix: ripgrep-all
pacman: ripgrep-all
rkhunter:
_bin: rkhunter
_desc: rkhunter is a Unix-based tool that scans for rootkits, backdoors and possible local exploits
_home: https://rkhunter.sourceforge.net/
_name: rkhunter
_github: false
_notes: The _post script removes an entry for VMware with a space in it that causes rkhunter to hiccup
_post: |
#!/usr/bin/env bash
if [ -d /Applications ] && [ -d /System ]; then
### macOS
logg info 'Updating file "$(brew --prefix)/Cellar/rkhunter/1.4.6/etc/rkhunter.conf"' && gsed -i "s/^#WEB_CMD.*$/WEB_CMD=curl\ -L/" "$(brew --prefix)/Cellar/rkhunter/1.4.6/etc/rkhunter.conf"
else
### Linux
logg info 'Updating file /etc/rkhunter.conf' && sed -i "s/^#WEB_CMD.*$/WEB_CMD=curl\ -L/" /etc/rkhunter.conf
fi
export PATH="$(echo "$PATH" | sed 's/VMware Fusion.app/VMwareFusion.app/')"
sudo rkhunter --propupd || RK_PROPUPD_EXIT_CODE=$?
if [ -n "$RK_PROPUPD_EXIT_CODE" ]; then
echo "FIXME sudo rkhunter --propupd returned non-zero exit code"
fi
sudo rkhunter --update || RK_UPDATE_EXIT_CODE=$?
if [ -n "$RK_UPDATE_EXIT_CODE" ]; then
echo "FIXME sudo rkhunter --update returned non-zero exit code"
fi
_service:pacman: cronie
apt: rkhunter
brew: rkhunter
dnf: rkhunter
pacman:
- cronie
- rkhunter
- s-nail
rm-improved:
_bin: rip
_desc: A safe and ergonomic alternative to rm
_docs: https://github.com/nivekuil/rip
_github: https://github.com/nivekuil/rip
_home: https://github.com/nivekuil/rip
_name: rip (Rm ImProved)
brew: rm-improved
cargo: rm-improved
github: github.com/nivekuil/rip
yay: rm-improved
robotframework:
_bin: robot
_desc: Generic automation framework for acceptance testing and RPA
_docs: https://robotframework.org/robotframework/#user-guide
_github: https://github.com/robotframework/robotframework
_home: https://robotframework.org/
_name: Robot Framework
pipx: robotframework
rofi:
_bin: rofi
_desc: Rofi is a window switcher, application launcher and dmenu replacement
_docs: https://davatorium.github.io/rofi/
_github: https://github.com/davatorium/rofi
_home: https://davatorium.github.io/rofi/
_name: rofi
apt: rofi
dnf:fedora: rofi
pacman: rofi
pkg: rofi
port: rofi
zypper: rofi
rsync:
_bin: rsync
_desc: rsync is an open source utility that provides fast incremental file transfer.
_docs: https://rsync.samba.org/documentation.html
_github: https://github.com/WayneD/rsync
_home: https://rsync.samba.org/
_name: rsync
apt: rsync
brew: rsync
choco: rsync
dnf: rsync
rsyslog:
_bin: rsyslogd
_github: https://github.com/rsyslog/rsyslog
_name: RSyslog
_ports:
- port: 514
proto: tcp
_service: rsyslog
apt: rsyslog
brew: rsyslog
dnf: rsyslog
pacman: rsyslog
rtop:
_bin: rtop
_github: https://github.com/rapidloop/rtop
_name: rtop
go: github.com/rapidloop/rtop@latest
rubocop:
_bin: rubocop
_github: https://github.com/rubocop/rubocop
_name: Rubocop
gem: rubocop
ruby:
_bin: ruby
_desc: Ruby is an interpreted, high-level, general-purpose programming language which supports multiple programming paradigms. It was designed with an emphasis on programming productivity and simplicity. In Ruby, everything is an object, including primitive data types. It was developed in the mid-1990s in Japan.
_docs: https://www.ruby-lang.org/en/documentation/
_github: https://github.com/ruby/ruby
_home: https://www.ruby-lang.org/en/
_name: Ruby
ansible: professormanhattan.ruby
apt: ruby-dev
brew: ruby
choco: ruby
dnf: ruby-devel
pacman: ruby
port: ruby
scoop: ruby
ruff:
_bin: ruff
_desc: An extremely fast Python linter, written in Rust.
_docs: https://beta.ruff.rs/docs/
_github: https://github.com/charliermarsh/ruff
_home: https://beta.ruff.rs/docs/
_name: Ruff
apk: ruff
brew: ruff
pacman: ruff
pipx: ruff
runitor:
_bin: runitor
_github: https://github.com/bdd/runitor
_name: Runitor
go: bdd.fi/x/runitor/cmd/runitor@latest
runjs:
_app: RunJS.app
_bin: null
_desc: A JavaScript playground that auto-evaluates as you type
_github: https://github.com/lukehaas/RunJS
_name: RunJS
cask: runjs
choco: runjs
github: github.com/lukehaas/RunJS
yay: runjs-bin
rust:
_bin: rustc
_desc: '[Rust](https://www.rust-lang.org/) is a multi-paradigm programming language designed for performance and safety, especially safe concurrency.'
_docs: https://www.rust-lang.org/learn
_github: https://github.com/rust-lang/rust
_home: https://www.rust-lang.org/
_name: Rust
_post:snap: |
#!/usr/bin/env bash
rustup toolchain install stable
ansible: professormanhattan.rust
brew: rust
choco: rust
dnf:
- cargo
- rust
pacman: rust
port:
- cargo
- rust
scoop: rust
script:darwin: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
script:linux: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
rustdesk:
_app: RustDesk.app
_bin: rustdesk
_desc: Open source virtual / remote desktop infrastructure for everyone! The open source TeamViewer alternative. Display and control your PC and Android devices from anywhere at anytime.
_docs: https://rustdesk.com/docs/en/
_github: https://github.com/rustdesk/rustdesk
_home: https://rustdesk.com/
_name: RustDesk
apt: https://github.com/rustdesk/rustdesk/releases/download/1.1.9/rustdesk-1.1.9.deb
cask: rustdesk
choco: rustdesk
dnf: https://github.com/rustdesk/rustdesk/releases/download/1.1.9/rustdesk-1.1.9-fedora28-centos8.rpm
pacman: rustdesk
scoop: rustdesk
zypper: https://github.com/rustdesk/rustdesk/releases/download/1.1.9/rustdesk-1.1.9-suse.rpm
rustscan:
_bin: rustscan
_desc: An Nmap-based port scanner that scans all 65k ports in 3 seconds
_docs: https://rustscan.github.io/RustScan/
_github: https://github.com/RustScan/RustScan
_home: https://github.com/RustScan/RustScan
_name: RustScan
brew: rustscan
yay: rustscan
rusty:
_bin: rusty
_github: https://github.com/zahidkhawaja/rusty
_name: Rusty AI CLI
_todo: Get cargo crate link once this is resolved https://github.com/zahidkhawaja/rusty/issues/7
s-search:
_bin: s
_desc: Open a web search in your terminal.
_docs: https://github.com/zquestz/s
_github: https://github.com/zquestz/s
_home: https://github.com/zquestz/s
_name: s
brew: s-search
s5cmd:
_bin: s5cmd
_desc: '[s5cmd](https://github.com/peak/s5cmd) is a very fast S3 and local filesystem execution tool. It comes with support for a multitude of operations including tab completion and wildcard support for files, which can be very handy for your object storage workflow while working with large number of files. s5cmd is the fastest way of interacting with S3 buckets because it can utilize multiple threads unlike similar tools.'
_github: https://github.com/peak/s5cmd
_name: s5cmd
ansible: professormanhattan.s5cmd
brew: peak/tap/s5cmd
github: github.com/peak/s5cmd
go: github.com/peak/s5cmd@latest
sad:
_bin: sad
_desc: sad is a Batch File Edit tool. It will show you a really nice diff of proposed changes before you commit them
_github: https://github.com/ms-jpq/sad
brew: ms-jpq/sad/sad
pacman: sad
safe-rm:
_bin: safe-rm
_github: https://github.com/kaelzhang/shell-safe-rm
_name: safe-rm
npm: safe-rm
sake:
_bin: sake
_desc: Sake is a task runner for local and remote hosts
_docs: https://sakecli.com/examples
_github: https://github.com/alajmo/sake
_home: https://sakecli.com/
_name: Sake
brew: alajmo/sake/sake
go: github.com/alajmo/sake@latest
script:darwin: curl -sfL https://raw.githubusercontent.com/alajmo/sake/main/install.sh | sh
script:linux: curl -sfL https://raw.githubusercontent.com/alajmo/sake/main/install.sh | sh
samba:
_bin: smbd
_bin:dnf: smb
_desc: '[Samba](https://www.samba.org/) is a free and open-source software that allows files to be shared across Windows and Linux systems simply and easily. To be exact, it is an open-source implementation of the SMB/CIFS protocol.'
_docs: https://www.samba.org/samba/docs/
_github: https://github.com/samba-team/samba
_groups:
- sambausers
_home: https://www.samba.org/
_name: Samba
_post: |
#!/usr/bin/env bash
# @file Samba Configuration
# @brief This script configures Samba by applying the configuration stored in `${XDG_DATA_HOME:-$HOME/.config}/samba/config` if the `smbd` application is available
# @description
# This script applies the Samba configuration stored in `${XDG_DATA_HOME:-$HOME/.config}/samba/config` if Samba is installed.
# The script and default configuration set up two Samba shares.
#
# ## Security
#
# Both shares are configured by default to only accept connections
# from hosts with DNS that ends in `.local.PUBLIC_SERVICES_DOMAIN`, where `PUBLIC_SERVICES_DOMAIN` is an environment variable that
# can be passed into Install Doctor. So, if your `PUBLIC_SERVICES_DOMAIN` environment variable is set to `megabyte.space`, then
# a device with a FQDN of `alpha.local.megabyte.space` pointing to its LAN location will be able to connect but a device
# with a FQDN of `alpha.megabyte.space` will not be able to connect.
#
# ## Samba Shares / S3 Backup
#
# If CloudFlare R2 credentials are provided, Samba is configured to store its shared files in the Rclone mounts so that your
# Samba shares are synchronized to the S3 buckets. If not, new folders are created. Either way, the folder / symlink that the
# shares host data from are stored at `/mnt/Private` and `/mnt/Public` (*Note: Different paths are used on macOS*).
#
# 1. The **public** share (named "Public") can be accessed by anyone (including write permissions with the default settings)
# 2. The **private** share (named "Private") can be accessed by specifying the PAM credentials of anyone who has an account that is included in the `sambausers` group
#
# ## Symlinks
#
# Symlinks are disabled for security reasons. This is because, with symlinking enabled, people can create symlinks on the shares and use the symlinks to access system files outside of the
# Samba shares. There are commented-out lines in the default configuration that you can uncomment to enable the symlinks in shares.
#
# ## Printers
#
# Printer sharing is not enabled by default. There are commented lines in the default configuration that should provide a nice stepping
# stone if you want to use Samba for printer sharing (with CUPS).
#
# ## Environment Variables
#
# The following chart details some of the environment variables that are used to determine the configuration of the
# Samba shares:
#
# | Environment Variable | Description |
# |-----------------------------|-----------------------------------------------------------------------------------------------------|
# | `PUBLIC_SERVICES_DOMAIN` | Used to determine which hosts can connect to the Samba share (e.g. `.local.PUBLIC_SERVICES_DOMAIN`) |
# | `SAMBA_NETBIOS_NAME` | Determines the NetBIOS name (defaults to the `HOSTNAME` environment variable value) |
# | `SAMBA_WORKGROUP` | Controls Samba workgroup name (defaults to "BETELGEUSE") |
#
# ## Links
#
# * [Default Samba configuration](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_local/samba/config.tmpl)
# * [Secrets / Environment variables documentation](https://install.doctor/docs/customization/secrets)
### Configure Samba server
if command -v smbd > /dev/null; then
# Add user / group with script in ~/.local/bin/add-usergroup, if it is available
if command -v add-usergroup > /dev/null; then
sudo add-usergroup "$USER" rclone
fi
### Define share locations
if [ -d /Applications ] && [ -d /System ]; then
### macOS does not have `/mnt` folder so use `/Volumes` location
MNT_FOLDER='Volumes'
else
MNT_FOLDER='mnt'
fi
PRIVATE_SHARE="/$MNT_FOLDER/Private"
PUBLIC_SHARE="/$MNT_FOLDER/Public"
logg info "Ensuring $PRIVATE_SHARE is created"
sudo mkdir -p "$PRIVATE_SHARE"
sudo chmod 750 "$PRIVATE_SHARE"
sudo chown -Rf root:rclone "$PRIVATE_SHARE"
logg info "Ensuring $PUBLIC_SHARE is created"
sudo mkdir -p "$PUBLIC_SHARE"
sudo chmod 755 "$PUBLIC_SHARE"
sudo chown -Rf root:rclone "$PUBLIC_SHARE"
logg info "Ensuring $HOME/Public is created"
mkdir -p "$HOME/Public"
chmod 755 "$HOME/Public"
chown -Rf "$USER":rclone "$HOME/Public"
### Copy the Samba server configuration file
if [ -d /Applications ] && [ -d /System ]; then
sudo sharing -a "$PRIVATE_SHARE" -S "Private (System)" -n "Private (System)" -g 000 -s 001 -E 1 -R 1 && logg success "Configured $PRIVATE_SHARE as a private Samba share" || logg info 'sharing command failed - it is likely that the share was already set up'
sudo sharing -a "$PUBLIC_SHARE" -S "Public (System)" -n "Public (System)" -g 001 -s 001 -E 1 -R 0 && logg success "Configured $PUBLIC_SHARE as a public Samba share" || logg info 'sharing command failed - it is likely that the share was already set up'
sudo sharing -a "$HOME/Public" -S "Public (User)" -n "Public (User)" -g 001 -s 001 -E 1 -R 0 && logg success "Configured $HOME/Public as a public Samba share" || logg info 'sharing command failed - it is likely that the share was already set up'
else
logg info "Copying Samba server configuration to /etc/samba/smb.conf"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/samba/config" "/etc/samba/smb.conf"
### Reload configuration file changes
logg info 'Reloading the smbd config'
smbcontrol smbd reload-config
fi
else
logg info "Samba server is not installed"
fi
_service: smbd
_service:dnf: smb
apt: samba
brew: samba
dnf: samba
pacman: samba
port: samba4
sanoid:
_bin: sanoid
_deps:
- pv
_desc: '[Sanoid](https://github.com/jimsalterjrs/sanoid/) is a free and open source snapshot management tool. Sanoid is a policy-driven snapshot management tool for ZFS filesystems. When combined with the Linux KVM hypervisor, you can use it to make your systems functionally immortal.'
_github: https://github.com/jimsalterjrs/sanoid/
_name: Sanoid
# Only install Sanoid when there are ZFS shares listed in the command `zfs list`
_when:linux: command -v zfs > /dev/null && ! zfs list
ansible:linux: professormanhattan.sanoid
apt:
- libcapture-tiny-perl
- libconfig-inifiles-perl
- libdata-dump-perl
# Unavailable on Ubuntu 22.04
# - mhash2
- sanoid
santa:
_bin: santactl
_desc: A binary authorization system for MacOS (santa) role is a daemon that makes execution decisions based on the contents of a local database, a GUI agent that notifies the user in case of a block decision and a command-line utility for managing the system and synchronizing the database with a server.
_docs: https://santa.dev/
_github: https://github.com/google/santa
_home: https://santa.dev/
_name: A binary authorization system for MacOS
cask: santa
sapling:
_bin: sl
_github: https://github.com/facebook/sapling
_name: Sapling
brew: sapling
pacman: sapling-scm-bin
script:windows: |
curl -sSL https://github.com/facebook/sapling/releases/latest > ~/Downloads/sapling_windows_0.2.20231113-145254+995db0d6_amd64.zip
Expand-Archive ~/Downloads/sapling_windows_0.2.20231113-145254+995db0d6_amd64.zip 'C:\Program Files'
setx PATH "$env:PATH;C:\Program Files\Sapling" -m
Set-Alias -Name sl -Value 'C:\Program Files\Sapling\sl.exe' -Force -Option Constant,ReadOnly,AllScope
scap-security-guide:
_bin: oscap
_github: https://github.com/ComplianceAsCode/content
_name: OpenSCAP
apt:
- ssg-debderived
- ssg-applications
apt:debian:
- ssg-debian
- ssg-applications
dnf: scap-security-guide
schema:
_bin: schema
_desc: A tool to infer and instantiate schemas and translate between data formats
_github: https://github.com/Confbase/schema
_name: schema
go: github.com/Confbase/schema@latest
scrcpy:
_bin: scrcpy
_desc: '[scrcpy](https://github.com/Genymobile/scrcpy) is a free and open-source application that provides display of Android devices connected on USB (or over TCP/IP). It also allows you to control the Android device. It does not require any root access.'
_github: https://github.com/Genymobile/scrcpy
_name: scrcpy
ansible: professormanhattan.scrcpy
apt: scrcpy
brew: scrcpy
choco: scrcpy
dnf: scrcpy
github: github.com/Genymobile/scrcpy
pkg: scrcpy
snap: scrcpy
yay: scrcpy
scrcpy-gui:
_bin: scrcpy-gui
_desc: A simple & beautiful GUI application for scrcpy
_github: https://github.com/Tomotoes/scrcpy-gui
_name: Scrcpy GUI
flatpak: in.srev.guiscrcpy
sd:
_bin: sd
_desc: Intuitive find & replace CLI (sed alternative)
_github: https://github.com/chmln/sd
_name: sd
apk: sd
brew: sd
cargo: sd
choco: sd-cli
dnf:fedora: sd
github: github.com/chmln/sd
pacman: sd
pkg: sd
sddm:
_bin: sddm
_github: https://github.com/sddm/sddm
_name: SDDM
_post: |
#!/usr/bin/env bash
sudo systemctl set-default graphical.target
_service: sddm
apt: sddm
dnf: sddm
pacman: sddm
zypper: sddm
sdkman-cli:
_bin: sdk
_github: https://github.com/sdkman/sdkman-cli
_name: SDKMan
script: |
#!/usr/bin/env bash
# @file SDKMAN Install
# @brief Ensures SDKMAN is installed.
# @description
# This script ensures SDKMAN (a Java version manager) is installed using the method recommended on [their
# website](https://sdkman.io/).
### Re-source ~/.bashrc
if [ -z "$SDKMAN_DIR" ]; then
logg info 'SDKMAN_DIR is undefined so ~/.bashrc is being re-sourced' && source ~/.bashrc
fi
### SDKMan ~/.bashrc settings
if command -v brew > /dev/null && command -v sdkman-cli > /dev/null; then
export SDKMAN_DIR="$(brew --prefix sdkman-cli)/libexec"
. "$SDKMAN_DIR/bin/sdkman-init.sh"
elif [ -d "${XDG_DATA_HOME:-$HOME/.local/share}/sdkman" ]; then
export SDKMAN_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/sdkman"
. "$SDKMAN_DIR/bin/sdkman-init.sh"
else
logg logg 'Unable to find SDKMAN instance'
fi
### Ensure SDKMan is installed (https://sdkman.io/)
if [ ! -d "$SDKMAN_DIR" ]; then
logg info 'Installing SDKMan via curl -s https://get.sdkman.io?rcupdate=false'
logg info "Install directory: $SDKMAN_DIR"
curl -s "https://get.sdkman.io?rcupdate=false" | bash
if [ -f "$SDKMAN_DIR/bin/sdkman-init.sh" ]; then
. "$SDKMAN_DIR/bin/sdkman-init.sh"
logg info 'Running sdk install java' && sdk install java
else
logg warn 'SDKMAN_DIR/bin/sdkman-init.sh is missing'
fi
else
logg info 'SDKMan appears to already be installed.'
logg info 'Running sdk update'
if command -v sdk > /dev/null; then
sdk update
else
logg warn 'Unable to run sdk update because the sdk command is unavailable'
fi
fi
seafile-client:
_app: Seafile Client.app
_github: https://github.com/haiwen/seafile-client
_bin: seafile-client
_todo: Look into integration of the full Seafile stack outlined [here](https://github.com/haiwen/seafile)
cask: seafile-client
choco: seafile-client
flatpak: com.seafile.Client
search-gpt:
_bin: searchgpt
_github: https://github.com/tobiasbueschel/search-gpt
_name: Search GPT
npm: search-gpt
secretive:
_app: Secretive.app
_bin: null
_desc: Store SSH keys in the Secure Enclave
_github: https://github.com/maxgoedjen/secretive
cask: secretive
security:
_bin: null
_github: false
_desc: This role turns on auto-updates and configures sudo, for instance.
_name: Security
ansible: professormanhattan.security
semantic-release:
_bin: semantic-release
_desc: '[semantic-release](https://semantic-release.gitbook.io) automates the whole package release workflow including: determining the next version number, generating the release notes, and publishing the package'
_docs: https://semantic-release.gitbook.io
_github: https://github.com/semantic-release/semantic-release
_home: https://semantic-release.gitbook.io
_name: semantic-release
npm: semantic-release
sentry-cli:
_bin: sentry-cli
_desc: sentry-cli can connect to the Sentry API and manage some data for your projects
_github: https://github.com/getsentry/sentry-cli/
_name: sentry-cli
brew:darwin: getsentry/tools/sentry-cli
github: github.com/getsentry/sentry-cli
npm: '@sentry/cli'
scoop: sentry-cli
yay: sentry-cli-bin
serve:
_bin: serve
_desc: serve helps you serve a static site, single page application or just a static file (no matter if on your device or on the local network). It also provides a neat interface for listing the directory's contents
_github: https://github.com/vercel/serve
_name: serve
npm: serve
serverless:
_bin: serverless
_github: https://github.com/serverless/serverless
_desc: Build applications with serverless architectures
_docs: https://www.serverless.com/framework/docs
_home: https://www.serverless.com/
_name: serverless
brew: serverless
npm: serverless
sftpgo:
_bin: sftpgo
_deps:
- sftpgo-plugin-auth
_desc: Fully featured and highly configurable SFTP server with optional HTTP/S, FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob
_github: https://github.com/drakkan/sftpgo
_name: sftpgo
_post: |
#!/usr/bin/env bash
sudo mkdir -p /usr/local/etc/sftpgo
sudo cp -f "$HOME/.local/etc/sftpgo/sftpgo.json" /usr/local/etc/sftpgo/sftpgo.json
sudo cp -f "$HOME/.local/etc/sftpgo/banner" /usr/local/etc/sftpgo/banner
sudo mkdir -p /usr/local/etc/branding
sudo cp -f "$HOME/.local/etc/branding/favicon.ico" /usr/local/etc/branding/favicon.ico
sudo cp -f "$HOME/.local/etc/branding/logo-color-256x256.png" /usr/local/etc/branding/logo-color-256x256.png
sudo cp -f "$HOME/.local/etc/branding/logo-color-900x900.png" /usr/local/etc/branding/logo-color-900x900.png
sudo sftpgo initprovider
_service: sftpgo
_service:brew:
- name: sftpgo
sudo: true
_serviceEnabled: true
brew: sftpgo
choco: sftpgo
github: github.com/drakkan/sftpgo
pkg: sftpgo
yay: sftpgo-bin
sftpgo-plugin-auth:
_bin: sftpgo-plugin-auth
_desc: A plugin for SFTPGo to enable LDAP/Active Directory authentication
_github: https://github.com/sftpgo/sftpgo-plugin-auth
_name: SFTPGo Authentication Plugin
_post: |
#!/usr/bin/env bash
sudo mv -f $(which sftpgo-plugin-auth) /usr/local/bin/sftpgo-plugin-auth
go: github.com/sftpgo/sftpgo-plugin-auth@latest
share:
_bin: share
_desc: Quickly share files from your command line
_github: https://github.com/marionebl/share-cli
_name: share
npm: share-cli
sharex:
_bin: null
_desc: '[ShareX](https://getsharex.com/) is a free and open source program that lets you capture or record any area of your screen and share it with a single press of a key. It also allows uploading images, text or other types of files to many supported destinations you can choose from.'
_docs: https://getsharex.com/docs/faq
_github: https://github.com/ShareX/ShareX
_home: https://getsharex.com/
_name: ShareX
ansible:windows: professormanhattan.sharex
choco: sharex
sharp:
_bin: sharp
_desc: CLI for sharp (a Node.js image processing module)
_github: https://github.com/vseventer/sharp-cli
_name: sharp
npm: sharp-cli
shc:
_bin: shc
_desc: Shell script compiler
_docs: https://github.com/neurobin/shc
_github: https://github.com/neurobin/shc
_home: https://neurobin.org/projects/softwares/unix/shc/
_name: shc
ansible:darwin: professormanhattan.shc
ansible:linux: professormanhattan.shc
brew: shc
port: shc
shdoc:
_bin: shdoc
_deps:script:
- gawk
_desc: '[shdoc](https://github.com/reconquest/shdoc) is a tool to generate Documentation for shell scripts (bash, sh, zsh)'
_github: https://github.com/reconquest/shdoc
_name: shdoc
ansible:darwin: professormanhattan.shdoc
ansible:linux: professormanhattan.shdoc
script:darwin: cd /tmp && git clone --recursive https://github.com/reconquest/shdoc && cd shdoc && sudo make install && cd /tmp && sudo rm -rf shdoc
script:linux: cd /tmp && git clone --recursive https://github.com/reconquest/shdoc && cd shdoc && sudo make install && cd /tmp && sudo rm -rf shdoc
yay: shdoc-git
sheldon:
_bin: sheldon
_completions: sheldon completions --shell {SHELL}
_github: https://github.com/rossmacarthur/sheldon
_name: Sheldon
brew: sheldon
cargo: sheldon
shell-gpt:
_bin: sgpt
_github: https://github.com/TheR1D/shell_gpt
_name: Shell GPT
pipx: shell-gpt
shellcheck:
_bin: shellcheck
_desc: A static analysis tool for shell scripts
_docker: docker run --rm -v "$PWD:/mnt" koalaman/shellcheck:stable
_docs: https://github.com/koalaman/shellcheck/wiki/Directive
_github: https://github.com/koalaman/shellcheck
_home: https://www.shellcheck.net/
_name: Shellcheck
apt: shellcheck
brew: shellcheck
cabal: shellcheck
choco: shellcheck
dnf: shellcheck
emerge: shellcheck
eopkg: shellcheck
nix: nixpkgs.shellcheck
pacman: shellcheck
pkg-freebsd: shellcheck
pkg_add: shellcheck
port: shellcheck
scoop: shellcheck
snap: shellcheck
stack: shellcheck
zypper: shellcheck
shfmt:
_bin: shfmt
_desc: '[shfmt](https://github.com/mvdan/sh) is a shell parser, formatter, and interpreter with bash support that is written with [Go](https://gitlab.com/megabyte-labs/ansible-roles/go).'
_github: https://github.com/mvdan/sh
_home: https://pkg.go.dev/mvdan.cc/sh/v3
_name: shfmt
ansible: professormanhattan.shfmt
apk: shfmt
brew: shfmt
github: github.com/mvdan/sh
go: mvdan.cc/sh/v3/cmd/shfmt@latest
pacman: shfmt
pkg: shfmt
scoop: shfmt
snap: shfmt
shml:
_bin: shml
_github: https://github.com/odb/shml
_name: SHML
brew: shml
npm: shml
shotcut:
_app: Shotcut.app
_bin: shotcut
_desc: '[Shotcut](https://shotcut.org/) is a free and open-source cross-platform video editing application for FreeBSD, Linux, macOS and Windows. Started in 2011 by Dan Dennedy, Shotcut is developed on the MLT Multimedia Framework, in development since 2004 by the same author.'
_docs: https://shotcut.org/howtos/getting-started/
_github: https://github.com/mltframework/shotcut
_home: https://shotcut.org/
_name: Shotcut
ansible: professormanhattan.shotcut
apt: shotcut
cask: shotcut
choco: shotcut
dnf: shotcut
flatpak: org.shotcut.Shotcut
snap: shotcut --classic
shotwell:
_bin: shotwell
_desc: '[Shotwell](https://shotwell-project.org/doc/html/) is an image organizer designed to provide personal photo management for the GNOME desktop environment. In 2010, it replaced F-Spot as the standard image tool for several GNOME-based Linux distributions, including Fedora in version 13 and Ubuntu in its 10.10 Maverick Meerkat release.'
_docs: http://shotwell-project.org/doc/html/
_github: https://github.com/GNOME/shotwell
_home: https://wiki.gnome.org/Apps/Shotwell
_name: Shotwell
ansible:linux: professormanhattan.shotwell
apt: shotwell
dnf: shotwell
flatpak: org.gnome.Shotwell
pacman: shotwell
shuttle:
_bin: cargo-shuttle
_github: https://github.com/shuttle-hq/shuttle
_name: Shuttle
cargo: cargo-shuttle
pacman: cargo-shuttle
script: curl -sSfL https://www.shuttle.rs/install | bash
shx:
_bin: shx
_github: https://github.com/shelljs/shx
_name: shx
npm: shx
sidekick:
_app: Sidekick.app
_bin: sidekick
_github: false
_name: Sidekick
cask: pushplaylabs-sidekick
signal:
_app: Signal.app
_bin: signal
_desc: Signal is a cross-platform centralized encrypted instant messaging service developed by the non-profit Signal Foundation and its subsidiary, the Signal Messenger LLC. Users can send one-to-one and group messages, which can include files, voice notes, images, and videos.
_docs: https://support.signal.org/hc/en-us
_github: https://github.com/signalapp/Signal-Desktop
_home: https://signal.org
_name: Signal Desktop
cask: signal
choco: signal
flatpak: org.signal.Signal
scoop: signal
skaffold:
_bin: skaffold
_github: https://github.com/GoogleContainerTools/skaffold
_name: Skaffold
brew: skaffold
choco: skaffold
port: skaffold
scoop: extras/skaffold
skate:
_bin: skate
_desc: Skate is a personal key-value store. Use it to save and retrieve anything youd like—even binary data. Its fully encrypted, backed up to the cloud (that you can self-host if you want) and can be synced with all your machines
_github: https://github.com/charmbracelet/skate
_name: skate
brew: charmbracelet/tap/skate
go: github.com/charmbracelet/skate@latest
nix: nixpkgs.skate
pacman: skate
skhd:
_bin: skhd
_desc: Keyboard shortcut daemon for macOS
_docs: https://github.com/koekeishiya/skhd/issues/1
_github: https://github.com/koekeishiya/skhd
_home: https://github.com/koekeishiya/skhd
_name: skhd
_post:brew: |
#!/usr/bin/env bash
skhd --start-service
brew:darwin: koekeishiya/formulae/skhd
skm:
_bin: skm
_desc: A simple and powerful SSH keys manager
_github: https://github.com/TimothyYe/skm
_name: skm
github: github.com/TimothyYe/skm
go: github.com/TimothyYe/skm/cmd/skm@latest
skype:
_app: Skype.app
_bin: skype
_desc: '[Skype](https://www.skype.com/en/) is a proprietary telecommunications application that specializes in providing video chat and voice calls between computers, tablets, mobile devices, the Xbox One console, and smartwatches over the Internet. Skype also provides instant messaging services. Users may transmit text, video, audio and images.'
_description: Skype is for connecting with the people that matter most in your life and work
_docs: https://docs.microsoft.com/en-us/skype-sdk/skypeuris/skypeuriapireference
_github: Not open-source
_home: https://www.skype.com/en/
_name: Skype
ansible: professormanhattan.skype
cask: skype
choco: skype
flatpak: com.skype.Client
snap: skype
yay: skypeforlinux-stable-bin
slack:
_app: Slack.app
_bin: slack
_desc: '[Slack](https://slack.com/) is a proprietary business communication platform developed by American software company Slack Technologies. Slack offers many IRC-style features, including persistent chat rooms organized by topic, private groups, and direct messaging.'
_docs: https://api.slack.com/docs
_github: https://github.com/slackhq/SlackTextViewController
_home: https://slack.com/
_name: Slack
ansible: professormanhattan.slack
cask: slack
choco: slack
flatpak: com.slack.Slack
mas: 803453959
snap: slack
slack-term:
_bin: slack-term
_desc: '[slack-term](https://github.com/erroneousboat/slack-term) features a colorful interface as well as keyboard shortcuts. It is one of, if not the, most well-received [Slack](https://slack.com/) client available on GitHub.'
_github: https://github.com/erroneousboat/slack-term
_name: slack-term
ansible: professormanhattan.slackterm
go: github.com/erroneousboat/slack-term@latest
slides:
_bin: slides
_desc: A terminal application that allows you to present slides rendered from markdown
_docs: https://github.com/maaslalani/slides
_github: https://github.com/maaslalani/slides
_home: https://maaslalani.com/slides/
_name: Slides
brew: slides
go: github.com/maaslalani/slides@latest
nix-env: nixpkgs.slides
snap: slides
yay: slides
sloth:
_app: Sloth.app
_bin: null
_desc: Mac app that shows all open files, directories, sockets, pipes and devices in use by all running processes. Nice GUI for lsof.
_docs: https://github.com/sveinbjornt/Sloth
_github: https://github.com/sveinbjornt/Sloth
_home: https://sveinbjorn.org/sloth
_name: Sloth
cask: sloth
snapcraft:
_bin: snapcraft
_github: https://github.com/canonical/snapcraft
_deps:
- snapd
_name: Snapcraft
brew: snapcraft
snap: snapcraft --classic
snapd:
_bin: snap
_github: https://github.com/snapcore/snapd
_desc: '[Snap](https://snapcraft.io/) is a software packaging and deployment system developed by Canonical for operating systems that use the Linux kernel. The packages, called snaps, and the tool for using them, snapd, work across a range of Linux distributions and allow upstream software developers to distribute their applications directly to users. Snaps are self-contained applications running in a sandbox with mediated access to the host system.'
_home: https://snapcraft.io/
_name: Snap
# ansible:linux: professormanhattan.snapd
_service: snapd
snitch:
_app: Little Snitch.app
# Used for OpenSnitch, which is "temporarily" disabled until it works as expected
# _bin: opensnitchd
_desc: '[Little Snitch](https://www.obdev.at/products/littlesnitch/index.html) (macOS) and [OpenSnitch](https://github.com/evilsocket/opensnitch) (Linux) are application firewalls that make Internet connections visible. You can then configure which applications can access the internet (or LAN) as well as monitor the traffic patterns of applications.'
_docs: https://www.obdev.at/products/littlesnitch/getting-started.html
_github: https://github.com/evilsocket/opensnitch
_home: https://www.obdev.at/products/littlesnitch/index.html
_name: OpenSnitch/Little Snitch
# Not loading on Ubuntu 22.04
# ansible: professormanhattan.snitch
cask: little-snitch
social-analyzer:
_bin: social-analyzer
_desc: API, CLI, and Web App for analyzing and finding a person's profile in 1000 social media \ websites
_github: https://github.com/qeeqbox/social-analyzer
_name: social-analyzer
pipx: social-analyzer
soduto:
_app: Soduto.app
_github: https://github.com/soduto/Soduto
_name: Soduto
cask: soduto
soft-serve:
_bin: soft
_desc: A tasty, self-hostable Git server for the command line
_docs: https://github.com/charmbracelet/soft-serve
_github: https://github.com/charmbracelet/soft-serve
_home: https://charm.sh/
_name: Soft Serve
brew: charmbracelet/tap/soft-serve
go: github.com/charmbracelet/soft-serve/cmd/soft@latest
nix-env: nixpkgs.soft-serve
pacman: soft-serve
solargraph:
_bin: solargraph
_desc: Ruby language server
_docs: https://solargraph.org/guides/getting-started
_github: https://github.com/castwide/solargraph
_home: https://solargraph.org/
_name: Solargraph
brew: solargraph
gem: solargraph
solidity:
_bin: solcjs
_desc: Javascript bindings for the Solidity compiler
_github: https://github.com/ethereum/solc-js
_name: solcjs
npm: solc
sparkleshare:
_app: SparkleShare.app
_bin: sparkleshare
_github: https://github.com/hbons/SparkleShare
_name: Sparkle Share
cask: sparkleshare
choco: sparkleshare
flatpak: org.sparkleshare.SparkleShare
speed-test:
_bin: speed-test
_desc: Test your internet connection speed and ping using speedtest.net from the CLI
_github: https://github.com/sindresorhus/speed-test
_name: speed-test
npm: speed-test
speedtest-cli:
_bin: speedtest-cli
_desc: Command line interface for testing internet bandwidth using speedtest.net
_github: https://github.com/sivel/speedtest-cli
_name: speedtest-cli
pipx: speedtest-cli
sphinx:
_bin: sphinx-build
_github: https://github.com/sphinx-doc/sphinx
_name: Sphinx
apt: python3-sphinx
choco: sphinx
dnf: python-sphinx
pipx: sphinx
spotdl:
_bin: spotdl
_deps:
- ffmpeg
_desc: Download your Spotify playlists and songs along with album art and metadata
_docs: https://spotdl.readthedocs.io/en/latest/
_github: https://github.com/spotDL/spotify-downloader
_name: spotdl
pipx: spotdl
sql-language-server:
_bin: sql-language-server
_desc: An SQL language server
_docs: https://github.com/joe-re/sql-language-server
_github: https://github.com/joe-re/sql-language-server
_home: https://github.com/joe-re/sql-language-server
_name: SQL Language Server
brew: sql-language-server
npm: sql-language-server
sqlectron:
_app: sqlectron.app
_bin: null
_desc: A simple and lightweight SQL client desktop with cross database and platform support
_github: https://github.com/sqlectron/sqlectron-gui
_name: SQLectron
cask: sqlectron
github: github.com/sqlectron/sqlectron-gui
yay: sqlectron-gui
sqlite:
_bin: sqlite3
_desc: SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine.
_docs: https://sqlite.org/docs.html
_github: https://github.com/sqlite/sqlite
_home: https://sqlite.org/index.html
_name: SQLite
apt: sqlite3
brew: sqlite
choco: sqlite
dnf: sqlite
pacman: sqlite
port: sqlite3
scoop: sqlite
squid:
_bin: squid
_github: https://github.com/squid-cache/squid
_name: Squid
_preload: true
_service: squid
apt: squid
brew: squid
dnf: squid
pacman: squid
ssh:
_bin: null
_github: false
_desc: On top of tightening up SSH security settings, this role also installs fail2ban on Linux systems. If provided, the role will also populate all your SSH keys and set their permissions appropriately
_name: SSH
ansible: professormanhattan.ssh
ssh-vault:
_bin: ssh-vault
_desc: '[sshvault](https://ssh-vault.com/) lets you encrypt/decrypt using SSH private keys. It is written in Go and the documentation can be read in under a minute.'
_docs: https://ssh-vault.com/post/how-it-works/
_github: https://github.com/ssh-vault/ssh-vault
_home: https://ssh-vault.com/
_name: ssh-vault
ansible: professormanhattan.sshvault
brew: ssh-vault
github: github.com/ssh-vault/ssh-vault
sshfs:
_bin: sshfs
_name: SSHFS
_github: https://github.com/libfuse/sshfs
apt: sshfs
brew:linux: sshfs
choco: sshfs
dnf: sshfs
pacman: sshfs
port: sshfs
scoop: sshfs-np
sshpass:
_bin: sshpass
_github: https://github.com/kevinburke/sshpass
_desc: SSHPass is a tool for non-interactivly performing password authentication with SSH's so called "interactive keyboard password authentication". Most user should use SSH's more secure public key authentiaction instead.
_home: https://sourceforge.net/projects/sshpass/
_name: sshpass
apt: sshpass
brew: hudochenkov/sshpass/sshpass
dnf: sshpass
sshs:
_bin: sshs
_github: https://github.com/quantumsheep/sshs
_name: SSHS
brew: sshs
choco: sshs
sshuttle:
_bin: sshuttle
_github: https://github.com/sshuttle/sshuttle
_name: SShuttle
apt: sshuttle
brew: sshuttle
dnf: sshuttle
emerge: net-proxy/sshuttle
nix-env: nixos.sshuttle
nix-pkg: nixpkgs.sshuttle
pacman: sshuttle
pipx: sshuttle
port: sshuttle
zypper: sshuttle
ssl-proxy:
_bin: ssl-proxy
_desc: Simple zero-config SSL reverse proxy with real autogenerated certificates
_github: https://github.com/suyashkumar/ssl-proxy
_name: ssl-proxy
go: github.com/suyashkumar/ssl-proxy@latest
stacer:
_bin: stacer
_desc: Popular desktop GUI for monitoring and cleaning Linux systems.
_docs: https://github.com/oguzhaninan/Stacer/blob/native/README.md
_github: https://github.com/oguzhaninan/Stacer
_home: https://oguzhaninan.github.io/Stacer-Web/
_name: Stacer
appimage: https://github.com/oguzhaninan/Stacer/releases/download/v1.1.0/Stacer-1.1.0-x64.AppImage
apt: https://github.com/oguzhaninan/Stacer/releases/download/v1.1.0/stacer_1.1.0_amd64.deb
apt:debian: stacer
apt:ubuntu: stacer
dnf: https://github.com/oguzhaninan/Stacer/releases/download/v1.1.0/stacer-1.1.0-amd64.rpm
dnf:fedora: stacer
yay: stacer
standard-notes:
_app: Standard Notes.app
_bin: standard-notes
_desc: End-to-end encrypted notes app
_docs: https://standardnotes.com/help
_github: https://github.com/standardnotes/app
_home: https://standardnotes.com/
_name: Standard Notes
cask: standard-notes
flatpak: org.standardnotes.standardnotes
starred:
_bin: starred
_desc: Creates your own Awesome List sorted by GitHub stars by using the GitHub API
_docs: https://github.com/maguowei/starred
_github: https://github.com/maguowei/starred
_home: https://pypi.org/project/starred/
_name: Starred
pipx: starred
starship:
_bin: null
_github: https://github.com/starship/starship
_desc: '[Starship](https://starship.rs/) is the minimal, blazing fast, and extremely customizable prompt for any shell! It shows the information you need, while staying sleek and minimal. Unlike most other prompts, it is compatible with nearly every type of terminal. If you want to retain the same look and feel across different terminals, then look no further.'
_name: Starship
ansible: professormanhattan.starship
statcode:
_bin: statcode
_docs: Man pages for HTTP status codes
_github: https://github.com/shobrook/statcode
pipx: statcode
yay: statcode
staticcheck:
_bin: staticcheck
_desc: State of the art linter for the Go programming language
_docs: https://staticcheck.io/docs/
_github: https://github.com/dominikh/go-tools
_home: https://staticcheck.io/
_name: staticcheck
brew: staticcheck
dnf:fedora: golang-honnef-tools
go: honnef.co/go/tools/cmd/staticcheck@latest
pacman: staticcheck
port: staticcheck
scoop: staticcheck
stats:
_app: Stats.app
_bin: null
_desc: System monitor for the menu bar
_github: https://github.com/exelban/stats
_name: stats
_service: null
cask: stats
steam:
_app: Steam.app
_bin: steam
_github: false
_name: steam
cask: steam
choco: steam
flatpak: com.valvesoftware.Steam
steampipe:
_bin: steampipe
_github: https://github.com/turbot/steampipe
_name: Steampipe
brew: turbot/tap/steampipe
stegcloak:
_bin: stegcloak
_desc: StegCloak is a pure JavaScript steganography module designed in functional programming style, to hide secrets inside text by compressing and encrypting the secret before cloaking it with special unicode invisible characters
_github: https://github.com/KuroLabs/stegcloak
_home: https://stegcloak.surge.sh/
_name: stegcloak
npm: stegcloak
storybook:
_bin: storybook
_github: https://github.com/storybookjs/storybook
_name: Storybook
npm: storybook
sttr:
_bin: sttr
_desc: Cross-platform, CLI app to perform various operations on string
_docs: https://github.com/abhimanyu003/sttr
_github: https://github.com/abhimanyu003/sttr
_home: https://github.com/abhimanyu003/sttr
_name: sttr
brew: abhimanyu003/sttr/sttr
go: github.com/abhimanyu003/sttr@latest
snap: sttr
yay: sttr-bin
stubby:
_bin: stubby
_github: https://github.com/getdnsapi/stubby
_desc: DNS privacy enabled stub resolver service based on getdns
_docs: https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Daemon+-+Stubby
_name: Stubby
_post:brew:darwin: |
#!/usr/bin/env bash
bash "$(brew --prefix stubby)/sbin/stubby-setdns-macos.sh"
_service: stubby
brew:darwin: stubby
supervisor:
_bin: supervisord
_github: https://github.com/Supervisor/supervisor
_name: Supervisor
_service: supervisor
apt: supervisor
brew: supervisor
dnf: supervisor
pacman: supervisor
pipx: supervisor
zypper: supervisor
surge:
_bin: surge
_desc: CLI for the surge.sh CDN
_github: https://github.com/sintaxi/surge
_name: surge
npm: surge
svgo:
_bin: svgo
_desc: SVG Optimizer is a Node.js-based tool for optimizing SVG vector graphics files.
_github: https://github.com/svg/svgo
_name: svgo
brew: svgo
npm: svgo
swarm:
_bin: null
_desc: Docker Swarm is an orchestration management tool that runs Docker applications. It helps in creating and deploying a cluster of Docker nodes
_docs: https://docs.docker.com/engine/swarm/
_github: https://github.com/moby/swarmkit
_name: Docker Swarm
ansible: professormanhattan.swarm
swiftbar:
_app: SwiftBar.app
_github: https://github.com/swiftbar/SwiftBar
_name: SwiftBar
cask: swiftbar
swiftformat:
_bin: swiftformat
_github: https://github.com/nicklockwood/SwiftFormat
_name: SwiftFormat
brew: swiftformat
swifty:
_app: Swifty.app
_bin: swifty
_github: https://github.com/swiftyapp/swifty
_name: Swifty
appimage: swiftyapp/swifty
cask: swifty
exe: https://github.com/swiftyapp/swifty/releases/download/v0.6.13/Swifty-Setup-0.6.13.exe
swimat:
_app: Swimat.app
_bin: null
_desc: Swift code auto-formatter for Xcode
_docs: https://jintin.github.io/Swimat/
_github: https://github.com/Jintin/Swimat
_home: https://jintin.github.io/Swimat/
_name: Swimat
cask: swimat
switchhosts:
_app: SwitchHosts.app
_bin: null
_desc: '[SwitchHosts](https://github.com/oldj/SwitchHosts) is an application for managing the etc hosts file. It allows you to easily switch between different etc hosts file configurations.'
_docs: https://github.com/oldj/SwitchHosts
_github: https://github.com/oldj/SwitchHosts
_home: https://swh.app/
_name: SwitchHosts
ansible: professormanhattan.switchhosts
appimage: oldj/SwitchHosts
cask: switchhosts
choco: switchhosts
github: github.com/oldj/SwitchHosts
scoop: switchhosts
sync-ssh-keys:
_bin: sync-ssh-keys
_desc: Sync public ssh keys to ~/.ssh/authorized_keys, based on Github/Gitlab organization membership
_github: https://github.com/samber/sync-ssh-keys
_name: sync-ssh-keys
go: github.com/samber/sync-ssh-keys@latest
yay: sync-ssh-keys-bin
syncpack:
_bin: syncpack
_desc: Consistent dependency versions in large JavaScript Monorepos.
_docs: https://jamiemason.github.io/syncpack/installation
_github: https://github.com/JamieMason/syncpack
_home: https://jamiemason.github.io/syncpack/
_name: Syncpack
npm: syncpack
syncthing:
_bin: syncthing
_github: https://github.com/syncthing/syncthing
_name: Syncthing
_service: syncthing
_serviceEnabled: true
brew: syncthing
choco: syncthing
port: syncthing
scoop: syncthing
synp:
_bin: synp
_desc: Convert yarn.lock to package-lock.json and vice versa
_github: https://github.com/imsnif/synp
_name: synp
npm: synp
sysbench:
_bin: sysbench
_desc: System performance benchmark tool
_github: https://github.com/akopytov/sysbench
_name: sysbench
apk: sysbench
apt: sysbench
brew: sysbench
dnf:fedora: sysbench
pacman: sysbench
pkg: sysbench
sysdig:
_bin: sysdig
_desc: '[sysdig](https://www.sysdig.com/) is a simple tool for deep system visibility, exploration and troubleshooting, with native support for containers.'
_docs: https://docs.sysdig.com/
_github: https://github.com/draios
_groups:
- sysdig
_home: https://sysdig.com/
_name: sysdig
ansible: professormanhattan.sysdig
brew: sysdig
pacman:
- sysdig
- sysdig-dkms
sysget:
_bin: sysget
_desc: One package manager to rule them all
_github: https://github.com/emilengler/sysget
_name: sysget
_note: TODO
sysz:
_bin: sysz
_deps:
- fzf
_desc: An fzf terminal UI for systemctl
_docs: https://github.com/joehillen/sysz
_github: https://github.com/joehillen/sysz
_home: https://github.com/joehillen/sysz
_name: syz
bin: https://github.com/joehillen/sysz
nix-env: nixpkgs.sysz
pacman: sysz
script:linux: cd /tmp && git clone https://github.com/joehillen/sysz.git && cd sysz && sudo make install && cd /tmp && rm -rf sysz
t:
_bin: t
_desc: A command-line power tool for Twitter
_github: https://github.com/sferik/t
gem: t
t-rec:
_bin: t-rec
_deps:cargo:
- imagemagick
_desc: '[t-rec](https://github.com/sassman/t-rec-rs) is a blazingly fast terminal recorder that generates animated GIF images for the web written in Rust'
_docs: https://crates.io/crates/t-rec
_github: https://github.com/sassman/t-rec-rs
_home: https://crates.io/crates/t-rec
_name: t-rec
ansible: professormanhattan.trec
brew: t-rec
cargo: t-rec
port: t-rec
snap: t-rec --classic
yay: t-rec
tabby:
_app: Tabby.app
_bin: tabby
_desc: '[Tabby](https://eugeny.github.io/tabby/) is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux.'
_docs: https://openbase.com/js/tabby/documentation
_github: https://github.com/Eugeny/tabby
_home: https://tabby.sh/
_name: Tabby
_notes: TODO Update the direct links periodically and keep eye out for Snap / Flatpak
_post: |
#!/usr/bin/env bash
# @file Tabby Plugins
# @brief This script installs the default Tabby plugins which are defined in `${XDG_CONFIG_HOME:-$HOME/.config}/tabby/plugins/package.json`
# @description
# This script pre-installs a handful of useful Tabby plugins which are defined in `${XDG_CONFIG_HOME:-$HOME/.config}/tabby/plugins/package.json`.
# These default plugins can be customized by editting the `package.json` file stored in your Install Doctor fork in the Tabby `plugins/package.json`
# file.
#
# ## Default Plugins Configuration
#
# The script will install all the plugins defined in the `package.json` file by navigating to the `~/.config/tabby/plugins` folder
# and then run `npm install`. The default configuration will include the following plugins:
#
# ```json
# {
# ...
# // Notable dependencies listed below
# "dependencies": {
# "tabby-docker": "^0.2.0",
# "tabby-save-output": "^3.1.0",
# "tabby-search-in-browser": "^0.0.1",
# "tabby-workspace-manager": "^0.0.4"
# },
# ...
# }
# ```
#
# ## Default Plugin Descriptions
#
# The following chart provides a short description of the default plugins that are pre-installed alongside Tabby:
#
# | NPM Package | Description |
# |---------------------------|---------------------------------------------------------------------|
# | `tabby-docker` | Allows you to shell directly into Docker containers |
# | `tabby-save-output` | This plugin lets you stream console output into a file. |
# | `tabby-search-in-browser` | Allows you to open a internet browser and search for selected text. |
# | `tabby-workspace-manager` | Allows you to create multiple workspace profiles. |
#
# ## Links
#
# * [Tabby plugins `package.json`](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_config/tabby/plugins/package.json)
# * [Secrets / Environment variables documentation](https://install.doctor/docs/customization/secrets) which details how to store your Tabby configuration in as an encrypted file
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/tabby/plugins/package.json" ]; then
if [ -d "${XDG_CONFIG_HOME:-$HOME/.config}/tabby/plugins/node_modules" ]; then
logg info 'Skipping Tabby plugin installation because it looks like the plugins were already installed since node_modules is present in ~/.config/tabby/plugins'
else
logg info 'Installing Tabby plugins defined in '"${XDG_CONFIG_HOME:-$HOME/.config}/tabby/plugins/package.json"''
cd "${XDG_CONFIG_HOME:-$HOME/.config}/tabby/plugins"
npm install --quiet
logg success 'Finished installing Tabby plugins'
fi
else
logg info 'Skipping Tabby plugin installation because is not present'
fi
ansible:linux: professormanhattan.tabby
apt: https://github.com/Eugeny/tabby/releases/download/v1.0.188/tabby-1.0.188-linux-x64.deb
cask: tabby
choco: tabby
dnf: https://github.com/Eugeny/tabby/releases/download/v1.0.188/tabby-1.0.188-linux-x64.rpm
github: github.com/Eugeny/tabby
pacman: https://github.com/Eugeny/tabby/releases/download/v1.0.188/tabby-1.0.188-linux-x64.pacman
tailscale:
_app: Tailscale.app
_bin: tailscale
_desc: '[Tailscale](https://tailscale.com/) lets you easily manage access to private resources, quickly SSH into devices on your network, and work securely from anywhere in the world.'
_docs: https://tailscale.com/kb/
_github: https://github.com/tailscale/tailscale
_home: https://tailscale.com/
_name: Tailscale
_post: |
#!/usr/bin/env bash
# @file Tailscale
# @brief Connects the Tailscale client with the Tailscale network
# @description
# This script ensures the `tailscaled` system daemon is installed on macOS. Then, on both macOS and Linux, it connects to the Tailscale
# network if the `TAILSCALE_AUTH_KEY` variable is provided.
### Install the Tailscale system daemon
if [ -d /Applications ] && [ -d System ]; then
### macOS
if command -v tailscaled > /dev/null; then
logg info 'Ensuring tailscaled system daemon is installed'
sudo tailscaled install-system-daemon
logg info 'tailscaled system daemon is now installed and will load on boot'
else
logg info 'tailscaled does not appear to be installed'
fi
fi
### Connect to Tailscale network
if command -v tailscale > /dev/null && [ "$TAILSCALE_AUTH_KEY" != "" ]; then
logg info 'Connecting to Tailscale with user-defined authentication key'
timeout 14 tailscale up --authkey="$TAILSCALE_AUTH_KEY" --accept-routes || EXIT_CODE=$?
if [ -n "$EXIT_CODE" ]; then
logg warn 'tailscale up timed out'
else
logg success 'Connected to Tailscale network'
fi
fi
_service:brew: tailscale
_service:pacman: tailscaled
ansible: professormanhattan.tailscale
brew: tailscale
cask: tailscale
choco: tailscale
go: tailscale.com/cmd/tailscale{,d}@main
mas: 1475387142
pacman: tailscale
port: tailscale
talksheet:
_bin: talksheet
_github: https://github.com/danthelion/talksheet
_name: Talksheet
pipx: talksheet
taplo:
_bin: taplo
_desc: A TOML toolkit written in Rust that includes TOML formatting abilities
_docker: docker run tamasfe/taplo
_docs: https://taplo.tamasfe.dev/cli/introduction.html
_github: https://github.com/tamasfe/taplo
_home: https://taplo.tamasfe.dev/
_name: Taplo
cargo: taplo-cli --locked
npm: '@taplo/cli'
tart:
_bin: tart
_github: https://github.com/cirruslabs/tart
_todo: Verify that this installs properly (error on arm64 macOS)
brew:darwin: cirruslabs/cli/gitlab-tart-executor
task:
_bin: task
_desc: A task runner / simpler Make alternative written in Go
_docs: https://taskfile.dev/usage/
_github: https://github.com/go-task/task
_home: https://taskfile.dev
_name: Task
brew: go-task
choco: go-task
github: github.com/go-task/task
go: github.com/go-task/task/v3/cmd/task@latest
scoop: task
taskwarrior:
_bin: taskwarrior
_github: https://github.com/GothenburgBitFactory/taskwarrior
_name: Task Warrior
apt: taskwarrior
brew:
- task
- taskd
- tasksh
dnf: task
emerge: task
nix-env: taskwarrior
pacman: task
port: task
sbopkg: task
xbps: task
zypper: taskwarrior
teamviewer:
_app: TeamViewer.app
_bin: teamviewer
_desc: '[TeamViewer](https://www.teamviewer.com/en-us/) is a proprietary software for remote access to as well as remote control and maintenance of computers and other devices, which was first released in 2005. The functionality has been expanded step by step, most recently for example through the integration of TeamViewer Meeting.'
_docs: https://www.teamviewer.com/en-us/documents/
_github: Not open-source
_home: https://www.teamviewer.com/en-us/
_name: TeamViewer
ansible:linux: professormanhattan.teamviewer
apt: https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
cask: teamviewer
choco: teamviewer
dnf: https://download.teamviewer.com/download/linux/teamviewer.x86_64.rpm
yay: teamviewer
zypper: https://download.teamviewer.com/download/linux/teamviewer-suse.x86_64.rpm
telegram:
_app: Telegram.app
_github: https://github.com/telegramdesktop/tdesktop
_bin: telegram
_name: Telegram
cask: telegram
choco: telegram
flatpak: org.telegram.desktop
mas: 747648890
teleport:
_bin: teleport
_desc: '[Teleport](https://goteleport.com/) is a free and open-source tool that allows engineers and security professionals to unify access for SSH servers, Kubernetes clusters, web applications, and databases across all environments. It is an identity-aware, multi-protocol access proxy which understands SSH, HTTPS, Kubernetes API, MySQL and PostgreSQL wire protocols.'
_github: https://github.com/gravitational/teleport
_name: Teleport
ansible: professormanhattan.teleport
brew: teleport
pkg: teleport
yay: teleport-bin
teller:
_bin: teller
_desc: Cloud native secrets management for developers - never leave your command line for secrets
_github: https://github.com/tellerops/teller
_name: teller
brew: spectralops/tap/teller
github: github.com/tellerops/teller
temps:
_bin: null
_desc: Simple menubar application based on Electron with actual weather information and forecast
_github: https://github.com/jackd248/temps
_name: Temps
github: github.com/jackd248/temps
terminal-notifier:
_bin: terminal-notifier
_github: https://github.com/julienXX/terminal-notifier
_name: Terminal Notifier
brew:darwin: terminal-notifier
terminalizer:
_bin: terminalizer
_desc: Record your terminal and generate animated gif images or share a web player
_github: https://github.com/faressoft/terminalizer
_home: https://www.terminalizer.com/
_name: terminalizer
npm: terminalizer
termius:
_bin: termius
_desc: '[Termius](https://www.termius.com/) is the SSH client that works on Desktop and Mobile.'
_home: https://www.termius.com/
_name: Termius
_github: false
_post:binary:windows: |
# TODO
# TODO
ansible: professormanhattan.termius
binary:windows: https://autoupdate.termius.com/windows/Termius.exe
brew: termius
pipx: termius
snap: termius-app
yay: termius
terraform:
_github: https://github.com/hashicorp/terraform
_deps:
- tfenv
terraform-ls:
_bin: terraform-ls
_desc: '[terraform-ls](https://github.com/tfutils/tfenv) is the official Terraform language server maintained by HashiCorp that provides IDE features to any LSP-compatible editor.'
_docs: https://github.com/hashicorp/terraform-ls
_github: https://github.com/hashicorp/terraform-ls
_home: https://github.com/hashicorp/terraform-ls
_name: terraform-ls
_service: false
brew: terraform-ls
textql:
_bin: textql
_desc: CLI that allows you to execute SQL against structured text like CSV or TSV
_docs: https://github.com/dinedal/textql
_github: https://github.com/dinedal/textql
_home: https://github.com/dinedal/textql
_name: TextQL
brew: textql
go: github.com/dinedal/textql@master
yay: textql-git
tfenv:
_bin: tfenv
_desc: '[tfenv](https://github.com/tfutils/tfenv) is a Terraform version manager inspired by [rbenv](https://github.com/rbenv/rbenv). It supports macOS, Linux, and Windows.'
_docs: https://github.com/tfutils/tfenv#usage
_github: https://github.com/tfutils/tfenv
_home: https://github.com/tfutils/tfenv
_name: tfenv
_post: |
#!/usr/bin/env bash
if command -v tfenv > /dev/null; then
tfenv use latest
fi
ansible:darwin: professormanhattan.tfenv
ansible:linux: professormanhattan.tfenv
brew: tfenv
port: tfenv
yay: tfenv
tflint:
_bin: tflint
_desc: '[tflint](https://github.com/terraform-linters/tflint) is a framework that can help in finding possible errors for major cloud providers, warn about deprecated syntax and unused declarations and enforce best practices. This role installs tflint on nearly any platform.'
_github: https://github.com/terraform-linters/tflint
_name: tflint
ansible: professormanhattan.tflint
brew: tflint
choco: tflint
github: github.com/terraform-linters/tflint
tfsec:
_bin: tfsec
_github: https://github.com/aquasecurity/tfsec
_name: Aqua TFSec
brew: tfsec
choco: tfsec
scoop: tfsec
tgpt:
_bin: tgpt
_github: https://github.com/aandrew-me/tgpt
_name: Terminal GPT
go: github.com/aandrew-me/tgpt/v2@latest
scoop: https://raw.githubusercontent.com/aandrew-me/tgpt/main/tgpt.json
yay: tgpt-bin
thefuck:
_bin: fuck
_desc: Magnificent CLI tool that corrects your previous console command whenever something fails due to misspelling.
_docs: https://github.com/nvbn/thefuck
_github: https://github.com/nvbn/thefuck
_home: https://github.com/nvbn/thefuck
_name: The Fuck
brew: thefuck
crew: thefuck
pacman: thefuck
pipx: thefuck
pkg-freebsd: thefuck
thunderbird:
_app: Thunderbird.app
_bin: thunderbird
_github: false
cask: thunderbird
choco: thunderbird
flatpak: org.mozilla.Thunderbird
tig:
_bin: tig
_desc: Tig is an ncurses-based text-mode interface for git. It functions mainly as a Git repository browser, but can also assist in staging changes for commit at chunk level and act as a pager for output from various Git commands
_github: https://github.com/jonas/tig
_home: https://jonas.github.io/tig/
_name: tig
brew: tig
nix: tig
pkg: tig
tigervnc:
_bin: tigervncpasswd
_github: https://github.com/TigerVNC/tigervnc
_name: TigerVNC Server
_ports:
- port: 5900-5904
proto: tcp
apt: tigervnc-standalone-server
dnf: tigervnc-server
pacman: tigervnc
zypper: tigervnc
tilt:
_bin: tilt
_desc: Define your dev environment as code. For microservice apps on Kubernetes
_docs: https://docs.tilt.dev/
_github: https://github.com/tilt-dev/tilt
_home: https://tilt.dev/
_name: tilt
brew: tilt
github: github.com/tilt-dev/tilt
yay: tilt-bin
timeshift:
_bin: timeshift
_desc: '[Timeshift](https://github.com/teejee2008/timeshift) is a free and open source system restore tool for Linux. Timeshift for Linux is an application that provides functionality similar to the System Restore feature in Windows and the Time Machine tool in Mac OS. Timeshift protects your system by taking incremental snapshots of the file system at regular intervals. These snapshots can be restored at a later date to undo all changes to the system.'
_github: https://github.com/teejee2008/timeshift
_home: https://teejeetech.com/timeshift/
_name: Timeshift
_post: |
#!/usr/bin/env bash
# @file Timeshift Configuration
# @brief Updates the Timeshift system configuration with the Timeshift configuration stored in the `home/dot_config/timeshift/timeshift.json` location.
# @description
# This script applies a Timeshift configuration that defines how Timeshift should maintain system backups.
if command -v timeshift > /dev/null; then
logg info 'Ensuring /etc/timeshift is a directory'
sudo mkdir -p /etc/timeshift
TIMESHIFT_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/timeshift/timeshift.json"
logg info "Copying $TIMESHIFT_CONFIG to /etc/timeshift/timeshift.json"
sudo cp -f "$TIMESHIFT_CONFIG" /etc/timeshift/timeshift.json
else
logg info 'The timeshift executable is not available'
fi
# Unavailable on CentOS Stream 9
# ansible:linux: professormanhattan.timeshift
apt: timeshift
dnf:fedora: timeshift
yay: timeshift
timewarrior:
_bin: timew
_github: https://github.com/GothenburgBitFactory/timewarrior
_name: Time Warrior
apt: timewarrior
brew: timewarrior
dnf: timew
emerge: app-misc/timew
nix-env: timewarrior
pacman: timew
tinypng:
_bin: tinypng
_desc: Handy command line tool for shrinking PNG images using the TinyPNG API
_github: https://github.com/websperts/tinypng-cli
_name: tinypng
_service: null
npm: tinypng-cli
tldr:
_bin: tldr
_desc: Simplified and community-driven man pages
_github: https://github.com/tldr-pages/tldr
_home: https://tldr.sh/
_name: tldr
brew: tldr
npm: tldr
tmate:
_bin: tmate
_github: https://github.com/tmate-io/tmate
_name: tmate
apt: tmate
brew: tmate
dnf: tmate
emerge: app-misc/tmate
opkg: tmate
pacman: tmate
pkg-freebsd: tmate
pkg_add: tmate
zypper: tmate
tmux:
_bin: tmux
_desc: '[Tmux](https://github.com/tmux/tmux/wiki) is a terminal multiplexer. It enables a number of terminals to be created, accessed, and controlled from a single screen. Tmux may be detached from a screen and continue running in the background, then later reattached.'
_docs: https://github.com/tmux/tmux/wiki
_github: https://github.com/tmux/tmux
_name: tmux
ansible: professormanhattan.tmux
apt: tmux
brew:
- awk
- gnu-sed
- perl
- tmux
tmuxinator:
_bin: tmuxinator
_desc: Manage complex tmux sessions easily
_docs: https://github.com/tmuxinator/tmuxinator
_github: https://github.com/tmuxinator/tmuxinator
_home: https://github.com/tmuxinator/tmuxinator
_name: Tmuxinator
brew: tmuxinator
tokei:
_bin: tokei
_desc: Tokei is a program that displays statistics about the code
_github: https://github.com/XAMPPRocky/tokei
_name: tokei
apk: tokei
brew: tokei
cargo: tokei
dnf:fedora: tokei
github: github.com/XAMPPRocky/tokei
pacman: tokei
pkg: tokei
scoop: tokei
tomcat:
_bin: catalina
_github: https://github.com/apache/tomcat
_name: Tomcat
_post:darwin: |
#!/usr/bin/env bash
sed 's/8080/8180/g' /usr/local/etc/tomcat/server.xml > /usr/local/etc/tomcat/server.xml
_post:linux: |
#!/usr/bin/env bash
sed 's/8080/8180/g' /usr/local/etc/tomcat/server.xml > /usr/local/etc/tomcat/server.xml
_service: tomcat
apt: tomcat
brew: tomcat
choco: tomcat
dnf: tomcat
pacman: tomcat
toml-sort:
_bin: toml-sort
_desc: A Python module that auto-formats TOML files
_docs: https://pypi.org/project/toml-sort/
_github: https://github.com/pappasam/toml-sort
_home: https://pypi.org/project/toml-sort/
_name: TOML Sort
pipx: toml-sort
tor:
_bin: tor
_desc: "[Tor](https://www.torproject.org/) is free and open-source software for enabling anonymous communication by directing Internet traffic through a free, worldwide, volunteer overlay network consisting of more than seven thousand relays in order to conceal a user's location and usage from anyone conducting network surveillance or traffic analysis. On Linux you can combine Tor with [Privoxy](https://www.privoxy.org/) which allows you to tunnel all of your traffic through the Tor network."
_docs: https://tb-manual.torproject.org/
_github: https://github.com/TheTorProject
_home: https://www.torproject.org/
_name: TOR
_post: |
#!/usr/bin/env bash
# @file Tor Configuration
# @brief This script applies the Tor configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/tor/torrc` to the system and then restarts Tor
# @description
# Tor is a network that uses onion routing, originally published by the US Navy. It is leveraged by privacy enthusiasts
# and other characters that deal with sensitive material, like journalists and people buying drugs on the internet.
# This script:
#
# 1. Determines the system configuration file location
# 2. Applies the configuration stored at `${XDG_CONFIG_HOME:-HOME/.config}/tor/torrc`
# 3. Enables and restarts the Tor service with the new configuration
#
# ## Links
#
# * [Tor configuration](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_config/tor/torrc)
### Determine the Tor configuration location by checking whether the system is macOS or Linux
if [ -d /Applications ] && [ -d /System ]; then
### macOS
TORRC_CONFIG_DIR=/usr/local/etc/tor
else
### Linux
TORRC_CONFIG_DIR=/etc/tor
fi
TORRC_CONFIG="$TORRC_CONFIG_DIR/torrc"
### Apply the configuration if the `torrc` binary is available in the `PATH`
if command -v toron > /dev/null; then
if [ -d "$TORRC_CONFIG_DIR" ]; then
### Copy the configuration from `${XDG_CONFIG_HOME:-$HOME/.config}/tor/torrc` to the system configuration file location
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/tor/torrc" "$TORRC_CONFIG"
sudo chmod 600 "$TORRC_CONFIG"
### Enable and restart the Tor service
if [ -d /Applications ] && [ -d /System ]; then
### macOS
brew services restart tor
else
if [[ ! "$(test -d /proc && grep Microsoft /proc/version > /dev/null)" ]]; then
### Linux
sudo systemctl enable tor
sudo systemctl restart tor
else
logg info 'Environment is WSL so the Tor systemd service will not be enabled / restarted'
fi
fi
else
logg warn 'The '"$TORRC_CONFIG_DIR"' directory is missing'
fi
else
logg warn 'toron is missing from the PATH'
fi
_restricted: true
_service: tor
_serviceEnabled: true
ansible:linux: professormanhattan.tor
apt: tor
brew: tor
dnf: tor
pacman: tor
port: tor
tor-browser:
_app: Tor Browser.app
_bin: tor-browser
_desc: Tor, short for The Onion Router, is free and open-source software for enabling anonymous communication. It directs Internet traffic through a free, worldwide, volunteer overlay network, consisting of more than seven thousand relays, to conceal a user's location and usage.
_docs: https://www.torproject.org/docs/documentation.html.en
_env:
TOR_BROWSER_APPDATA:
cask: "$HOME/Library/Application Support/TorBrowser-Data/Tor"
choco: "TODO"
flatpak: "TODO"
_github: https://github.com/TheTorProject/gettorbrowser
_home: https://www.torproject.org/
_name: Tor Browser
_restricted: true
cask: tor-browser
choco: tor-browser
flatpak: com.github.micahflee.torbrowser-launcher
tradingview:
_app: TradingView.app
_bin: tradingview
_github: https://github.com/tradingview/lightweight-charts
_name: Trading View
cask: tradingview
msix: https://tvd-packages.tradingview.com/stable/latest/win32/TradingView.msix
snap: tradingview
translate:
_bin: trans
_desc: '[Translate Shell](https://github.com/soimort/translate-shell) (formerly Google Translate CLI) is a command-line translator powered by Google Translate (default), Bing Translator, Yandex.Translate, and Apertium. It gives you easy access to these translation engines in your terminal. It is feature-rich and, although there is some overlap, it complements [Normit](https://gitlab.com/megabyte-labs/ansible-roles/normit) well.'
_github: https://github.com/soimort/translate-shell
_name: Translate Shell
ansible:darwin: professormanhattan.translate
ansible:linux: professormanhattan.translate
apt:ubuntu: translate-shell
brew: translate-shell
dnf: translate-shell
pacman: translate-shell
trayscale:
_bin: trayscale
_desc: Unofficial Menu Bar for Tailscale on Linux
_github: https://github.com/DeedleFake/trayscale
_name: Trayscale
flatpak: dev.deedles.Trayscale
tree:
_bin: tree
_desc: '[tree-cli](https://github.com/MrRaindrop/tree-cli) is a recursive directory listing program that produces a depth indented listing of files. With no arguments, tree lists the files in the current directory. When directory arguments are given, tree lists all the files and/or directories found in the given directories each in turn. Upon completion of listing all files/directories found, tree returns the total number of files and/or directories listed.'
_name: tree-cli
_github: https://github.com/MrRaindrop/tree-cli
ansible: professormanhattan.tree
apt: tree
brew: tree
choco: tree
dnf: tree
pacman: tree
tree-sitter:
_bin: tree-sitter
_desc: CLI tool for creating and testing tree-sitter parsers
_github: https://github.com/tree-sitter/tree-sitter-cli
_name: tree-sitter-cli
cargo: tree-sitter-cli
trellis:
_bin: trellis
_desc: A CLI to manage Trellis projects
_github: https://github.com/roots/trellis-cli
_home: https://roots.io/trellis/
_name: trellis
brew: roots/tap/trellis-cli
trivy:
_bin: trivy
_desc: Scanner for vulnerabilities in container images, file systems, and Git repositories, as well as for configuration issues
_github: https://github.com/aquasecurity/trivy
_name: trivy
brew: trivy
github: github.com/aquasecurity/trivy
yay: trivy-bin
trufflehog:
_bin: trufflehog
_desc: Find credentials all over the place
_github: https://github.com/trufflesecurity/trufflehog
_home: https://trufflesecurity.com/trufflehog/
_name: trufflehog
brew: trufflesecurity/trufflehog/trufflehog
trunk:
_bin: trunk
_desc: An all-in-one linter / code auto-fixer augmented by a freemium web service
_docs: https://docs.trunk.io/
_github: false
_home: https://trunk.io/
cask: trunk-io
npm: '@trunkio/launcher'
script: curl https://get.trunk.io -fsSL | bash -s -- -y
ts2c:
_bin: ts2c
_desc: Convert Javascript/TypeScript to C
_github: https://github.com/andrei-markeev/ts2c
_name: ts2c
npm: ts2c
tunnelblick:
_app: Tunnelblick.app
_desc: Tunnelblick is a macOS menubar tray application that helps you control OpenVPN.
_docs: https://tunnelblick.net/documents.html
_github: https://github.com/Tunnelblick/Tunnelblick
_home: https://tunnelblick.net/
_name: Tunnelblick
cask: tunnelblick
turbo:
_bin: turbo
_github: https://github.com/vercel/turbo
_name: Turbo
npm: turbo
typescript:
_bin: tsc
_desc: TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.
_docs: https://www.typescriptlang.org/docs/
_github: https://github.com/microsoft/TypeScript
_home: https://www.typescriptlang.org/
_name: TypeScript
brew: typescript
npm: tsc
typescript-to-lua:
_bin: tstl
_github: https://github.com/TypeScriptToLua/TypeScriptToLua
_name: TypeScript to Lua Converter
npm: typescript-to-lua
ugm:
_bin: ugm
_desc: A terminal based UNIX user and group browser
_docs: https://github.com/ariasmn/ugm
_github: https://github.com/ariasmn/ugm
_home: https://github.com/ariasmn/ugm
_name: ugm
go: github.com/ariasmn/ugm@latest
ulauncher:
_bin: ulauncher
_desc: '[Ulauncher](https://ulauncher.io/) is a software packaging and deployment system developed by Canonical for operating systems that use the Linux kernel. The packages, called ulaunchers, and the tool for using them, ulauncher, work across a range of Linux distributions and allow upstream software developers to distribute their applications directly to users. Ulaunchers are self-contained applications running in a sandbox with mediated access to the host system.'
_docs: https://docs.ulauncher.io/
_github: https://github.com/Ulauncher/Ulauncher/
_home: https://ulauncher.io/
_name: Ulauncher
ansible: professormanhattan.ulauncher
ultra:
_bin: ultra
_desc: Ultra fast monorepo script runner and build tool
_docs: https://github.com/folke/ultra-runner
_github: https://github.com/folke/ultra-runner
_home: https://www.npmjs.com/package/ultra-runner
_name: Ultra Task Runner
npm: ultra-runner
unbuffer:
_bin: unbuffer
_name: Unbuffer
_github: false
apt: unbuffer
# expect package on Homebrew contains unbuffer
brew: expect
dnf: unbuffer
pacman: unbuffer
unikraft:
_bin: kraft
_github: https://github.com/unikraft/unikraft
_name: Unikraft
brew: unikraft/cli/kraftkit
script: curl --proto '=https' --tlsv1.2 -sSf https://get.kraftkit.sh | sh
unison:
_bin: unison
_github: https://github.com/bcpierce00/unison
_name: Unison
brew: unison
choco: unison
up:
_bin: up
_desc: up, which is short for [Ultimate Plumber](https://github.com/akavel/up), is a tool for writing Linux pipes in a terminal-based UI interactively, with an instant live preview of command results.
_github: https://github.com/akavel/up
_name: Ultimate Plumber (up)
ansible: professormanhattan.up
brew: up
github: github.com/akavel/up
pkg: up
yay: up
upscayl:
_bin: upscayl
_github: https://github.com/upscayl/upscayl
_name: Upscayl
_todo: Recheck for Homebrew Cask
appimage: Upscayl
choco: upscayl
flatpak: org.upscayl.Upscayl
snap: upscayl
upt:
_bin: upt
_desc: Universal package-management tool for Windows, macOS and Linux
_github: https://github.com/sigoden/upt
_name: upt
cargo: upt
'cargo:': upt
upx:
_bin: upx
_desc: '[UPX](https://upx.github.io/) is an advanced executable file compressor. UPX will typically reduce the file size of programs and DLLs by around 50%-70%, thus reducing disk space, network load times, download times and other distribution and storage costs. It supports compressing a wide variety of binary-like files. Surprisingly, it even compresses executables better than WinZip. Best of all, it is free and open source.'
_docs: https://github.com/upx/upx
_github: https://github.com/upx/upx
_home: https://upx.github.io/
_name: UPX
ansible: professormanhattan.upx
apt: upx
brew: upx
choco: upx
dnf:fedora: upx
pacman: upx
port: upx
scoop: upx
usql:
_bin: usql
_github: https://github.com/xo/usql
_name: Universal SQL CLI
brew: xo/xo/usql
choco: usql
go: github.com/xo/usql@latest
scoop: usql
util-linux:
_github: false
_bin:
- cal
- chmem
- hexdump
apt: util-linux
dnf: util-linux
pacman: util-linux
utm:
_app: UTM.app
_bin: utm
_github: https://github.com/utmapp/UTM
_name: UTM
cask: utm
vagrant:
_bin: vagrant
_desc: '[Vagrant](https://www.vagrantup.com/) is an open-source software product for building and maintaining portable virtual software development environments (e.g., for VirtualBox, KVM, Hyper-V, Docker containers, VMware, and AWS).'
_docs: https://www.vagrantup.com/docs
_github: https://github.com/hashicorp/vagrant
_home: https://www.vagrantup.com/
_name: Vagrant
ansible: professormanhattan.vagrant
apt: vagrant
brew: hashicorp/tap/vagrant
cask: vagrant
choco: vagrant
dnf:fedora: vagrant
pacman: vagrant
scoop: vagrant
vagrant-manager:
_app: Vagrant Manager.app
_bin: null
_desc: Status bar menu application that allows you to manage Vagrant available on macOS and Windows
_docs: https://github.com/lanayotech/vagrant-manager
_github: https://github.com/lanayotech/vagrant-manager
_home: https://www.vagrantmanager.com/
_name: Vagrant Manager
cask: vagrant-manager
choco: vagrant-manager
vagrant-vmware-utility:
_bin: false
_name: Vagrant VMWare Utility
_github: https://github.com/hashicorp/vagrant-vmware-desktop
_post:cask: |
#!/usr/bin/env bash
sudo ln -s /opt/vagrant-vmware-desktop/bin/vagrant-vmware-utility /usr/local/bin/vagrant-vmware-utility
_when:cask: '! test -f /opt/vagrant-vmware-desktop/bin/vagrant-vmware-utility'
ansible: professormanhattan.vmware
cask: vagrant-vmware-utility
choco: vagrant-vmware-utility
script: rm -rf /tmp/vagrant-vmware-utility_1.0.21_linux_amd64.zip && curl https://releases.hashicorp.com/vagrant-vmware-utility/1.0.21/vagrant-vmware-utility_1.0.21_linux_amd64.zip -o /tmp/vagrant-vmware-utility_1.0.21_linux_amd64.zip && unzip /tmp/vagrant-vmware-utility_1.0.21_linux_amd64.zip && sudo mv -f /tmp/vagrant-vmware-utility /usr/local/bin/vagrant-vmware-utility && sudo chmod +x /usr/local/bin/vagrant-vmware-utility
vale:
_bin: vale
_github: https://github.com/errata-ai/vale
_name: Vale
brew: vale
choco: vale
go: github.com/errata-ai/vale@latest
vault:
_bin: vault
_desc: '[HashiCorp Vault](https://www.vaultproject.io/) secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets. Basically, it is a tool for managing any data that you want to tightly control access to. It also has some advanced integrations with systems like AWS.'
_docs: https://developer.hashicorp.com/vault/docs
_github: https://github.com/hashicorp/vault
_home: https://vaultproject.io/
_name: HashiCorp Vault
_service: vault
_service:brew: hashicorp/tap/vault
ansible: professormanhattan.vault
brew: hashicorp/tap/vault
yay: vault-cli
vdirsyncer:
_bin: vdirsyncer
_github: https://github.com/pimutils/vdirsyncer
_name: vdirsyncer
_todo: echo "TODO - Implement the following command after automating the process of setting up contact groups / calendars to sync" && echo "vdirsyncer discover contacts" && echo "vdirsyncer sync contacts" && echo "TODO - Add to cron" && echo "*/30 * * * * /usr/local/bin/vdirsyncer sync > /dev/null" && echo "This should be in _post instead of _pre - it is here for testing purposes"
pipx: vdirsyncer
vector:
_bin: vector
_desc: Vector is a lightweight, ultra-fast tool for building observability pipelines that lets you collect, transform, and route all your logs and metrics with one simple tool.
_docs: https://vector.dev/docs
_github: https://github.com/vectordotdev/vector
_home: https://vector.dev/
_name: Vector
_service: vector
# Unlisted on their website and formulae didn't seem to be registering the bin in the PATH
brew: vectordotdev/brew/vector
helm: https://helm.vector.dev
pacman: vector
script:darwin: curl --proto '=https' --tlsv1.2 -sSf https://sh.vector.dev | bash
script:linux: curl --proto '=https' --tlsv1.2 -sSf https://sh.vector.dev | bash
velero:
_bin: velero
_desc: '[Velero](https://velero.io/) gives you tools to back up and restore your Kubernetes cluster resources and persistent volumes'
_docs: https://velero.io/docs/
_github: https://github.com/vmware-tanzu/velero
_home: https://velero.io/
_name: velero
brew: velero
choco: velero
github: github.com/vmware-tanzu/velero
yay: velero-bin
vermin:
_bin: vermin
_github: https://github.com/mhewedy/vermin
_name: Vermin
go: github.com/mhewedy/vermin@latest
vhs:
_bin: vhs
_desc: Your CLI home video recorder
_docs: https://github.com/charmbracelet/vhs
_github: https://github.com/charmbracelet/vhs
_home: https://charm.sh/
_name: VHS
brew: vhs
go: github.com/charmbracelet/vhs@latest
nix-env: nixpkgs.vhs
pacman: vhs
port: vhs
scoop: vhs
xbps: vhs
vidmerger:
_bin: vidmerger
_deps:
- ffmpeg
_desc: Merge video & audio files via CLI
_docs: https://github.com/tgotwig/vidmerger
_github: https://github.com/tgotwig/vidmerger
_home: https://github.com/tgotwig/vidmerger
_name: VidMerger
brew: tgotwig/vidmerger/vidmerger
choco: vidmerger
vim:
_bin: vim
_desc: '[Vim](https://www.vim.org/) is a greatly improved version of the good old UNIX editor Vi'
_docs: https://www.vim.org/docs.php
_github: https://github.com/vim/vim
_home: https://www.vim.org/
_name: VIM
_post: |
#!/usr/bin/env bash
logg info "Installing VIM plugins" && vim +'PlugInstall --sync' +qall
# @description This script installs the extensions defined in `${XDG_CONFIG_HOME:-$HOME/.config}/coc/extensions/package.json`
# which should correlate to the Coc extensions defined in `${XDG_CONFIG_HOME:-$HOME/.config}/vim/vimrc`.
installCocExtensions() {
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/coc/extensions/package.json" ]; then
logg info "Running npm i --no-package-lock in ${XDG_CONFIG_HOME:-$HOME/.config}/coc/extensions"
cd "${XDG_CONFIG_HOME:-$HOME/.config}/coc/extensions" && npm i --no-package-lock
logg info "Running vim +CocUpdateSync +qall" && vim +CocUpdateSync +qall
else
logg info "Skipping Coc extension installation because ${XDG_CONFIG_HOME:-$HOME/.config}/coc/extensions/package.json is missing"
fi
}
logg info "Updating VIM coc extensions" && installCocExtensions
ansible: professormanhattan.vim
apt: vim
brew: vim
choco: vim
dnf: vim
pacman: vim
port: vim
scoop: vim
virtualbox:
_app: VirtualBox.app
_bin: null
_desc: '[VirtualBox](https://www.virtualbox.org/) is a free and open-source hosted hypervisor for x86 virtualization, developed by Oracle Corporation. Created by Innotek, it was acquired by Sun Microsystems in 2008, which was in turn acquired by Oracle in 2010. VirtualBox may be installed on Windows, macOS, Linux, Solaris and OpenSolaris.'
_docs: https://www.virtualbox.org/wiki/Documentation
_github: https://github.com/mirror/vbox
_home: https://www.virtualbox.org/
_name: VirtualBox
_post: |
#!/usr/bin/env bash
# @file VirtualBox Extension Pack
# @brief Ensures the VirtualBox extension pack is installed.
# @description
# This script ensures the VirtualBox extension pack that corresponds with VirtualBox's version is properly installed.
### Run logic if VirtualBox is installed
if command -v VirtualBox > /dev/null; then
### Install VirtualBox extension pack if it is not installed already
if [ ! -d /usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack ] && [ ! -d /Applications/VirtualBox.app/Contents/MacOS/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack ]; then
logg info 'Acquiring VirtualBox version information'
VBOX_VERSION="$(VirtualBox --help | head -n 1 | cut -f 6 -d' ')"
VBOX_VERSION="${VBOX_VERSION//v}"
### Set up folders
# Check for macOS installation before creating ExtensionPacks folder on Linux machines
if [ ! -d /Applications/VirtualBox.app ]; then
sudo mkdir -p /usr/lib/virtualbox/ExtensionPacks
fi
mkdir -p /tmp/vbox
cd /tmp/vbox
### Download extension pack
logg info 'Downloading VirtualBox extension pack'
curl -sSL https://download.virtualbox.org/virtualbox/$VBOX_VERSION/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack -o /tmp/vbox/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack || logg error 'Failed to download the VirtualBox extension pack so the extension pack installation will be skipped'
### Install extension pack
if [ -f /tmp/vbox/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack ]; then
logg info 'Installing VirtualBox extension pack'
echo 'y' | sudo VBoxManage extpack install --replace /tmp/vbox/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack
logg success 'Successfully installed VirtualBox extension pack'
fi
else
logg info 'VirtualBox Extension pack is already installed'
fi
else
logg info 'VirtualBox is not installed so VirtualBox Extension pack will not be installed'
fi
_post:choco: |
# TODO
# TODO
# TODO
# TODO
cd C:/Program Files/Oracle/VirtualBox/
# TODOFigure out how to get version without Ansible here and download / install the extpack
wget https://download.virtualbox.org/virtualbox/' + vbox_version + '/Oracle_VM_VirtualBox_Extension_Pack-' + vbox_version + '.vbox-extpack'
echo y | VBoxManage extpack install --replace ./Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack
_pre:dnf: |
#!/usr/bin/env bash
. /etc/os-release
cat <<EOF | sudo tee /etc/yum.repos.d/virtualbox.repo
[virtualbox]
name=Fedora $releasever - $basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/$ID/$VERSION_ID/\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
EOF
sudo dnf -y install @development-tools
sudo dnf -y install kernel-headers kernel-devel dkms elfutils-libelf-devel qt5-qtx11extras
_todo: Add support for arm64 - currently brew install --cask virtualbox requires intel 64 bit
ansible: professormanhattan.virtualbox
apt: virtualbox
cask: virtualbox
choco: virtualbox
dnf: virtualbox
pacman: virtualbox
virtualenv:
_bin: virtualenv
_desc: Tool for creating isolated virtual python environments
_docs: https://virtualenv.pypa.io/en/latest/
_github: https://github.com/pypa/virtualenv
_name: virtualenv
brew: virtualenv
pipx: virtualenv
visual-studio:
# TODO - Figure out why we included this _post script
# _post:cask: 'APP_LINK="$(find "${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/visual-studio" -mindepth 2 -maxdepth 2 -name "*.app*" | head -n1)" && open "$APP_LINK"'
_app: Visual Studio.app
_bin: null
_desc: '[Microsoft Visual Studio](https://visualstudio.microsoft.com/) is an integrated development environment from Microsoft. It is used to develop computer programs, as well as websites, web apps, web services and mobile apps.'
_docs: https://docs.microsoft.com/en-us/visualstudio/windows/?view=vs-2022
_github: Not open-source
_home: https://visualstudio.microsoft.com/
_name: Visual Studio
ansible:windows: professormanhattan.visualstudio
cask: visual-studio
choco: visualstudio2022community
vlc:
_app: VLC.app
_bin: vlc
_desc: '[VLC](https://www.videolan.org/) media player is a free and open-source, portable, cross-platform media player software, and streaming media server developed by the VideoLAN project. VLC is available for desktop operating systems, and mobile platforms, such as Android, iOS, iPadOS, Tizen, Windows 10 Mobile, and Windows Phone.'
_docs: https://www.videolan.org/doc/
_github: https://github.com/videolan/vlc
_home: https://www.videolan.org/vlc/
_name: VLC Media Player
ansible: professormanhattan.vlc
apt: vlc
cask: vlc
choco: vlc
flatpak: org.videolan.VLC
snap: vlc
vmware:
_app: VMware Fusion.app
_bin: vmware
_bin:cask: vmware-id
_github: false
_desc: '[VMWare Workstation](https://www.vmware.com/products/workstation-pro.html) (or [VMWare Fusion](https://www.vmware.com/products/fusion.html) in the case of macOS) is a hosted hypervisor that runs on x64 versions of Windows and Linux operating systems. It enables users to set up virtual machines on a single physical machine and use them simultaneously along with the host machine. It is similar to [VirtualBox](https://gitlab.com/megabyte-labs/ansible-roles/virtualbox).'
_docs: https://docs.vmware.com/
_home: https://www.vmware.com/
_name: VMWare
_post: |
#!/usr/bin/env bash
# @file VMWare Configuration
# @brief Installs VMWare Workstation Pro on Linux devices, applies a "publicly-retrieved" license key (see disclaimer), and automatically accepts the terms and conditions
# @description
# This script ensures the user included `vmware` in their software installation list. It then checks for presence of the `vmware` utility. If it is not present, then the script:
#
# 1. Downloads the [VMWare Workstation Pro](https://www.vmware.com/content/vmware/vmware-published-sites/us/products/workstation-pro.html.html) Linux installer
# 2. Installs VMWare Workstation Pro
# 3. Passes options to the installation script that automatically apply a publicly retrived license key and accept the Terms & Conditions
#
# This script first checks if `vagrant`, `vmware`, and `vagrant-vmware-utility` are available in the `PATH`. If they are present, then the script
# configures the [`vagrant-vmware-utility`](https://developer.hashicorp.com/vagrant/docs/providers/vmware/vagrant-vmware-utility) by generating the required security certificates and enabling the service.
# This system package enables the capability of controlling both VMWare Workstation and VMWare Fusion with Vagrant.
#
# Since this script runs only when `vagrant`, `vmware`, and `vagrant-vmware-utility` are in the `PATH`, this means that it will run
# when you use an installation template that includes all three pieces of software in the software list defined in
# `home/.chezmoidata.yaml`.
#
# **DISCLAIMER:** If you plan on using VMWare Workstation for anything but evaluation purposes, then we highly suggest purchasing a copy
# of VMWare Workstation. The "publicly-retrived" license keys are scattered throughout GitHub and we are not exactly
# sure why they work. You can pass in your own key by utilizing the `VMWARE_WORKSTATION_LICENSE_KEY` environment variable. More details on
# using environment variables or repository-housed encrypted secrets can be found in our [Secrets documentation](https://install.doctor/docs/customization/secrets).
#
# ## VMWare on macOS
#
# This script only installs VMWare Workstation on Linux. The macOS-variant titled VMWare Fusion can be installed using a Homebrew
# cask so a "work-around" script does not have to be used.
#
# ## VMWare vs. Parallels vs. VirtualBox vs. KVM vs. Hyper-V
#
# There are a handful of VM virtualization providers you can choose from. VMWare is a nice compromise between OS compatibility and performance.
# Parallels, on the hand, might be better for macOS since it is designed specifically for macOS. Finally, VirtualBox is a truly free,
# open-source option that does not come with the same optimizations that VMWare and Parallels provide.
#
# Other virtualization options include KVM (Linux / macOS) and Hyper-V (Windows). These options are better used for headless
# systems.
#
# ## Links
#
# * [VMWare Workstation homepage](https://www.vmware.com/content/vmware/vmware-published-sites/us/products/workstation-pro.html.html)
# * [Vagrant VMWare Utility on GitHub](https://github.com/hashicorp/vagrant-vmware-desktop)
# * [`home/.chezmoidata.yaml`](https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoidata.yaml)
# * [Default license key gist](https://gist.github.com/PurpleVibe32/30a802c3c8ec902e1487024cdea26251)
### Run logic if VMware is installed
if command -v vmware > /dev/null; then
### Build kernel modules if they are not present
if [ ! -f "/lib/modules/$(uname -r)/misc/vmmon.ko" ] || [ ! -f "/lib/modules/$(uname -r)/misc/vmnet.ko" ]; then
### Build VMWare host modules
logg info 'Building VMware host modules'
if sudo vmware-modconfig --console --install-all; then
logg success 'Built VMWare host modules successfully with sudo vmware-modconfig --console --install-all'
else
logg info 'Acquiring VMware version from CLI'
VMW_VERSION="$(vmware --version | cut -f 3 -d' ')"
mkdir -p /tmp/vmw_patch
cd /tmp/vmw_patch
logg info 'Downloading VMware host module patches' && curl -sSL "https://github.com/mkubecek/vmware-host-modules/archive/workstation-$VMW_VERSION.tar.gz" -o /tmp/vmw_patch/workstation.tar.gz
tar -xzf /tmp/vmw_patch/workstation.tar.gz
cd vmware*
logg info 'Running sudo make and sudo make install'
sudo make
sudo make install
logg success 'Successfully configured VMware host module patches'
fi
### Sign VMware host modules if Secure Boot is enabled
if [ -f /sys/firmware/efi ]; then
logg info 'Signing host modules'
mkdir -p /tmp/vmware
cd /tmp/vmware
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VMware/"
"/usr/src/linux-headers-$(uname -r)/scripts/sign-file" sha256 ./MOK.priv ./MOK.der "$(modinfo -n vmmon)"
"/usr/src/linux-headers-$(uname -r)/scripts/sign-file" sha256 ./MOK.priv ./MOK.der "$(modinfo -n vmnet)"
echo '' | mokutil --import MOK.der
logg success 'Successfully signed VMware host modules. Reboot the host before powering on VMs'
fi
### Patch VMware with Unlocker
if [ ! -f /usr/lib/vmware/isoimages/darwin.iso ]; then
logg info 'Acquiring VMware Unlocker latest release version'
UNLOCKER_URL="$(curl -sSL 'https://api.github.com/repos/DrDonk/unlocker/releases/latest' | jq -r '.assets[0].browser_download_url')"
mkdir -p /tmp/vmware-unlocker
cd /tmp/vmware-unlocker
logg info 'Downloading unlocker.zip'
curl -sSL "$UNLOCKER_URL" -o unlocker.zip
unzip unlocker.zip
cd linux
logg info 'Running the unlocker'
echo "y" | sudo ./unlock
logg success 'Successfully unlocked VMware for macOS compatibility'
else
logg info '/usr/lib/vmware/isoimages/darwin.iso is already present on the system so VMware macOS unlocking will not be performed'
fi
if [[ ! "$(test -d /proc && grep Microsoft /proc/version > /dev/null)" ]]; then
### Start / enable VMWare service
logg info 'Ensuring vmware.service is enabled and running'
sudo systemctl enable vmware.service
sudo systemctl restart vmware.service
### Start / enable VMWare Workstation Server service
logg info 'Ensuring vmware-workstation-server.service is enabled and running'
sudo systemctl enable vmware-workstation-server.service
sudo systemctl restart vmware-workstation-server.service
### Start / enable VMWare USB Arbitrator service
if command -v vmware-usbarbitrator.service > /dev/null; then
logg info 'Ensuring vmware-usbarbitrator.service is enabled and running'
sudo systemctl enable vmware-usbarbitrator.service
sudo systemctl restart vmware-usbarbitrator.service
else
logg warn 'vmware-usbarbitrator does not exist in the PATH'
fi
fi
else
logg info 'VMware host modules are present'
fi
else
logg warn 'VMware Workstation is not installed so the VMware Unlocker will not be installed'
fi
# @description Only run logic if both Vagrant and VMWare are installed
if command -v vagrant > /dev/null && command -v vmware-id > /dev/null; then
# @description Vagrant VMWare Utility configuration
if command -v vagrant-vmware-utility > /dev/null; then
if [ -f /usr/local/bin/certificates/vagrant-utility.key ]; then
logg info 'Assuming Vagrant VMWare Utility certificates have been properly generated since /usr/local/bin/certificates/vagrant-utility.key is present'
else
logg info 'Generating Vagrant VMWare Utility certificates'
sudo vagrant-vmware-utility certificate generate
logg success 'Generated Vagrant VMWare Utility certificates via vagrant-vmware-utility certificate generate'
fi
logg info 'Ensuring the Vagrant VMWare Utility service is enabled'
sudo vagrant-vmware-utility service install || EXIT_CODE=$?
if [ -n "$EXIT_CODE" ]; then
logg info 'The Vagrant VMWare Utility command vagrant-vmware-utility service install failed. It is probably already setup.'
fi
fi
else
logg info 'Vagrant is not installed so the Vagrant plugins will not be installed'
logg info 'Vagrant or VMWare is not installed so the Vagrant VMWare utility will not be configured'
fi
ansible: professormanhattan.vmware
cask: vmware-fusion
script:linux: |
if ! command -v vmware > /dev/null; then
### Download VMWare Workstation
VMWARE_WORKSTATION_URL=https://www.vmware.com/go/getworkstation-linux
VMWARE_WORKSTATION_DIR=/tmp/workstation-downloads
mkdir -p "$VMWARE_WORKSTATION_DIR"
logg info 'Downloading VMware Workstation Installer' && curl -sSLA "Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20220101 Firefox/102.0" "$VMWARE_WORKSTATION_URL" -o "$VMWARE_WORKSTATION_DIR/tryworkstation-linux-64.sh"
### Register product key / license
if [ -n "$VMWARE_WORKSTATION_LICENSE_KEY" ]; then
logg info 'Registering VMware Workstation Pro license with serial number' && sudo "$VMWARE_WORKSTATION_DIR/tryworkstation-linux-64.sh" --eulas-agreed --console --required --set-setting vmware-workstation serialNumber "$VMWARE_WORKSTATION_LICENSE_KEY"
else
logg info 'Agreeing to VMWare Workstation Pro license (without serial number)' && sudo "$VMWARE_WORKSTATION_DIR/tryworkstation-linux-64.sh" --eulas-agreed --console --required
fi
logg success 'VMware Workstation installed successfully'
else
logg info 'VMware Workstation is already installed'
fi
volta:
_bin: volta
_desc: '[Volta](https://volta.sh/) is a hassle-free Javascript Tool Manager. It is a fast, reliable and universal tool manager. It supports multiple package managers and provides extensibility hooks for site-specific customization.'
_docs: https://docs.volta.sh/
_github: https://github.com/volta-cli/volta
_home: https://volta.sh
_name: volta-vm
_post: |
#!/usr/bin/env bash
export VOLTA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/volta"
export PATH="$VOLTA_HOME/bin:$PATH"
volta setup
volta install node@latest
volta install yarn@latest
ansible: professormanhattan.volta
brew: volta
scoop: volta
vpn:
_bin: null
_github: false
_desc: You can populate a configuration to power this role. When configured properly, the system's built-in VPN client will be configured with your desired settings.
_name: System VPN
ansible: professormanhattan.vpn
vscode:
_app: Visual Studio Code.app
_bin: code
_desc: '[Visual Studio Code](https://code.visualstudio.com/) is a freeware source-code editor made by Microsoft for Windows, Linux and macOS. Features include support for debugging, syntax highlighting, intelligent code completion, snippets, code refactoring, and embedded Git.'
_docs: https://code.visualstudio.com/api/references/vscode-api
_github: https://github.com/microsoft/vscode
_home: https://code.visualstudio.com/
_name: Visual Studio Code
_post: |
#!/usr/bin/env bash
# @file VSCode Extensions / Global NPM Modules Fallback
# @brief Installs all of the Visual Studio Code extensions specified in the [`home/dot_config/Code/User/extensions.json`](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/Code/User/extensions.json) file and installs NPM packages to the system `/` directory as a catch-all for tools that recursively search upwards for shared NPM configurations.
# @description
# This script loops through all the extensions listed in the [`home/dot_config/Code/User/extensions.json`](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/Code/User/extensions.json)
# file. It installs the extensions when either Visual Studio Code or VSCodium is installed. If both are installed, then both will
# have the plugins automatically installed.
#
# The `extensions.json` file is used to house the plugin list so that if you decide to remove this auto-installer script then
# VSCode will retain some functionality from the file. It will show a popover card that recommends installing any plugins in the
# list that are not already installed.
#
# ## Plugin Settings
#
# Most of the plugin settings have been configured and optimized to work properly with the other default settings
# included by Install Doctor. These settings can be found in the [`home/dot_config/Code/User/settings.json` file](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/Code/User/settings.json).
# If you manage to come up with an improvement, please open a pull request so other users can benefit from your work.
#
# ## Default Extensions
#
# The default plugins in the `extensions.json` list are catered mostly towards full-stack web development. The technologies
# that are catered to by the default extensions relate to TypeScript, JavaScript, Go, Python, Rust, and many more technologies.
# Most of the plugins are not language-specific.
#
# ## Global NPM Modules Fallback
#
# This script makes fallback linter and code auto-fixer configurations globally available. Normally, configurations, like
# the ones used for ESLint, are installed at the project level by specifying the NPM package configuration
# in the `package.json` file (or via an `.eslintrc` file). However, whenever no configuration is present, IDEs like
# Visual Studio Code will recursively search upwards in the directory tree, trying to find an ESLint configuration.
#
# This script addresses this issue by installing a set of shared NPM packages that enhance the functionality of tools like ESLint
# by placing a `package.json` with all the necessary settings into the highest directory possible and then installing the package's
# modules. This normally results in a `package.json` file and `node_modules/` folder at the root of the system.
#
# ## NPM Packages Included
#
# To reduce clutter, all the configurations are mapped out in the `package.json` file. Our default `package.json` file includes
# the following configuration:
#
# ```json
# <!-- AUTO-GENERATED:START (REMOTE:url=https://gitlab.com/megabyte-labs/install.doctor/-/raw/master/home/dot_config/Code/User/package.json) -->
# {
# ...
# // Notable dependencies listed below
# "dependencies": {
# "eslint-config-strictlint": "latest",
# "jest-preset-ts": "latest",
# "prettier-config-strictlint": "latest",
# "remark-preset-strictlint": "latest",
# "stylelint-config-strictlint": "latest"
# },
# ...
# }
# <!-- AUTO-GENERATED:END -->
# ```
#
# ## Strict Lint
#
# More details on the shared configurations can be found at [StrictLint.com](https://strictlint.com).
# Strict Lint is another brand maintained by Megabyte Labs that is home to many of the well-crafted
# shared configurations that are included in our default NPM configuration fallback settings.
#
# ## Notes
#
# * If the system root directory is not writable (even with `sudo`), then the shared modules are installed to the provisioning user's `$HOME` directory
#
# ## Links
#
# * [`package.json` configuration file](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/Code/User/package.json)
# * [StrictLint.com documentation](https://strictlint.com/docs)
# * [Visual Studio Code settings folder](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/Code/User)
# * [Visual Studio Code `extensions.json`](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/Code/User/extensions.json)
### Hides useless error during extension installations
# Error looks like:
# (node:53151) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
# (Use `Electron --trace-deprecation ...` to show where the warning was created)
export NODE_OPTIONS=--throw-deprecation
# @description Install Visual Studio Code extensions if they are not already installed (by checking the `code --list-extensions` output)
if command -v code > /dev/null; then
EXTENSIONS="$(code --list-extensions)"
jq -r '.recommendations[]' "${XDG_CONFIG_HOME:-$HOME/.config}/Code/User/extensions.json" | while read EXTENSION; do
if ! echo "$EXTENSIONS" | grep -iF "$EXTENSION" > /dev/null; then
logg info 'Installing Visual Studio Code extension '"$EXTENSION"'' && code --install-extension "$EXTENSION"
logg success 'Installed '"$EXTENSION"''
else
logg info ''"$EXTENSION"' already installed'
fi
done
else
logg info 'code executable not available - skipping plugin install process for it'
fi
if command -v code > /dev/null && command -v npm > /dev/null && [ -f "${XDG_DATA_HOME:-$HOME/.local/share}/vscode/package.json" ]; then
### Install linter fallback node_modules / package.json to system or home directory
if sudo cp -f "${XDG_DATA_HOME:-$HOME/.local/share}/vscode/package.json" /package.json; then
logg info 'Successfully copied linter fallback configurations package.json to /package.json'
logg info 'Installing system root directory node_modules'
cd / && sudo npm i --quiet --no-package-lock || EXIT_CODE=$?
else
logg warn 'Unable to successfully copy linter fallback configurations package.json to /package.json'
logg info 'Installing linter fallback configurations node_modules to home directory instead'
cp -f "${XDG_DATA_HOME:-$HOME/.local/share}/vscode/package.json" "$HOME/package.json"
cd ~ && npm i --quiet --no-package-lock || EXIT_CODE=$?
fi
### Log message if install failed
if [ -n "$EXIT_CODE" ]; then
logg warn 'Possible error(s) were detected while installing linter fallback configurations to the home directory.'
logg info "Exit code: $EXIT_CODE"
else
logg info 'Installed linter fallback configuration node_modules'
fi
else
logg info 'Skipping installation of fallback linter configurations because one or more of the dependencies is missing.'
fi
ansible: professormanhattan.vscode
cask: visual-studio-code
choco: vscode
flatpak: com.visualstudio.code
snap: code --classic
yay: visual-studio-code-bin
vscodium:
_app: VSCodium.app
_bin: codium
_github: https://github.com/VSCodium/vscodium
_post: |
#!/usr/bin/env bash
# @brief See `_post` entry for `vscode` for a description
export NODE_OPTIONS=--throw-deprecation
# @description Check for the presence of the `codium` command in the `PATH` and install extensions for VSCodium if it is present
if command -v codium > /dev/null; then
EXTENSIONS="$(codium --list-extensions)"
jq -r '.recommendations[]' "${XDG_CONFIG_HOME:-$HOME/.config}/Code/User/extensions.json" | while read EXTENSION; do
if ! echo "$EXTENSIONS" | grep -iF "$EXTENSION" > /dev/null; then
logg info 'Installing VSCodium extension '"$EXTENSION"'' && codium --install-extension "$EXTENSION" && logg success 'Installed '"$EXTENSION"''
else
logg info ''"$EXTENSION"' already installed'
fi
done
else
logg info 'codium executable not available - skipping plugin install process for it'
fi
appimage: vscodium/vscodium
cask: vscodium
choco: vscodium
flatpak: com.vscodium.codium
nix: nixpkgs.vscodium
scoop: vscodium
snap: codium --classic
winget: vscodium
yay: vscodium-bin
vup:
_bin: vup
_github: https://github.com/vup-app/vup
flatpak: app.vup.Vup
w3m:
_bin: w3m
_desc: w3m is a pager/text-based WWW browser. You can browse local documents and/or documents on the WWW using a terminal emulator.
_docs: https://w3m.sourceforge.net/MANUAL
_github: https://github.com/tats/w3m
_home: https://tracker.debian.org/pkg/w3m
_name: w3m
apt: w3m
brew: w3m
dnf: w3m
pacman: w3m
port: w3m
zypper: w3m
wails:
_bin: wails
_desc: '[Wails](https://github.com/wailsapp/wails) offers a different approach to providing web interfaces to Go programs: it provides the ability to wrap both Go code and a web frontend into a single binary.'
_name: Wails
_github: https://github.com/wailsapp/wails
ansible: professormanhattan.wails
go: github.com/wailsapp/wails/cmd/wails@latest
wallpaper-cli:
_bin: wallpaper
_github: https://github.com/sindresorhus/wallpaper-cli
_name: Wallpaper CLI
npm: wallpaper-cli
warp:
_app: Cloudflare WARP.app
_bin: warp-cli
_github: false
_desc: '[Cloudflare WARP Client](https://cloudflarewarp.com/) is a free app that makes your Internet safer'
_home: https://cloudflarewarp.com/
_name: Cloudflare WARP Client
_post: |
#!/usr/bin/env bash
# @file CloudFlare WARP
# @brief Installs CloudFlare WARP, ensures proper security certificates are in place, and connects the device to CloudFlare WARP.
# @description
# This script is intended to connect the device to CloudFlare's Zero Trust network with nearly all of its features unlocked.
# Homebrew is used to install the `warp-cli` on macOS. On Linux, it can install `warp-cli` on most Debian systems and some RedHat
# systems. CloudFlare WARP's [download page](https://pkg.cloudflareclient.com/packages/cloudflare-warp) is somewhat barren.
#
# ## MDM Configuration
#
# If CloudFlare WARP successfully installs, it first applies MDM configurations (managed configurations). If you would like CloudFlare
# WARP to connect completely headlessly (while losing some "user-posture" settings), then you can populate the following three secrets:
#
# 1. `CLOUDFLARE_TEAMS_CLIENT_ID` - The ID from a CloudFlare Teams service token. See [this article](https://developers.cloudflare.com/cloudflare-one/identity/service-tokens/).
# 2. `CLOUDFLARE_TEAMS_CLIENT_SECRET` - The secret from a CloudFlare Teams service token.
# 3. `CLOUDFLARE_TEAMS_ORG` - The ID of your Zero Trust organization. This variable must be passed in as an environment variable and is housed in the `home/.chezmoi.yaml.tmpl` file. If you do not want to pass an environment variable, you can change the default value in `home/.chezmoi.yaml.tmpl` on your own fork.
#
# The two variables above can be passed in using either of the methods described in the [Secrets documentation](https://install.doctor/docs/customization/secrets).
#
# ## Headless CloudFlare WARP Connection
#
# Even if you do not provide the two variables mentioned above, the script will still headlessly connect your device to the public CloudFlare WARP
# network, where you will get some of the benefits of a VPN for free. Otherwise, if they were passed in, then the script
# finishes by connecting to CloudFlare Teams.
#
# ## Application Certificates
#
# This script applies the techniques described on the [CloudFlare Zero Trust Install certificate manually page](https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/user-side-certificates/install-cloudflare-cert/)
# to configure the following utilities that leverage seperate certificate authorities:
#
# * Python
# * NPM
# * Git
# * Google Cloud SDK
# * AWS CLI
# * Google Drive for desktop
#
# Settings used to configure Firefox are housed inside of the Firefox configuration files stored as seperate configuration files
# outside of this script. **Note: The scripts that enable CloudFlare certificates for all these programs are currently commented out
# in this script.**
#
# ## Notes
#
# According to CloudFlare Teams [documentation on MDM deployment](https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/deployment/mdm-deployment/),
# on macOS the `com.cloudflare.warp.plist` file gets erased on reboot. Also, according to the documentation, the only way around this is to leverage
# an MDM SaaS provider like JumpCloud.
#
# ## Links
#
# * [Linux managed configuration](https://github.com/megabyte-labs/install.doctor/tree/master/home/dot_config/warp/private_mdm.xml.tmpl)
# * [macOS managed configuration](https://github.com/megabyte-labs/install.doctor/tree/master/home/Library/Managed%20Preferences/private_com.cloudflare.warp.plist.tmpl)
SSL_CERT_PATH="/etc/ssl/cert.pem"
### Install CloudFlare WARP (on non-WSL *nix systems)
if [[ ! "$(test -d /proc && grep Microsoft /proc/version > /dev/null)" ]]; then
if [ -d /System ] && [ -d /Applications ]; then
### Install on macOS
if [ ! -d "/Applications/Cloudflare WARP.app" ]; then
brew install --cask --no-quarantine --quiet cloudflare-warp
else
logg info 'Cloudflare WARP already installed'
fi
elif [ '{{ .host.distro.id }}' = 'debian' ]; then
### Add CloudFlare WARP desktop app apt-get source
if [ ! -f /etc/apt/sources.list.d/cloudflare-client.list ]; then
logg info 'Adding CloudFlare WARP keyring'
curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
logg info 'Adding apt source reference'
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
fi
### Update apt-get and install the CloudFlare WARP CLI
sudo apt-get update && sudo apt-get install -y cloudflare-warp
elif [ '{{ .host.distro.id }}' = 'ubuntu' ]; then
### Add CloudFlare WARP desktop app apt-get source
if [ ! -f /etc/apt/sources.list.d/cloudflare-client.list ]; then
logg info 'Adding CloudFlare WARP keyring'
curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
logg info 'Adding apt source reference'
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
fi
### Update apt-get and install the CloudFlare WARP CLI
sudo apt-get update && sudo apt-get install -y cloudflare-warp
elif command -v dnf > /dev/null && command -v rpm > /dev/null; then
### This is made for CentOS 8 and works on Fedora 36 (hopefully 36+ as well) with `nss-tools` as a dependency
sudo dnf instal -y nss-tools || NSS_TOOL_EXIT=$?
if [ -n "$NSS_TOOL_EXIT" ]; then
logg warn 'Unable to install nss-tools which was a requirement on Fedora 36 and assumed to be one on other systems as well.'
fi
### According to the download site, this is the only version available for RedHat-based systems
sudo rpm -ivh https://pkg.cloudflareclient.com/cloudflare-release-el8.rpm || RPM_EXIT_CODE=$?
if [ -n "$RPM_EXIT_CODE" ]; then
logg error 'Unable to install CloudFlare WARP using RedHat 8 RPM package'
fi
fi
fi
### Ensure certificate is installed
# Source: https://developers.cloudflare.com/cloudflare-one/static/documentation/connections/Cloudflare_CA.crt
# Source: https://developers.cloudflare.com/cloudflare-one/static/documentation/connections/Cloudflare_CA.pem
if [ -d /System ] && [ -d /Applications ] && command -v warp-cli > /dev/null; then
### Ensure certificate installed on macOS
if [ -z "$SSH_CONNECTION" ]; then
# if [ -z "$HEADLESS_INSTALL" ]; then
# logg info '**macOS Manual Security Permission** Requesting security authorization for Cloudflare trusted certificate'
# sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.crt"
# fi
logg info 'Updating the OpenSSL CA Store to include the Cloudflare certificate'
echo | sudo tee -a "$SSL_CERT_PATH" < "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem" > /dev/null
echo "" | sudo tee -a "$SSL_CERT_PATH"
else
logg warn 'Session is SSH so adding Cloudflare encryption key to trusted certificates via the security program is being bypassed since it requires Touch ID / Password verification.'
fi
if [ -f "/usr/local/opt/openssl@3/bin/c_rehash" ]; then
# Location on Intel macOS
logg info 'Ensuring /usr/local/etc/openssl@3/certs directory exists' && mkdir -p /usr/local/etc/openssl@3/certs
logg info 'Adding Cloudflare certificate to /usr/local/etc/openssl@3/certs/Cloudflare_CA.pem'
echo | sudo cat - "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem" >> /usr/local/etc/openssl@3/certs/Cloudflare_CA.pem
logg info 'Running /usr/local/opt/openssl@3/bin/c_rehash'
/usr/local/opt/openssl@3/bin/c_rehash > /dev/null && logg info 'OpenSSL certificate rehash successful'
elif [ -f "${HOMEBREW_PREFIX:-/opt/homebrew}/opt/openssl@3/bin/c_rehash" ]; then
# Location on arm64 macOS and custom Homebrew locations
logg info "Ensuring ${HOMEBREW_PREFIX:-/opt/homebrew}/etc/openssl@3/certs directory exists" && mkdir -p "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/openssl@3/certs"
logg info "Adding Cloudflare certificate to ${HOMEBREW_PREFIX:-/opt/homebrew}/etc/openssl@3/certs/Cloudflare_CA.pem"
echo | sudo cat - "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem" >> "${HOMEBREW_PREFIX:-/opt/homebrew}/etc/openssl@3/certs/Cloudflare_CA.pem"
logg info "Running ${HOMEBREW_PREFIX:-/opt/homebrew}/opt/openssl@3/bin/c_rehash"
"${HOMEBREW_PREFIX:-/opt/homebrew}/opt/openssl@3/bin/c_rehash" > /dev/null && logg info 'OpenSSL certificate rehash successful'
else
logg warn 'Unable to add Cloudflare_CA.pem because /usr/local/etc/openssl@3/certs and /opt/homebrew/etc/openssl@3/certs do not exist!'
fi
elif command -v warp-cli > /dev/null; then
# System is Linux
if command -v dpkg-reconfigure > /dev/null; then
if [ -d /usr/local/share/ca-certificates ]; then
logg info 'Copying CloudFlare Teams PEM file to /usr/local/share/ca-certificates/Cloudflare_CA.crt'
sudo cp -f "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem" /usr/local/share/ca-certificates/Cloudflare_CA.crt
logg info 'dpkg-reconfigure executable detected so using Debian/Ubuntu method of updating system trusted certificates to include CloudFlare Teams certificate'
sudo dpkg-reconfigure ca-certificates -p high
SSL_CERT_PATH="/etc/ssl/certs/ca-certificates.crt"
else
logg warn 'No /usr/local/share/ca-certificates folder present'
fi
elif command -v update-ca-trust > /dev/null; then
if [ -d /etc/pki/ca-trust/source/anchors ]; then
logg info 'Copying CloudFlare Teams certificates to /etc/pki/ca-trust/source/anchors'
sudo cp -f "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.crt" "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem" /etc/pki/ca-trust/source/anchors
logg info 'update-ca-trust executable detected so using CentOS/Fedora method of updating system trusted certificates to include CloudFlare Teams certificate'
sudo update-ca-trust
SSL_CERT_PATH="/etc/pki/tls/certs/ca-bundle.crt"
else
logg warn '/etc/pki/ca-trust/source/anchors does not exist so skipping the system certificate update process'
fi
fi
fi
if command -v warp-cli > /dev/null; then
### Application certificate configuration
# Application-specific certificate authority modification is currently commented out because
# it is merely for traffic inspection and `npm install` fails when configured to use the CloudFlare
# certificate and the WARP client is not running.
### Git
if command -v git > /dev/null; then
logg info "Configuring git to use $SSL_CERT_PATH"
git config --global http.sslcainfo "$SSL_CERT_PATH"
fi
### NPM
if command -v npm > /dev/null; then
logg info "Configuring npm to use $SSL_CERT_PATH"
npm config set cafile "$SSL_CERT_PATH"
fi
### Python
if command -v python3 > /dev/null; then
### Ensure Certifi package is available globally
if ! pip3 list | grep certifi > /dev/null; then
if command -v brew > /dev/null; then
logg info 'Ensuring Python certifi is installed via Homebrew'
brew install --quiet python-certifi
else
logg info 'Ensuring certifi is installed globally for Python 3'
pip3 install certifibrew link --overwrite python-certifi
fi
fi
### Copy CloudFlare PEM file to Python 3 location
logg info "Configuring python3 / python to use "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem""
echo | cat - "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem" >> $(python3 -m certifi)
fi
### Google Cloud SDK
if command -v gcloud > /dev/null; then
logg info "Configuring gcloud to use "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem" and "$HOME/.local/etc/ssl/gcloud/ca.pem""
mkdir -p "$HOME/.local/etc/ssl/gcloud"
cat "$HOME/.local/etc/ssl/curl/cacert.pem" "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem" > "$HOME/.local/etc/ssl/gcloud/ca.pem"
gcloud config set core/custom_ca_certs_file "$HOME/.local/etc/ssl/gcloud/ca.pem"
fi
### Google Drive for desktop (macOS)
if [ -d "/Applications/Google Drive.app" ]; then
if [ -d "/Applications/Google Drive.app/Contents/Resources" ]; then
logg info "Combining Google Drive roots.pem with CloudFlare certificate"
mkdir -p "$HOME/.local/etc/ssl/google-drive"
cat "$HOME/.local/etc/ssl/cloudflare/Cloudflare_CA.pem" "/Applications/Google Drive.app/Contents/Resources/roots.pem" >> "$HOME/.local/etc/ssl/google-drive/roots.pem"
sudo defaults write /Library/Preferences/com.google.drivefs.settings TrustedRootsCertsFile -string "$HOME/.local/etc/ssl/google-drive/roots.pem"
else
logg warn 'Google Drive.app installed but roots.pem is not available yet'
fi
fi
### Ensure MDM settings are applied (deletes after reboot on macOS)
### TODO: Ensure `.plist` can be added to `~/Library/Managed Preferences` and not just `/Library/Managed Preferences`
# Source: https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/deployment/mdm-deployment/
# Source for JumpCloud: https://developers.cloudflare.com/cloudflare-one/static/documentation/connections/CloudflareWARP.mobileconfig
if [ -d /System ] && [ -d /Applications ]; then
sudo cp -f "$HOME/Library/Managed Preferences/com.cloudflare.warp.plist" '/Library/Managed Preferences/com.cloudflare.warp.plist'
sudo plutil -convert binary1 '/Library/Managed Preferences/com.cloudflare.warp.plist'
### Enable CloudFlare WARP credentials auto-populate (since file is deleted when not managed with MDM)
if [ -f "$HOME/Library/LaunchDaemons/com.cloudflare.warp.plist" ] && [ ! -f "/Library/LaunchDaemons/com.cloudflare.warp.plist" ]; then
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/com.cloudflare.warp.plist" '/Library/LaunchDaemons/com.cloudflare.warp.plist'
sudo launchctl load "/Library/LaunchDaemons/com.cloudflare.warp.plist"
fi
elif [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/warp/mdm.xml" ]; then
sudo mkdir -p /var/lib/cloudflare-warp
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/warp/mdm.xml" /var/lib/cloudflare-warp/mdm.xml
fi
### Register CloudFlare WARP
if warp-cli --accept-tos status | grep 'Registration missing' > /dev/null; then
logg info 'Registering CloudFlare WARP'
warp-cli --accept-tos register
else
logg info 'Either there is a misconfiguration or the device is already registered with CloudFlare WARP'
fi
### Connect CloudFlare WARP
if warp-cli --accept-tos status | grep 'Disconnected' > /dev/null; then
logg info 'Connecting to CloudFlare WARP'
warp-cli --accept-tos connect > /dev/null && logg success 'Connected to CloudFlare WARP'
else
logg info 'Either there is a misconfiguration or the device is already connected with CloudFlare WARP'
fi
else
logg warn 'warp-cli was not installed so CloudFlare WARP cannot be joined'
fi
# Needs tuning - possibly unrelated, but internet wasn't working on Ubuntu after installing this and removed it during debugging
# ansible: professormanhattan.warp
apt: cloudflare-warp
cask: cloudflare-warp
choco: warp
warp-terminal:
_app: Warp.app
_bin: warp
_desc: Warp is a blazingly-fast modern Rust based GPU-accelerated terminal built to make you and your team more productive.
_docs: https://docs.warp.dev/getting-started/readme
_env:
WARP_TERMINAL_APPDATA:
cask: "$HOME/Library/Application Support/dev.warp.Warp-Stable"
_github: https://github.com/warpdotdev/Warp
_home: https://www.warp.dev/
_name: Warp Terminal
appimage: https://app.warp.dev/get_warp?linux=true&package=appimage
apt: https://app.warp.dev/get_warp?package=deb
cask: warp
dnf: https://app.warp.dev/get_warp?package=rpm
pacman: https://app.warp.dev/get_warp?linux=true&package=pacman
warp-transfer:
_bin: warp-transfer
_github: false
flatpak: app.drey.Warp
watchexec:
_bin: watchexec
_desc: Executes commands in response to file modifications.
_docs: https://watchexec.github.io/docs/glob-patterns.html
_github: https://github.com/watchexec/watchexec
_home: https://watchexec.github.io/
_name: Watchexec
apk: watchexec
# Apt is from an unofficial channel
# apt: watchexec
baulk: watchexec
brew: watchexec
cargo: watchexec-cli
choco: watchexec
emerge: watchexec
nix: watchexec
pacman: watchexec
scoop: watchexec
xbps: watchexec
watchman:
_bin: watchman
_desc: '[Watchman](https://github.com/facebook/watchman), an open-source Facebook product, can be used to watch files and record when they change. It can also trigger actions when matching files change.'
_github: https://github.com/facebook/watchman
_name: Watchman
ansible: professormanhattan.watchman
brew: watchman
choco: watchman
port: watchman
scoop: watchman
waypoint:
_bin: waypoint
_desc: '[HashiCorp Waypoint](https://www.waypointproject.io/) allows developers to deploy, manage, and observe their applications through a consistent abstraction of underlying infrastructure. Waypoint works with Kubernetes, ECS and many other platforms.'
_docs: https://developer.hashicorp.com/waypoint/docs
_github: https://github.com/hashicorp/waypoint
_home: https://www.waypointproject.io/
_name: HashiCorp Waypoint
ansible: professormanhattan.waypoint
brew: hashicorp/tap/waypoint
scoop: waypoint
wazuh:
# TODO: Add logic to .chezmoiscripts that ensures the proper Wazuh settings are in place
_bin: wazuh-agentd
_desc: '[Wazuh](https://wazuh.com/) is a free, open source and enterprise-ready security monitoring solution for threat detection, integrity monitoring, incident response and compliance.'
_docs: https://documentation.wazuh.com/current/index.html
_github: https://github.com/wazuh/wazuh
_home: https://wazuh.com/
_name: Wazuh
_service:linux: wazuh-agent
_service:windows: wazuh-agent
_when:darwin: '! test -f /Library/Ossec/bin/agent-auth'
_when:linux: '! test -f /var/ossec/bin/agent-auth'
_when:windows: '! test -f "C:\Program Files (x86)\ossec-agent\agent-auth.exe"'
choco: wazuh-agent
script:darwin: if ! csrutil status | grep enabled > /dev/null; then cd /tmp && curl -sSL https://packages.wazuh.com/4.x/macos/wazuh-agent-4.4.4-1.pkg > wazuh-agent.pkg && sudo launchctl setenv WAZUH_MANAGER "$WAZUH_MANAGER" && sudo installer -pkg wazuh-agent.pkg -target / && sudo chmod 755 /Library/Ossec && sudo chmod 755 /Library/Ossec/bin && rm /tmp/wazuh-agent.pkg && sudo wazuh-control start; else echo "WARNING - Skipping Wazuh Agent installation because System Integrity Protection is enabled. Disabling it requires booting into recovery and running csrutil disable, installing Wazuh Agent normally, and then re-enabling it again in recovery mode."; fi
script:linux: if command -v apt-get > /dev/null; then curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import && sudo chmod 644 /usr/share/keyrings/wazuh.gpg && echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee -a /etc/apt/sources.list.d/wazuh.list && sudo apt-get update && sudo apt-get install -y wazuh-agent; elif command -v dnf > /dev/null; then echo "[wazuh]" | sudo tee -a /etc/yum.repos.d/wazuh.repo && echo "gpgcheck=1" | sudo tee -a /etc/yum.repos.d/wazuh.repo && echo "gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH" | sudo tee -a /etc/yum.repos.d/wazuh.repo && echo "enabled=1" | sudo tee -a /etc/yum.repos.d/wazuh.repo && echo "name=EL-\$releasever - Wazuh" | sudo tee -a /etc/yum.repos.d/wazuh.repo && echo "baseurl=https://packages.wazuh.com/4.x/yum/" | sudo tee -a /etc/yum.repos.d/wazuh.repo && echo "protect=1" | sudo tee -a /etc/yum.repos.d/wazuh.repo && sudo rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH && sudo dnf install -y wazuh-agent; elif command -v zypper > /dev/null; then echo "[wazuh]" | sudo tee -a /etc/zypp/repos.d/wazuh.repo && echo "gpgcheck=1" | sudo tee -a /etc/zypp/repos.d/wazuh.repo && echo "gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH" | sudo tee -a /etc/zypp/repos.d/wazuh.repo && echo "enabled=1" | sudo tee -a /etc/zypp/repos.d/wazuh.repo && echo "name=EL-$releasever - Wazuh" | sudo tee -a /etc/zypp/repos.d/wazuh.repo && echo "baseurl=https://packages.wazuh.com/4.x/yum/" | sudo tee -a /etc/zypp/repos.d/wazuh.repo && echo "protect=1" | sudo tee -a /etc/zypp/repos.d/wazuh.repo && sudo rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH && sudo zypper install -y wazuh-agent; elif command -v apk > /dev/null; then sudo wget -O /etc/apk/keys/alpine-devel@wazuh.com-633d7457.rsa.pub https://packages.wazuh.com/key/alpine-devel%40wazuh.com-633d7457.rsa.pub && echo "https://packages.wazuh.com/4.x/alpine/v3.12/main" | sudo tee -a /etc/apk/repositories && sudo apk update && sudo apk add wazuh-agent; fi
web-ext:
_bin: web-ext
_github: https://github.com/mozilla/web-ext
_name: Web Extension CLI by Mozilla
npm: web-ext
web-font-generator:
_bin: web-font-generator
_github: https://github.com/rafaelmardojai/webfont-kit-generator
flatpak: com.rafaelmardojai.WebfontKitGenerator
webpquicklook:
_github: https://github.com/emin/WebPQuickLook
_name: QLWebP
_when:cask: '! test -d "$HOME/Library/QuickLook/WebpQuickLook.qlgenerator"'
cask: webpquicklook
websocat:
_bin: websocat
_desc: CLI for interacting with web sockets
_github: https://github.com/vi/websocat
_name: websocat
brew: websocat
cargo: websocat
github: github.com/vi/websocat
pkg: websocat
port: websocat
webtorrent:
_app: WebTorrent.app
_bin: webtorrent
_desc: Streaming torrent app for Mac, Windows, and Linux
_github: https://github.com/webtorrent/webtorrent-desktop
_home: webtorrent.io/desktop
_name: WebTorrent Desktop
cask: webtorrent
choco: webtorrent-desktop
flatpak: io.webtorrent.WebTorrent
github: github.com/webtorrent/webtorrent-desktop
yay: webtorrent-desktop
wego:
_bin: wego
_github: https://github.com/schachmat/wego
_name: WeGo
brew: wego
go: github.com/schachmat/wego@latest
wetty:
_bin: wetty
_github: https://github.com/butlerx/wetty
_name: Wetty
npm: wetty
wget:
_bin: wget
_desc: The [wget](https://www.gnu.org/software/wget/) command is a command line utility for downloading files from the Internet. It supports downloading multiple files, downloading in the background, resuming downloads, limiting the bandwidth used for downloads and viewing headers.
_home: https://www.gnu.org/software/wget/
_name: wget
_github: false
ansible: professormanhattan.wget
apk: wget
apt: wget
brew: wget
dnf: wget
# whalebrew: whalebrew/wget # Temporarily commentted out for debugging
whalebrew:
_bin: whalebrew
_desc: Homebrew, but with Docker images (see https://github.com/whalebrew/whalebrew-packages for available packages)
_docs: https://github.com/whalebrew/whalebrew#usage
_github: https://github.com/whalebrew/whalebrew
_home: https://github.com/whalebrew/whalebrew
_name: Whalebrew
brew: whalebrew
script:darwin: curl -L "https://github.com/whalebrew/whalebrew/releases/download/0.4.0/whalebrew-$(uname -s)-$(uname -m)" -o /usr/local/bin/whalebrew; chmod +x /usr/local/bin/whalebrew
script:linux: curl -L "https://github.com/whalebrew/whalebrew/releases/download/0.4.0/whalebrew-$(uname -s)-$(uname -m)" -o /usr/local/bin/whalebrew; chmod +x /usr/local/bin/whalebrew
what-ip:
_bin: whatip
_github: false
_gitlab: https://gitlab.gnome.org/GabMus/whatip
flatpak: org.gabmus.whatip
whereami:
_bin: whereami
_github: https://github.com/rafaelrinaldi/whereami
_name: Where Am I?
npm: '@rafaelrinaldi/whereami'
wifi-password:
_bin: wifi-password
_desc: Get the password of the wifi you're on
_github: https://github.com/rauchg/wifi-password
_name: wifi-password
bpkg: rauchg/wifi-password
brew:darwin: wifi-password
npm: wifi-password-cli
windows-adk:
_bin: null
_desc: >-
[Windows ADK](https://www.microsoft.com/en-us/windows-server/windows-admin-center) was unveiled by Microsoft on September 14, 2017 as the necessary evolution of the Windows Server graphical user interface. Windows ADK offers a flexible, locally-deployed, browser-based management platform and tools. The idea behind this project is to help simplify the management of servers by placing a majority of the frequently referenced tools used by system administrators in one spot. You can run it on both Windows 10 and Windows Server.
_docs: https://learn.microsoft.com/en-us/windows-hardware/get-started/adk-install
_github: false
_home: https://learn.microsoft.com/en-us/windows-hardware/get-started/adk-install
_name: Windows ADK
ansible:windows: professormanhattan.windowsadk
choco: windows-adk
windows-admin-center:
_bin: null
_desc: >-
[Windows Admin Center](https://www.microsoft.com/en-us/windows-server/windows-admin-center) was unveiled by Microsoft on September 14, 2017 as the necessary evolution of the Windows Server graphical user interface. Windows Admin Center offers a flexible, locally-deployed, browser-based management platform and tools. The idea behind this project is to help simplify the management of servers by placing a majority of the frequently referenced tools used by system administrators in one spot. You can run it on both Windows 10 and Windows Server.
_docs: https://github.com/MicrosoftDocs/windowsserverdocs/blob/main/WindowsServerDocs/manage/windows-admin-center/overview.md
_github: false
_home: https://www.microsoft.com/en-us/windows-server/windows-admin-center
_name: Windows Admin Center
ansible:windows: professormanhattan.windowsadmincenter
choco: windows-admin-center
windows-power-toys:
_bin: null
_desc: '[Microsoft PowerToys](https://docs.microsoft.com/en-us/windows/powertoys/) is a set of utilities for Windows power-users to tune and streamline their Windows 10 experience for greater productivity. It includes tools like a Color Picker, File Explorer add-ons, Keyboard Manager, Shortcut Guide, and more.'
_docs: https://learn.microsoft.com/en-us/windows/powertoys/
_github: https://github.com/microsoft/PowerToys
_home: https://learn.microsoft.com/en-us/windows/powertoys/
_name: Microsoft PowerToys
ansible:windows: professormanhattan.windowspowertoys
choco: powertoys
scoop: powertoys
winrm-cli:
_bin: winrm-cli
_desc: Command-line tool to remotely execute commands on Windows machines through WinRM
_docs: https://github.com/masterzen/winrm-cli
_github: https://github.com/masterzen/winrm-cli
_home: https://github.com/masterzen/winrm-cli
_name: winrm-cli
go: github.com/masterzen/winrm-cli@latest
yay: winrm-cli-git
winui-gallery:
_github: https://github.com/microsoft/WinUI-Gallery
_name: WinUI Gallery
winapp: winui-3-gallery/9P3JFPWWDZRC
wipe-modules:
_bin: wipe-modules
_github: https://github.com/bntzio/wipe-modules
_name: wipe-modules
npm: wipe-modules
wireguard-client:
_app: WireGuard.app
_bin: wireguard-client
_github: https://github.com/WireGuard/wireguard-monolithic-historical
_deps:
- wireguard-tools
_name: WireGuard Client
choco: wireguard
mas: 1451685025
scoop: wireguard-np
wireguard-tools:
_bin: wg
_name: WireGuard Tools
_github: https://github.com/WireGuard/wireguard-tools
_post: |
#!/usr/bin/env bash
# @file macOS WireGuard Profiles
# @brief Installs WireGuard VPN profiles on macOS devices
# @description
# This script installs WireGuard VPN profiles on macOS. It scans `${XDG_CONFIG_HOME:-$HOME/.config}/vpn` for all the `*.conf` files
# and then copies those profiles to `/etc/wireguard`. It also performs a couple preparation tasks like ensuring the target
# WireGuard system configuration file directory exists and is assigned the proper permissions.
#
# ## Creating VPN Profiles
#
# More details on embedding your VPN profiles into your Install Doctor fork can be found by reading the [Secrets documentation](https://install.doctor/docs/customization/secrets#vpn-profiles).
#
# ## TODO
#
# * Populate Tunnelblick on macOS using the VPN profiles located in `${XDG_CONFIG_HOME:-$HOME/.config}/vpn`
# * For the Tunnelblick integration, ensure the username / password is populated from the `OVPN_USERNAME` and `OVPN_PASSWORD` variables
#
# ## Links
#
# * [VPN profile folder](https://github.com/megabyte-labs/install.doctor/blob/master/home/dot_config/vpn)
# * [VPN profile documentation](https://install.doctor/docs/customization/secrets#vpn-profiles)
# TODO - Populate Tunnelblick on macOS using the .ovpn profiles located in $HOME/.config/vpn (execpt in the `openvpn` entry of software.yml)
# along with the secrets for the protonVPN OpenVPN (check vpn-linux.tmpl)
### Backs up previous network settings to `/Library/Preferences/com.apple.networkextension.plist.old` before applying new VPN profiles
if [ -f /Library/Preferences/com.apple.networkextension.plist ] && [ ! -f "/Library/Preferences/com.apple.networkextension.plist.old" ]; then
logg info 'Backing up /Library/Preferences/com.apple.networkextension.plist to /Library/Preferences/com.apple.networkextension.plist.old'
sudo cp -f /Library/Preferences/com.apple.networkextension.plist /Library/Preferences/com.apple.networkextension.plist.old
else
logg info 'The /Library/Preferences/com.apple.networkextension.plist does not exist or is already backed up to com.apple.networkextension.plist.old'
fi
### Ensures the `/etc/wireguard` directory exists and has the lowest possible permission-level
if [ ! -d /etc/wireguard ]; then
logg info 'Creating /etc/wireguard since it does not exist yet'
sudo mkdir -p /etc/wireguard
sudo chmod 600 /etc/wireguard
fi
### TODO - Should adding the .conf files to /etc/wireguard only be done on macOS or is this useful on Linux as well?
### Cycles through the `*.conf` files in `${XDG_CONFIG_HOME:-$HOME/.config}/vpn` and adds them to the `/etc/wireguard` folder
find "${XDG_CONFIG_HOME:-$HOME/.config}/vpn" -mindepth 1 -maxdepth 1 -type f -name "*.conf" | while read WG_CONF; do
WG_FILE="$(basename "$WG_CONF")"
logg info 'Adding '"$WG_FILE"' to /etc/wireguard'
sudo cp -f "$WG_CONF" "/etc/wireguard/$WG_FILE"
done
apk: wireguard-tools
apt: wireguard
brew: wireguard-tools
dnf: wireguard-tools
emerge: wireguard-tools
nix: nixpkgs.wireguard-tools
opkg: wireguard
pacman: wireguard-tools
port: wireguard-tools
slackpkg: wireguard-tools
zypper: wireguard-tools
wireshark:
_app: Wireshark.app
_bin: wireshark-gui
_desc: '[Wireshark](https://www.wireshark.org/) is a free and open-source packet analyzer. It is used for network troubleshooting, analysis, software and communications protocol development, and education. Originally named Ethereal, the project was renamed Wireshark in May 2006 due to trademark issues.'
_docs: https://www.wireshark.org/docs/
_github: https://github.com/wireshark/wireshark
_home: https://www.wireshark.org/
_name: Wireshark
_pre:cask: |
#!/usr/bin/env bash
if command -v idl2wrs > /dev/null; then brew uninstall wireshark; fi
apt: wireshark
cask: wireshark
choco: wireshark
dnf:
- wireshark
- wireshark-cli
flatpak: org.wireshark.Wireshark
pacman:
- wireshark-cli
- wireshark-qt
wishlist:
_bin: wishlist
_desc: TUI for listing definitions defined in the SSH directory
_docs: https://github.com/charmbracelet/wishlist
_github: https://github.com/charmbracelet/wishlist
_home: https://charm.sh
_name: Wishlist
brew: charmbracelet/tap/wishlist
nix-env: nixpkgs.wishlist
scoop: wishlist
yay: wishlist-bin
wkhtmltopdf:
_bin: wkhtmltopdf
_desc: '[wkhtmltopdf](https://github.com/wkhtmltopdf/wkhtmltopdf) is a command line tool to render HTML into PDF and various image formats using the QT Webkit rendering engine.'
_github: https://github.com/wkhtmltopdf/wkhtmltopdf
_name: wkhtmltopdf
# CentOS Stream 9 does not have a supported GitHub release available
# ansible: professormanhattan.wkhtmltopdf
apt: wkhtmltopdf
cask: wkhtmltopdf
choco: wkhtmltopdf
github: github.com/wkhtmltopdf/wkhtmltopdf
pacman: wkhtmltopdf
wordops:
_bin: wo
_desc: Install and manage a high performance WordPress stack with a few keystrokes
_docs: https://docs.wordops.net/
_github: https://github.com/WordOps/WordOps
_home: https://wordops.net/
_name: WordOps
script:debian: wget -qO wo wops.cc && sudo bash wo
wordpressify:
_bin: wordpressify
_desc: A build system designed to automate your WordPress development workflow
_docs: https://www.wordpressify.co/docs
_github: https://github.com/luangjokaj/wordpressify
_home: https://www.wordpressify.co/
_name: wordpressify
npm: wordpressify
wp-cli:
_bin: wp
_desc: '[WP-CLI](https://wp-cli.org/) is the command-line interface for [WordPress](https://wordpress.org/). You can update plugins, configure multisite installations and much more. You can do all this without using a web browser.'
_github: https://github.com/wp-cli/wp-cli
_home: https://wp-cli.org/
_name: WP-CLI
ansible:darwin: professormanhattan.wpcli
ansible:linux: professormanhattan.wpcli
brew: wp-cli
wpfui:
_github: https://github.com/lepoco/wpfui
_name: WPF UI
winapp: wpf-ui/9N9LKV8R9VGM
winget: WPF UI
wrangler:
_bin: wrangler
_desc: wrangler is a CLI tool designed for folks who are interested in using Cloudflare Workers. Deploy serverless code instantly across the globe to give it exceptional performance, reliability, and scale.
_docs: https://developers.cloudflare.com/workers/
_github: https://github.com/cloudflare/wrangler
_home: https://workers.cloudflare.com/
_name: wrangler
brew: cloudflare-wrangler2
npm: wrangler
wrk:
_bin: wrk
_desc: '[wrk](https://github.com/reconquest/wrk) is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and kqueue'
_docs: https://github.com/blangel/wrk
_github: https://github.com/wg/wrk
_home: https://github.com/blangel/wrk
_name: wrk
ansible: professormanhattan.wrk
apt: wrk
brew: wrk
pacman: wrk
port: wrk
xbps: wrk
wsl:
_bin: null
_desc: Sets up Windows Subsystem For Linux
_github: false
_name: wsl
ansible: professormanhattan.wsl
x64dbg:
_bin: x64dbg
_desc: An open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis.
_docs: https://github.com/x64dbg/x64dbg/wiki
_github: https://github.com/x64dbg/x64dbg
_home: https://x64dbg.com/
_name: x64dbg
choco: x64dbg.portable
scoop: extras/x64dbg
xcode:
_app: Xcode.app
_bin: xcode
_deps:script:darwin:
- xcodeinstall
_desc: "[Xcode](https://developer.apple.com/xcode/) is Apple's integrated development environment for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, and tvOS."
_docs: https://developer.apple.com/documentation/xcode
_github: false
_home: https://developer.apple.com/xcode/
_name: XCode
_post: |
#!/usr/bin/env bash
sudo xcodebuild -license accept && sudo xcodebuild -runFirstLaunch
mas: 497799835
#script:darwin: |
# echo "NOTE - This may not work headlessly due to requirement of 2FA"
# ### Load AWS secrets
# source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/private.sh"
# ### Setup passwordless sudo
# if ! sudo cat /etc/sudoers | grep '# TEMPORARY FOR INSTALL DOCTOR XCODEINSTALL' > /dev/null; then
# if [ -n "$SUDO_PASSWORD" ]; then
# printf '%s\n' "$SUDO_PASSWORD" | sudo -p "" -S echo "$(whoami) ALL=(ALL:ALL) NOPASSWD: ALL # TEMPORARY FOR INSTALL DOCTOR XCODEINSTALL" | sudo tee -a /etc/sudoers
# else
# echo "$(whoami) ALL=(ALL:ALL) NOPASSWD: ALL # TEMPORARY FOR INSTALL DOCTOR XCODEINSTALL" | sudo tee -a /etc/sudoers
# fi
# fi
# ### Remove old files
# echo "Removing old ~/.xcodeinstall folder"
# rm -rf ~/.xcodeinstall
# ### Authenticate
# echo "Authenticating"
# xcodeinstall authenticate -s "$AWS_DEFAULT_REGION"
# ### Download files
# while read XCODE_DOWNLOAD_ITEM; do
# if [[ "$XCODE_DOWNLOAD_ITEM" != *"Command Line Tools"* ]]; then
# DOWNLOAD_ID="$(echo "$XCODE_DOWNLOAD_ITEM" | sed 's/^\[\(.*\)\] .*/\1/')"
# echo "Downloading $XCODE_DOWNLOAD_ITEM"
# echo "$DOWNLOAD_ID" | xcodeinstall download -s "$AWS_DEFAULT_REGION"
# fi
# done < <(xcodeinstall list -s "$AWS_DEFAULT_REGION" | grep --invert-match 'Release Candidate' | grep --invert-match ' beta ' | grep ' Xcode \d\d ')
# ### Install Xcode
# echo "Installing Xcode"
# xcodeinstall install --name "$(basename "$(find ~/.xcodeinstall/download -maxdepth 1 -name "*.xip")")"
# ### Install Command Line Tools
# # Commentted out because it is already installed by xcode-select in the provision.sh script
# # xcodeinstall install --name "$(basename "$(find ~/.xcodeinstall/download -maxdepth 1 -name "*Command Line Tools*")")"
# ### Install Additional Tools
# echo "Installing Additional Tools"
# while read ADDITIONAL_TOOLS; do
# hdiutil attach "$ADDITIONAL_TOOLS"
# rm -rf "/Applications/Additional Tools"
# cp -rf "/Volumes/Additional Tools" "/Applications/Additional Tools"
# hdiutil detach "$(find /Volumes -name "Additional Tools")"
# done < <(find ~/.xcodeinstall/download -name "Additional Tools*")
# ### Install Font Tools
# echo "Installing Font Tools"
# while read FONT_TOOLS; do
# hdiutil attach "$FONT_TOOLS"
# cd "$(find /Volumes -maxdepth 1 -name "*Font Tools*")"
# sudo installer -pkg "$(find . -maxdepth 1 -name "*Font Tools*.pkg")" -target /
# cd / && hdiutil detach "$(find /Volumes -maxdepth 1 -name "*Font Tools*")"
# done < <(find ~/.xcodeinstall/download -name "Font Tools*")
# ### Remove cache / downloaded files
# rm -rf ~/.xcodeinstall
# ### Remove passwordless sudo
# if ! command -v gsed > /dev/null; then
# brew install gnu-sed
# fi
# sudo gsed -i '/# TEMPORARY FOR INSTALL DOCTOR XCODEINSTALL/d' /etc/sudoers
xcodeinstall:
_bin: xcodeinstall
_github: https://github.com/sebsto/xcodeinstall
_name: Xcode Install
brew: sebsto/macos/xcodeinstall
xcodes:
_bin: xcodes
_desc: CLI utility to download, install, and switch to alternate versions of Xcode
_docs: https://github.com/XcodesOrg/xcodes
_github: https://github.com/XcodesOrg/xcodes
_home: https://github.com/XcodesOrg/xcodes
_name: Xcodes
brew:darwin: xcodesorg/made/xcodes
xcodes-app:
_app: Xcodes.app
_bin: null
_desc: macOS desktop app that allows you to download, install, and switch to alternate versions of Xcode
_docs: https://github.com/XcodesOrg/XcodesApp
_github: https://github.com/XcodesOrg/XcodesApp
_home: https://github.com/XcodesOrg/XcodesApp
_name: Xcodes App
cask: xcodes
xcpretty:
_bin: xcpretty
_github: https://github.com/xcpretty/xcpretty
_name: xcpretty
gem:darwin: xcpretty
xdotool:
_bin: xdotool
_github: https://github.com/jordansissel/xdotool
_name: xdotool
_post:brew:darwin: |
#!/usr/bin/env bash
defaults write org.x.X11 enable_test_extensions -boolean true
apt: xdotool
brew: xdotool
dnf: xdotool
pacman: xdotool
pkg-freebsd: xdotool
port: xdotool
zypper: xdotool
xh:
_bin: xh
_github: https://github.com/ducaale/xh
_name: XH
apk: xh
apt: xh
brew: xh
cargo: xh
choco: xh
nix-env: nixpkgs.xh
pacman: xh
pkg-android: xh
pkg-freebsd: xh
scoop: xh
xhyve:
_bin: xhyve
_github: https://github.com/machyve/xhyve
_name: xhyve
_notes: Has not been modified for several years and has been disabled on Homebrew
brew:darwin: xhyve
port: xhyve
xpanes:
_bin: xpanes
_github: https://github.com/greymd/tmux-xpanes
_name: xpanes
apt: https://github.com/greymd/tmux-xpanes/releases/download/v4.1.4/tmux-xpanes_v4.1.4.deb
brew: tmux-xpanes
dnf: xpanes
script: curl -sSL --compressed https://raw.githubusercontent.com/greymd/tmux-xpanes/v4.1.4/bin/xpanes > /tmp/xpanes && sudo mv /tmp/xpanes /usr/local/bin/xpanes
xpra:
_app: Xpra.app
_bin: xpra
_github: https://github.com/Xpra-org/xpra
_name: xpra
cask: xpra
choco: xpra
exe: https://xpra.org/dists/windows/Xpra-x86_64_Setup.exe
flatpak: org.xpra.xpra
msi: https://xpra.org/dists/windows/Xpra-x86_64.msi
xrdp:
_bin: xrdp
_github: https://github.com/neutrinolabs/xrdp
_home: http://www.xrdp.org/
_name: xrdp
_note: Should work like professormanhattan.remotedesktop
_ports:
- port: 3389
proto: tcp
_post: |
#!/usr/bin/env bash
sudo adduser xrdp ssl-cert
_service: xrdp
_service:yay:
- xrdp
- xrdp-sesman
apt: xrdp
dnf: xrdp
pacman: xrdp
yay: xrdp
zypper: xrdp
xsv:
_bin: xsv
_github: https://github.com/BurntSushi/xsv
_name: xsv
brew: xsv
cargo: xsv
nix-env: xsv
port: xsv
xurls:
_bin: xurls
_desc: Extract urls from text
_github: https://github.com/mvdan/xurls
_name: xurls
brew: xurls
go: mvdan.cc/xurls/v2/cmd/xurls@latest
xxh:
_bin: xxh
_github: https://github.com/xxh/xxh
_name: xxh
brew: xxh
pipx: xxh-xxh
port: xxh
xz:
_bin: xz
_github: https://github.com/xz-mirror/xz
_name: xz
apk: xz
apt: xz
brew: xz
choco: xz
dnf: xz
pacman: xz
port: xz
scoop: xz
yamllint:
_bin: yamllint
_desc: A linter for YAML files. yamllint does not only check for syntax validity, but also for weirdnesses like key repetition and cosmetic problems such as lines length, trailing spaces, indentation, etc.
_github: https://github.com/adrienverge/yamllint
_name: yamllint
_service: null
brew: yamllint
pipx: yamllint
yank:
_bin: yank
_bin:apt: yank-cli
_desc: '[yank](https://github.com/mptre/yank) is a terminal agnostic solution which allows copying output from Termial easily, without the need to use Terminal multiplexers.'
_github: https://github.com/mptre/yank
_name: yank
ansible: professormanhattan.yank
apt: yank
brew: yank
choco: win32yank
dnf: yank
nix: yank
pacman: yank
pkg-freebsd: yank
pkg_add: yank
port: yank
scoop: win32yank
zypper: yank
yapf:
_bin: yapf
_desc: A formatter for Python files maintained by Google
_docs: false
_github: https://github.com/google/yapf
_home: false
_name: YAPF
pipx: yapf
yarn:
_bin: yarn
_desc: "[Yarn](https://yarnpkg.com/) is a relatively new and open source JavaScript package manager developed by Facebook. Yarn is fully compatible with the npm registry (i.e. [npmjs.com](https://www.npmjs.com/)) and can work alongside npm, but it's aim it to be a safer, more secure and more reliable alternative."
_docs: https://yarnpkg.com/getting-started
_github: https://github.com/yarnpkg/berry
_home: https://yarnpkg.com/
_name: Yarn
_preload: true
ansible: professormanhattan.yarn
brew: yarn
choco: yarn
npm: yarn
pacman: yarn
port: yarn
scoop: yarn
script: curl -o- -L https://yarnpkg.com/install.sh | bash
yarnhook:
_bin: yarnhook
_desc: yarnhook keeps your node_modules up-to-date when your yarn.lock, package-lock.json or shrinkwrap.yaml changes due to git operations like checkout, merge, rebase, pull etc.
_github: https://github.com/frontsideair/yarnhook
_name: Yarnhook
npm: yarnhook
yj:
_bin: yj
_desc: CLI program that allows you to convert between YAML, TOML, JSON, and HCL.
_docker: docker run sclevine/yj
_docs: https://github.com/sclevine/yj
_github: https://github.com/sclevine/yj
_home: https://github.com/sclevine/yj
_name: YJ
brew: yj
go: github.com/sclevine/yj/v5@v5.1.0
you-get:
_bin: you-get
_github: https://github.com/soimort/you-get
_name: You-Get
brew: you-get
pipx: you-get
pkg-freebsd: you-get
youtube-dl:
_bin: youtube-dl
_desc: '[youtube-dl](https://github.com/ytdl-org/youtube-dl) is an open-source download manager for video and audio from YouTube and over 1000 other video hosting websites. It is released under the Unlicense software license and is one of the most popular projects on GitHub.'
_docs: https://github.com/ytdl-org/youtube-dl/blob/master/README.md#readme
_github: https://github.com/ytdl-org/youtube-dl
_home: https://youtube-dl.org/
_name: youtube-dl
ansible: professormanhattan.youtubedl
brew: youtube-dl
pipx: youtube-dl
port: youtube-dl
youtube-music:
_app: YouTube Music.app
_desc: YouTube Music desktop app bundled with custom plugins (and built-in ad blocker / downloader)
_github: https://github.com/th-ch/youtube-music
_home: https://th-ch.github.io/youtube-music/
_todo: Might have to add _post cask xattr -cr /Applications/YouTube\ Music.app to fix permissions
appimage: th-ch/youtube-music
apt: https://github.com/th-ch/youtube-music/releases/download/v1.19.0/youtube-music_1.19.0_amd64.deb
exe: https://github.com/th-ch/youtube-music/releases/download/v1.19.0/YouTube-Music-Setup-1.19.0.exe
scoop: extras/youtube-music
script:darwin: |
DL_URL="https://github.com/th-ch/youtube-music/releases/download/v1.20.0/YouTube-Music-1.20.0.dmg"
if [ $(arch) = 'arm64' ]; then
DL_URL="https://github.com/th-ch/youtube-music/releases/download/v1.20.0/YouTube-Music-1.20.0-arm64.dmg"
fi
echo "Downloading YouTube Music" && curl -sSL "$DL_URL" > /tmp/YouTube-Music.dmg
echo "Attaching volume" && sudo hdiutil attach /tmp/YouTube-Music.dmg
echo "Copying to /Applications"
if [ -d "/Volumes/YouTube Music 1.20.0" ]; then
sudo cp -R "/Volumes/YouTube Music 1.20.0/YouTube Music.app" /Applications
echo "Detaching" && sudo hdiutil detach "/Volumes/YouTube Music 1.20.0"
elif [ -d "/Volumes/YouTube Music 1.20.0-arm64" ]; then
sudo cp -R "/Volumes/YouTube Music 1.20.0-arm64/YouTube Music.app" /Applications
echo "Detaching" && sudo hdiutil detach "/Volumes/YouTube Music 1.20.0-arm64"
fi
echo "Removing /tmp/YouTube-Music.dmg" && rm -f /tmp/YouTube-Music.dmg
winget: th-ch.YouTubeMusic
yay: youtube-music-bin
yq:
_bin: yq
_desc: '[yq](https://github.com/mikefarah/yq) is a free, open-source command-line YAML processor. It aims to be like [jq](https://gitlab.com/megabyte-labs/ansible-roles/jq) except for YAML files. It can read and write values to YAML files.'
_docs: https://mikefarah.gitbook.io/yq/how-it-works
_github: https://github.com/mikefarah/yq
_home: https://mikefarah.gitbook.io/yq/
_name: yq
_preload: true
ansible: professormanhattan.yq
apk: yq
brew: yq
choco: yq
github: github.com/stedolan/jq
go: github.com/mikefarah/yq/v4@latest
snap: yq
yt-dlp:
_bin: yt-dlp
_github: https://github.com/yt-dlp/yt-dlp/wiki/Installation
_name: YouTube Download
brew: yt-dlp
choco: yt-dlp
pacman: yt-dlp
pipx: yt-dlp
port: yt-dlp
scoop: yt-dlp
winget: yt-dlp
yubikey-agent:
_bin: yubikey-agent
_docs: https://github.com/FiloSottile/yubikey-agent
_github: https://github.com/FiloSottile/yubikey-agent
_home: https://github.com/FiloSottile/yubikey-agent
_name: OpenSSL
_service: yubikey-agent
_todo: Experiment with this to see if it is worthwhile adding to the stack
brew: yubikey-agent
yubikey-authenticator:
_app: Yubico Authenticator.app
_bin: yubioath
_docs: The Yubico Authenticator app works across Windows, macOS, Linux, iOS and Android. Get the same set of codes across all Yubico Authenticator apps for desktops as well as for all leading mobile platforms. Portable credentials across devices.
_home: https://www.yubico.com/products/yubico-authenticator/
_github: https://github.com/Yubico/yubioath-flutter
_name: Yubico Authenticator
cask: yubico-authenticator
choco: yubico-authenticator
flatpak: com.yubico.yubioath
mas: 1497506650
script:darwin: curl -sSL https://developers.yubico.com/yubioath-flutter/Releases/yubico-authenticator-latest-mac.dmg > "/tmp/Yubico Authenticator.dmg" && hdiutil attach "/tmp/Yubico Authenticator.dmg" && sudo cp -R "/Volumes/Yubico Authenticator/Yubico Authenticator.app" /Applications && sudo hdiutil detach "/Volumes/Yubico Authenticator" && rm -f "/tmp/Yubico Authenticator.dmg"
yubikey-manager:
_bin: ykman
_desc: Use the YubiKey Manager to configure FIDO2, OTP and PIV functionality on your YubiKey on Windows, macOS, and Linux operating systems.
_github: https://github.com/Yubico/yubikey-manager
_home: https://www.yubico.com/support/download/yubikey-manager/
_name: Yubikey Manager
brew: ykman
dnf:fedora: yubikey-manager
pacman: yubikey-manager
pipx: yubikey-manager
yubikey-manager-qt:
_app: YubiKey Manager.app
_bin: yubikey-manager-qt
_desc: Cross-platform application for configuring any YubiKey over all USB interfaces.
_github: https://github.com/Yubico/yubikey-manager-qt
_home: https://developers.yubico.com/yubikey-manager-qt/
_name: YubiKey Manager
appimage: Yubico/yubikey-manager-qt
cask: yubico-yubikey-manager
choco: yubikey-manager
dnf:fedora: yubikey-manager-qt
pacman: yubikey-manager-qt
scoop: yubikey-manager-qt
zap:
_bin: zap
_desc: Delightful AppImage package manager
_docs: https://zap.srev.in/
_github: https://github.com/srevinsaju/zap
_home: https://zap.srev.in/
_name: Zap
_preload: true
ansible:linux: professormanhattan.zap
binary:linux: https://github.com/srevinsaju/zap/releases/download/continuous/zap-amd64
script:linux: curl https://raw.githubusercontent.com/srevinsaju/zap/main/install.sh | sudo bash -s
zaproxy:
_app: ZAP.app
_bin: zaproxy
_desc: The worlds most widely used web app scanner. Free and open source. Actively maintained by a dedicated international team of volunteers. A GitHub Top 1000 project.
_docs: https://www.zaproxy.org/docs/
_github: https://github.com/zaproxy/zaproxy
_home: https://www.zaproxy.org/
_name: OWASP ZAP
cask: zap
choco: zap
flatpak: org.zaproxy.ZAP
pkg-freebsd: zaproxy
scoop: zaproxy
snap: zaproxy --classic
zenity:
_bin: zenity
_github: https://github.com/ncruces/zenity
_name: Zenity
brew: ncruces/tap/zenity
go: github.com/ncruces/zenity/cmd/zenity@latest
scoop: https://ncruces.github.io/scoop/zenity.json
zola:
_bin: zola
_desc: A static site generator built with Rust
_github: https://github.com/getzola/zola
apk: zola
brew: zola
choco: zola
flatpak: org.getzola.zola
pacman: zola
pkg-freebsd: zola
pkg_add: zola
pkgin: zola
port: zola
scoop: zola
snap: zola
xbps: zola
zoom:
_app: zoom.us.app
_bin: zoom
_desc: '[Zoom](https://zoom.us/) is a videotelephony software program developed by Zoom Video Communications. This role installs Zoom on nearly any platform. The Zoom free plan provides a video chatting service that allows up to 100 participants concurrently, with a 40-minute time restriction.'
_docs: https://support.zoom.us/hc/en-us/categories/200101697-Getting-Started-with-Zoom
_github: Not open-source
_home: https://zoom.us/
_name: Zoom
ansible: professormanhattan.zoom
cask: zoom
choco: zoom
flatpak: us.zoom.Zoom
snap: zoom
yay: zoom
zoxide:
_bin: zoxide
_desc: '[zoxide](https://github.com/ajeetdsouza/zoxide) is a blazing fast replacement for your cd command, inspired by z and autojump'
_github: https://github.com/ajeetdsouza/zoxide
_name: zoxide
_preload: true
ansible: professormanhattan.zoxide
brew: zoxide
zsh:
_bin: zsh
_desc: '[Oh My Zsh](https://ohmyz.sh/) is a delightful, open source, community-driven framework for managing your Zsh configurations. It comes bundled with thousands of helpful functions, helpers, plugins, themes, and a few things that make you shout oh my zsh! This role also installs some CLI tools that accompany Oh My Zsh! to make it even more amazing.'
_github: https://github.com/zsh-users/zsh
_name: Zsh
_preload: true
ansible:darwin: professormanhattan.zsh
ansible:linux: professormanhattan.zsh
apt: zsh
brew: zsh
dnf: zsh
pacman: zsh
port: zsh
zsh-completions:
_github: https://github.com/zsh-users/zsh-completions
_name: ZSH Completions
brew: zsh-completions
zx:
_bin: zx
_desc: Bash is great, but when it comes to writing more complex scripts, many people prefer a more convenient programming language. JavaScript is a perfect choice, but the Node.js standard library requires additional hassle before using. The zx package provides useful wrappers around child_process, escapes arguments and gives sensible defaults.
_github: https://github.com/google/zx
_name: zx
_preload: true
brew: zx
npm: zx