13609 lines
560 KiB
Text
13609 lines
560 KiB
Text
---
|
||
# 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 EFF’s 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 [Let’s 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. How’s 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. It’s 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 world’s 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 note‑taking, 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 note‑taking 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, cross‐platform 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 client–server 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 you’d like—even binary data. It’s 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 certifi
|
||
else
|
||
logg info 'Ensuring certifi is installed globally for Python 3'
|
||
pip3 install 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 world’s 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
|