This commit is contained in:
Brian Zalewski 2023-11-27 21:13:11 +00:00
parent a3fd84ef5b
commit 8a53a33c3f
6 changed files with 100 additions and 47 deletions

View file

@ -3,6 +3,13 @@ Create issue about setting up completions - https://github.com/rsteube/lazycompl
Use minimum permissions / IAM for https://iosexample.com/a-command-line-tool-to-download-and-install-apples-xcode/
https://github.com/tiiiecherle/osx_install_config/blob/master/03_homebrew_casks_and_mas/3b_homebrew_casks_and_mas_install/6_mas_appstore.sh
virtualbox blocked by C
adobe-creative-cloud curl: (18) HTTP/2 stream 1 was reset
* Wazuh requires booting into recovery, running csrutil disable, installing agent normally, and then re-enabling it again in recovery mode
* NGINX /opt/homebrew/etc/nginx/nginx.conf, on port 8080 so no sudo required, nginx will load all files in /opt/homebrew/etc/nginx/servers/, brew services might require sudo if port 443 is used, Docroot /opt/homebrew/var/www
* Full disk access to Terminal required for Parallels
# TODOs
This page outlines various projects and tasks that we are currently working on. Creating a GitHub issue for each of these items would be overkill.

View file

@ -821,6 +821,7 @@ softwareGroups:
- ios-deploy
- ios-sim
- java
- jenv
- libimobiledevice
- license
- lightproxy
@ -1484,8 +1485,6 @@ softwareGroups:
note: Deprecated in favor of using ASDF.
- pkg: hyper
note: Deprecated in favor of Tabby for a full-featured terminal.
- pkg: jenv
note: Deprecated in favor of using ASDF or SDKMan
- pkg: kitty
note: Deprecated in favor of using alternative terminals such as iTerm2, Tabby, and bundled Linux terminals.
- pkg: lepton

View file

@ -106,6 +106,20 @@ if [ "$BASH_SUPPORT" = 'true' ] && [ -n "$BASH" ]; then
### Cod
! command -v cod > /dev/null || source <(cod init $$ bash)
### Conda
if command -v conda > /dev/null && [ -f "${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/bin/conda" ]; then
__conda_setup="$("${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/bin/conda" "shell.zsh" "hook" 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/etc/profile.d/conda.sh" ]; then
. "${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/etc/profile.d/conda.sh"
else
export PATH="${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/bin:$PATH"
fi
fi
fi
### Google Cloud SDK
[ ! -f "${HOMEBREW_PREFIX}/share/google-cloud-sdk/path.bash.inc" ] || source "$HOMEBREW_PREFIX/share/google-cloud-sdk/path.bash.inc"

View file

@ -1815,42 +1815,46 @@ async function linkBin(installOrdersBinLink) {
for (const binLink of installOrdersBinLink) {
const pkg = softwarePackages[binLink.package][binLink.preference]
if (typeof pkg === 'string') {
if (!which.sync(binLink.bin, { nothrow: true })) {
if (binLink.preference === 'flatpak' && flatpak) {
try {
runCommand(
`Adding bin link for ${pkg} (${binLink.bin})`,
`bash -c 'test -d ${flatpakDir}/app/${pkg} && mkdir -p "${process.env.HOME}/.local/bin/flatpak" && echo "flatpak run ${pkg} \\\$*" > "${process.env.HOME}/.local/bin/flatpak/${binLink.bin}" && chmod +x "${process.env.HOME}/.local/bin/flatpak/${binLink.bin}"'`
)
log('success', 'Bin', `Linked ~/.local/bin/flatpak/${binLink.bin} to the ${pkg} Flatpak`)
} catch (e) {
log('warn', 'Bin', `Expected flatpak directory not available - ${flatpakDir}/app/${pkg}`)
}
} else if (binLink.preference === 'cask') {
try {
const caskWhen = softwarePackages[binLink.package]['_when:cask'].replace(/blue/g, "red")
const appName = caskWhen.replace(/ && ! test -d .*/, '').replace(/! test -d "\/Applications\//, '').replace(/! test -d \/Applications\//, '').replace('"', '')
log('info', 'Bin', `Checking for existence of ${appName} application in /Applications and ~/Applications`)
if (fileExists(`/Applications/${appName}`)) {
if (binLink.bin !== false) {
if (!which.sync(binLink.bin, { nothrow: true })) {
if (binLink.preference === 'flatpak' && flatpak) {
try {
runCommand(
`Adding shortcut bin link for ${binLink.package}`,
`bash -c 'mkdir -p "${process.env.HOME}/.local/bin/cask" && echo "open \"${caskDir}\" \\\$*" > "${process.env.HOME}/.local/bin/cask/${binLink.bin}" && chmod +x "${process.env.HOME}/.local/bin/cask/${binLink.bin}"'`
`Adding bin link for ${pkg} (${binLink.bin})`,
`bash -c 'test -d ${flatpakDir}/app/${pkg} && mkdir -p "${process.env.HOME}/.local/bin/flatpak" && echo "flatpak run ${pkg} \\\$*" > "${process.env.HOME}/.local/bin/flatpak/${binLink.bin}" && chmod +x "${process.env.HOME}/.local/bin/flatpak/${binLink.bin}"'`
)
} else if(fileExists(`${process.env.HOME}/Applications/${appName}`)) {
runCommand(
`Adding shortcut bin link for ${binLink.package}`,
`bash -c 'mkdir -p "${process.env.HOME}/.local/bin/cask" && echo "open \"${process.env.HOME}/Applications/${appName}\" \\\$*" > "${process.env.HOME}/.local/bin/cask/${binLink.bin}" && chmod +x "${process.env.HOME}/.local/bin/cask/${binLink.bin}"'`
)
} else {
log('warn', 'Bin', `Expected Homebrew cask directory not found - ${pkg}`)
log('success', 'Bin', `Linked ~/.local/bin/flatpak/${binLink.bin} to the ${pkg} Flatpak`)
} catch (e) {
log('warn', 'Bin', `Expected flatpak directory not available - ${flatpakDir}/app/${pkg}`)
}
} else if (binLink.preference === 'cask') {
try {
const caskWhen = softwarePackages[binLink.package]['_when:cask'].replace(/blue/g, "red")
const appName = caskWhen.replace(/ && ! test -d .*/, '').replace(/! test -d "\/Applications\//, '').replace(/! test -d \/Applications\//, '').replace('"', '')
log('info', 'Bin', `Checking for existence of ${appName} application in /Applications and ~/Applications`)
if (fileExists(`/Applications/${appName}`)) {
runCommand(
`Adding shortcut bin link for ${binLink.package}`,
`bash -c 'mkdir -p "${process.env.HOME}/.local/bin/cask" && echo "open \"/Applications/${appName}\" \\\$*" > "${process.env.HOME}/.local/bin/cask/${binLink.bin}" && chmod +x "${process.env.HOME}/.local/bin/cask/${binLink.bin}"'`
)
} else if(fileExists(`${process.env.HOME}/Applications/${appName}`)) {
runCommand(
`Adding shortcut bin link for ${binLink.package}`,
`bash -c 'mkdir -p "${process.env.HOME}/.local/bin/cask" && echo "open \"${process.env.HOME}/Applications/${appName}\" \\\$*" > "${process.env.HOME}/.local/bin/cask/${binLink.bin}" && chmod +x "${process.env.HOME}/.local/bin/cask/${binLink.bin}"'`
)
} else {
log('warn', 'Bin', `Expected Homebrew cask directory not found - ${pkg}`)
}
} catch (e) {
console.log(e)
log('warn', 'Bin', `Error creating bin shortcut link for ${pkg}`)
}
} catch (e) {
console.log(e)
log('warn', 'Bin', `Error creating bin shortcut link for ${pkg}`)
}
} else {
log('info', 'Bin', `Link already exists for ${binLink.package}`)
}
} else {
log('info', 'Bin', `Link already exists for ${binLink.package}`)
log('info', 'Bin', `Skipping ${binLink.package} because the _bin is equal to false`)
}
} else {
log('info', 'Bin', `Skipping ${binLink.package} because there was more than one _bin value`)

View file

@ -409,6 +409,20 @@ fi
### Cod
! command -v cod > /dev/null || source <(cod init $$ zsh)
### Conda
if command -v conda > /dev/null && [ -f "${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/bin/conda" ]; then
__conda_setup="$("${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/bin/conda" "shell.zsh" "hook" 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/etc/profile.d/conda.sh" ]; then
. "${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/etc/profile.d/conda.sh"
else
export PATH="${HOMEBREW_PREFIX:-/opt/homebrew}/Caskroom/mambaforge/base/bin:$PATH"
fi
fi
fi
### direnv
! command -v direnv > /dev/null || eval "$(direnv hook zsh)"

View file

@ -519,7 +519,18 @@ softwarePackages:
brew: ansifilter
choco: ansifilter
port: ansifilter
android-commandlinetools:
_deps:
- java
_bin: false
_name: Android Studio Command Line Tools
_github: false
_when:cask: '! test -d "${HOMEBREW_PREFIX:-/opt/homebrew}/share/android-commandlinetools"'
cask: android-commandlinetools
android-studio:
_deps:
- android-commandlinetools
- java
_bin: android-studio
_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).
@ -528,9 +539,7 @@ softwarePackages:
_home: https://developer.android.com/studio
_name: Android Studio
_when:cask: '! test -d "/Applications/Android Studio.app" && ! test -d "$HOME/Applications/Android Studio.app"'
cask:
- android-studio
- android-commandlinetools
cask: android-studio
choco: androidstudio
flatpak: com.google.AndroidStudio
snap: android-studio
@ -858,7 +867,7 @@ softwarePackages:
- argocd
- argocd-cli
blackhole:
_bin: blackhole
_bin: false
_docs: https://github.com/ExistentialAudio/BlackHole#user-guides
_home: https://github.com/ExistentialAudio/BlackHole
_github: https://github.com/ExistentialAudio/BlackHole
@ -979,7 +988,7 @@ softwarePackages:
devtoys:
_bin: devtoys
_github: https://github.com/ObuchiYuki/DevToysMac
_when:cask: echo '! test -d /Applications/DevToys.app && ! test -d $HOME/Applications/DevToys.app' | bash
_when:cask: '! test -d /Applications/DevToys.app && ! test -d $HOME/Applications/DevToys.app'
cask: devtoys
devtoys-windows:
_bin: devtoys
@ -997,7 +1006,7 @@ softwarePackages:
_bin: codeedit
_github: https://github.com/CodeEditApp/CodeEdit
_name: CodeEdit
_when:cask: '! test -d /Applications/CodeEdit.app && ! test -d $HOME/Applications/CodeEdit.app'
_when:cask: '! test -d "/Applications/CodeEdit.app" && ! test -d "$HOME/Applications/CodeEdit.app"'
cask: codeedit
barrier:
_bin: barrier
@ -1158,7 +1167,7 @@ softwarePackages:
_bin: logi-options-plus
_github: false
_name: Logi Options+
_when:cask: '! test -d "/Applications/Logi Options+.app" && ! test -d "$HOME/Applications/Logi Options+.app"'
_when:cask: '! test -d "/Applications/logioptionsplus.app" && ! test -d "$HOME/Applications/logioptionsplus.app"'
choco: logioptionsplus
cask: logi-options-plus
exe: https://download01.logi.com/web/ftp/pub/techsupport/optionsplus/logioptionsplus_installer.exe
@ -1509,19 +1518,19 @@ softwarePackages:
_bin: amethyst
_github: https://github.com/ianyh/Amethyst
_name: Amethyst
_when:cask: echo '! test -d /Applications/Amethyst.app && ! test -d $HOME/Applications/Amethyst.app' | bash
_when:cask: '! test -d /Applications/Amethyst.app && ! test -d $HOME/Applications/Amethyst.app'
cask: amethyst
alt-tab:
_bin: alt-tab
_github: https://github.com/lwouis/alt-tab-macos
_name: Alt+Tab for macOS that works like alt+tab on Windows
_when:cask: echo '! test -d /Applications/AltTab.app && ! test -d $HOME/Applications/AltTab.app' | bash
_when:cask: '! test -d "/Applications/AltTab.app" && ! test -d "$HOME/Applications/AltTab.app"'
cask: alt-tab
fiscript:
_bin: fiscript
_github: https://github.com/Mortennn/FiScript
_name: FiScript
_when:cask: echo '! test -d /Applications/FiScript.app && ! test -d $HOME/Applications/FiScript.app' | bash
_when:cask: '! test -d /Applications/FiScript.app && ! test -d $HOME/Applications/FiScript.app'
cask: fiscript
opencommit:
_bin: opencommit
@ -1660,7 +1669,7 @@ softwarePackages:
_bin: lightproxy
_github: https://github.com/alibaba/lightproxy
_name: LightProxy
_when:cask: echo '! test -d /Applications/LightProxy.app && ! test -d $HOME/Applications/LightProxy.app' | bash
_when:cask: '! test -d /Applications/LightProxy.app && ! test -d $HOME/Applications/LightProxy.app'
cask: lightproxy
carbon-now:
_bin: carbon-now
@ -3449,6 +3458,7 @@ softwarePackages:
_github: https://github.com/chrissimpkins/Crunch
_home: https://github.com/chrissimpkins/Crunch
_name: Crunch
_when:cask: '! test -d /Applications/Crunch.app && ! test -d $HOME/Applications/Crunch.app'
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)"
eul:
@ -3512,7 +3522,7 @@ softwarePackages:
_github: https://github.com/nitroshare/nitroshare-desktop
_home: https://nitroshare.net/
_name: NitroShare
_when:cask: '! test -d /Applications/nitroshare.app && ! test -d $HOME/Applications/nitroshare.app'
_when:cask: '! test -d "/Applications/nitroshare.app" && ! test -d "$HOME/Applications/nitroshare.app"'
apt: nitroshare
cask: nitroshare
choco: nitroshare
@ -4938,15 +4948,17 @@ softwarePackages:
_name: Ansibler
pipx: ansibler
java:
_bin: 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: '! java --version | grep Temurin'
ansible: professormanhattan.java
apt: openjdk-11-jdk
brew: openjdk
cask: temurin
choco: jdk11
dnf: java-11-openjdk-devel.x86_64
pacman: jdk-openjdk
@ -4960,6 +4972,7 @@ softwarePackages:
_home: https://www.jenv.be/
_name: jenv
ansible: professormanhattan.jenv
brew: jenv
atuin:
_bin: atuin
_github: https://github.com/ellie/atuin
@ -5707,6 +5720,7 @@ softwarePackages:
_github: https://github.com/marktext/marktext
_home: null
_name: MarkText
_post:cask: if [ -d /Applications/MarkText.app ]; then xattr -cr /Applications/MarkText.app; elif [ -d "$HOME/Applications/MarkText.app" ]; then xattr -cr "$HOME/Applications/MarkText.app"; fi
_when:cask: '! test -d /Applications/MarkText.app && ! test -d $HOME/Applications/MarkText.app'
cask: mark-text
choco: marktext
@ -7064,6 +7078,7 @@ softwarePackages:
_github: null
_home: https://www.parallels.com/
_name: Parallels
_notes: On macOS, full disk access is required for Terminal.
_when: '! test -d "/Applications/Parallels Desktop.app" && ! test -d "$HOME/Applications/Parallels Desktop.app"'
_notes: For Homebrew Cask, this requires the terminal to have full disk access
ansible:darwin: professormanhattan.parallels
@ -9911,7 +9926,7 @@ softwarePackages:
pacman: vagrant
scoop: vagrant
vagrant-vmware-utility:
_bin: vagrant-vmware-utility
_bin: false
_desc: null
_docs: null
_github: null
@ -10906,7 +10921,7 @@ softwarePackages:
_github: https://github.com/Yubico/yubikey-manager-qt
_home: https://developers.yubico.com/yubikey-manager-qt/
_name: YubiKey Manager
_when:cask: echo '! test -d "/Applications/YubiKey Manager.app" && ! test -d "$HOME/Applications/YubiKey Manager.app"' | bash
_when:cask: '! test -d "/Applications/YubiKey Manager.app" && ! test -d "$HOME/Applications/YubiKey Manager.app"'
appimage: Yubico/yubikey-manager-qt
cask: yubico-yubikey-manager
choco: yubikey-manager