lyraphase_workstation cookbook
A cookbook including various recipes for installing tools used by myself.
This includes Ableton Live DAW, VSTs, and other various tools and
utilities.
Include the recipes you want in your Chef run_list
, or in yoursoloistrc
file.
NOTE: The default URLs for non-free applications may not work for you.
You may want to host your own .dmg
and app install files. Please see the
recipe’s cooresponding attributes
file for examples. All checksums are
SHA256, and can be found via shasum -a 256 path/to/file/here.dmg
.
You may decide to create a DAW Chef Role such as:
roles/osx-daw.json
:
{
"json_class": "Chef::Role",
"name": "osx-daw",
"description": "Role for configuring OSX as a Digital Audio Workstation",
"override_attributes": {
"homebrew": {
"casks": [
"keyfinder",
"soundflower",
"audacity"
]
},
"lyraphase_workstation": {
"ableton_live": {
"managed_versions": "all",
"options": ["EnableMapToSiblings"],
"dmg": {
"source": "http://www.example.com/mac/dmgs/ableton_live_suite_10.0.1_64.dmg",
"checksum": "73f8b7d9c2e058639466cbb765e6e1610f97f542745e2c69567d7bf55a407e11",
"volumes_dir": "Ableton Live 10 Suite Installer",
"dmg_name": "ableton_live_suite_10.0.1_64",
"app": "Ableton Live 10 Suite"
}
}
}
},
"run_list": [
"recipe[lyraphase_workstation::airfoil]",
"recipe[lyraphase_workstation::ableton_live]",
"recipe[lyraphase_workstation::ableton_live_options]",
"recipe[lyraphase_workstation::max_for_live]",
"recipe[lyraphase_workstation::traktor]",
"recipe[lyraphase_workstation::traktor_audio_2]",
"recipe[lyraphase_workstation::dmgaudio_dualism]",
"recipe[lyraphase_workstation::oxium]",
"recipe[lyraphase_workstation::polyverse_infected_mushroom_i_wish]",
"recipe[lyraphase_workstation::mixed_in_key]",
"recipe[lyraphase_workstation::korg_kontrol_editor]",
"recipe[lyraphase_workstation::sublime_text_settings]",
"recipe[lyraphase_workstation::nfs_mounts]",
"recipe[lyraphase_workstation::bash_it_custom_plugins]",
"recipe[lyraphase_workstation::daisydisk]",
"recipe[lyraphase_workstation::drobo_dashboard]",
"recipe[lyraphase_workstation::prolific_pl2303_driver]"
]
}
There are also some non-DAW related recipes included in this cookbook.
You may also decide to create a development tool Chef Role such as:
roles/osx-development.json
:
{
"json_class": "Chef::Role",
"name": "osx-development",
"description": "Role for configuring OSX with developer tools",
"override_attributes": {
"lyraphase_workstation": {
"nfs_mounts": [
"/../Volumes/my-nfs-mount -fstype=nfs,nolockd,resvport,hard,bg,intr,rw,tcp,nfc nfs://nfs-server.example.com:/export/my-nfs-mount"
]
}
},
"run_list": [
"recipe[sublime_text_settings]",
"recipe[nfs_mounts]",
"recipe[homebrew_sudoers]",
"recipe[iterm2_shell_integration]",
"recipe[bash4]",
"recipe[bash_it_custom_plugins]",
"recipe[gpg21]"
]
}
To use the sublime_text_settings
recipe, place your Sublime Text 3
Application Data folders under
"#{node['lyraphase_workstation']['home']}/pCloud Drive/AppData/mac/sublime-text-3/"
The recipe will create Symbolic Links to these files in the usual
location:
"#{node['lyraphase_workstation']['home']}/Library/Application Support/Sublime Text 3/"
The result is that your Sublime Text 3 folders get synced to pCloud, and Sublime
Text can look for them in the default location, follow the symlink to the pCloud
destination files.
The nfs_mounts
recipe will just mount things in the list of nfs_mounts
for you. The /../
part in front of /../Volumes/
happens to be important!
The reason is because the OSX /etc/auto_nfs
file does not usually want to mount
things under /Volumes
. Putting the /../
in front allows you to use
automount to mount NFS volumes there.
The homebrew_sudoers
recipe uses the includedtemplates/default/sudoers.d/homebrew_chef.erb
template to fix sudo
permissions when running chef-client
or soloist
to provision your OSX
machine. Without this, you may be asked for sudo
password far too many times
than is feasible to type. The included sudoers.d
file drop-in allows thehomebrew
cookbook to run the
commands it needs via passwordless sudo
.
The iterm2_shell_integration
recipe installs iTerm via iterm
recipe, and
then iTerm2 Shell Integration via script urlhttps://iterm2.com/misc/install_shell_integration.sh
. Checksum may not be kept
up to date, but you can change this.
See the recipe’s attributes (attributes/iterm2_shell_integration.rb
).
The iterm
recipe installs iTerm via Homebrew. It then
installs my default preferences file via templatetemplates/default/com.googlecode.iterm2.plist.erb
. You may not want this and
may want to use a wrapper cookbook that just calls include_recipe 'iterm'
so
you can override my template.
The bash4
recipe installs Bash version 4 via Homebrew and changes your login
shell. It also configures /etc/shells
with a list of shells from attributenode['lyraphase_workstation']['bash']['etc_shells']
. If you do not want to
reset your login shell to bash from Homebrew, setdefault['lyraphase_workstation']['bash']['set_login_shell'] = false
.
The etc_shells_path
is also configurable (see attributes/bash4.rb
).
The bash_it_custom_plugins
recipe uses sprout-base::bash_it
to install a
list of plugins for Bash-it. The default list is innode.default['lyraphase_workstation']['bash_it']['custom_plugins']
.
See the sprout-base
cookbook for more details.
The gpg21
recipe installs GnuPG version 2.1 via homebrew/versions
Homebrew
Tap. It ensures that old symlinks to gpg binaries are deleted (configurable vianode['lyraphase_workstation']['gpg21']['binary_paths']
). Only symlinks are
unlinked, no old binaries should be harmed. The recipe also installs a helper
script to /usr/local/bin/fixGpgHome
, and a LaunchAgents
to/Library/LaunchAgents/com.lyraphase.gpg21.fix.plist
. Finally, it setsRunAtLoad: false
for the original/Library/LaunchAgents/org.gpgtools.macgpg2.fix.plist
file. The reason for
this set of patches is because the original LaunchAgent has hardcoded references
to the old GnuPG binaries, and you may end up getting confused as to which
version of GPG you are really using from gpg-agent
, gpg
, and gpg2
. This
recipe sets them all to the new gpg21
binaries from Homebrew. Finally, it
adds StreamLocalBindUnlink yes
to your /etc/ssh/sshd_config
so you may usegpg-agent
forwarding over SSH.
If you find this project useful and appreciate my work,
would you be willing to click one of the buttons below to Sponsor this project
and help me continue?
Method | Button |
---|---|
GitHub | 💖 Sponsor |
Liberapay | |
PayPal | ![]() |
Ko-Fi |
Every little bit is appreciated! Thank you! 🙏
Note: This Chef Cookbook has migrated from the old location
(trinitronx/lyraphase_workstation
) to LyraPhase/lyraphase_workstation
.
It has NOT changed ownership or maintainers at this time. It has been moved
to benefit from GitHub’s CI/CD automation features that are available to a
GitHub Organization.
While all links to the previous repository location are automatically redirected
to the new location by GitHub, it is recommended to migrate any references you
may have, or previously cloned git
repos to use the new URL.
To avoid confusion, we strongly recommend updating any existing local clones to
point to the new repository URL.
cd path/to/trinitronx/lyraphase_workstation
git remote -vv # List remote repos
# Find the named remote URL with 'trinitronx/lyraphase_workstation'
# (usually 'origin' by default)
# If you checked this repo out as a fork
# or named the remote repo something other than 'origin',
# then use that in the following command
git remote set-url origin https://github.com/LyraPhase/lyraphase_workstation.git
git remote -vv # Check that the remote repo URL now contains 'LyraPhase/lyraphase_workstation'
The cookbook and recipe names have not changed. While generally repo names are
not as important to Chef Infra or Cinc Client, they may appear in dependency
manager files such as:
Policyfile
sBerksfile
sCheffile
sYou can do this easily in your codebase using the following commands:
grep -rin -l 'trinitronx/lyraphase_workstation' ./ | \
xargs -I{} sed -i '' -e 's#trinitronx/lyraphase_workstation#LyraPhase/lyraphase_workstation#g' '{}'
grep -rin -l 'LyraPhase/lyraphase_workstation' ./ | xargs -I{} git add '{}'
git commit -m 'Migrating Cookbook trinitronx/lyraphase_workstation => LyraPhase/lyraphase_workstation'
Then, run your dependency manager tool commands appropriately.
Too many to list! Please see the appropriate recipe’sattributes/<recipe_here>.rb
file for details.
Some general rules of thumb:
.dmg
file installers usually have the following attributes:['lyraphase_workstation']['recipe_here']['dmg']
: A set of attributes['source']
: A source URL for Chef to download the DMG installer from.['checksum']
: A SHA256 checksum of the .dmg
file. Get this viashasum -a 256 your-file.dmg
OR on *nix systems sha256sum your-file.dmg
.['volumes_dir']
: Directory name that the .dmg
will expected to be/Volumes/
.['dmg_name']
: Name of the .dmg
file without the .dmg
suffix.['app']
: Name of the .app
folder inside the mounted .dmg
./Volumes/dmg_name/app_name_here.app
.['type']
: Type of application the dmg cookbook willapp
, mkpg
, pkg
. Default: ‘app
‘.zip
file app installations usually have these attributes:['lyraphase_workstation']['recipe_here']['zip']
: A set of attributes.zip
file:['zip']['source']
: A source URL for Chef to download the ZIP archive['zip']['checksum']
: A SHA256 checksum of the .zip
file. Get thisshasum -a 256 your-file.zip
OR on *nix systemssha256sum your-file.zip
.['license']
data inside Chef Attributes['license']
data inside Encrypted Data Bags.rb
file for the Encrypted Data Bag name, then create['license']
. You may wish to use theknife-solo_data_bag
gem to assist in operating onknife
commands to operate on['license']
dataHash
), it will override the Attributes and use this instead.lyraphase_workstation::ableton_live
: Install Ableton Livelyraphase_workstation::ableton_live_options
: Manage Options.txtlyraphase_workstation::airfoil
: Install Airfoillyraphase_workstation::audinate_dante_controller
: Install Audinate Dante Controllerlyraphase_workstation::bash4
: Install bash v4lyraphase_workstation::bash_it_custom_plugins
: Install some custom pluginsgit-custom_subdir_gitconfig.aliases
: Alias for git
to support.gitemail
author & email config filesless-manpage-colors.bash
: Set LESS_TERMCAP_*
environment variables forless
Pager.lyraphase_workstation::bitfocus_companion
: Install Bitfocus Companionlyraphase_workstation::cycling_74_max
: Install CYCLING ‘74 MAXlyraphase_workstation::daisydisk
: Install DaisyDisklyraphase_workstation::default
: No-Op recipe for just loading libraries thislyraphase_workstation::dmgaudio_dualism
: Install DMGAudio Dualismlyraphase_workstation::drobo_dashboard
: Install Drobo Dashboardlyraphase_workstation::gpg21
: Install GnuPG 2.1 via homebrew/versions
homebrew/versions
gpg-suite
recipe version 2019.2
nowgpg (GnuPG/MacGPG2) 2.2.17
!lyraphase_workstation::hammerspoon
: ‘Install Hammerspoonlyraphase_workstation::hammerspoon_shiftit
: Install ShiftIt replacement: MiroWindowManager.spoonlyraphase_workstation::homebrew_sudoers
: Install/etc/sudoers.d/homebrew_chef
config settings to fix sudo
permissions whenchef-client
or soloist
to provision your OSX machine.sudo
password far too many times thansudoers.d
file drop-in allows the homebrew
cookbooksudo
.lyraphase_workstation::korg_kontrol_editor
: Install Korg Kontrol Editorlyraphase_workstation::loopback_alias_ip
: Install loopback alias IP LaunchDaemon
for SSH Tunneled Proxy Access to VPC / Private Network from a Docker Container
terraform
explained herenet
library must still add SOCKS5h support forsocks5h://
protocol via HTTP_PROXY
, HTTPS_PROXY
curl
, wget
, etc…)How to use:
LaunchDaemon
with this recipe.DynamicForward
tunnel using the Alias IP set innode['lyraphase_workstation']['loopback_alias_ip']['alias_ip']
attribute172.16.222.111
)alias_ip
should be in a network range designated asalias_ip
(172.16.222.111
) is configured to be in the172.16.0.0/12
not publicly routable private IPv4 range.Run a Docker container, passing the configured Alias IP via standard*_PROXY
environment variables
For example:
export PROTO='socks5h://'; export IP=172.16.222.111; export PORT=2903;
ssh -f -N -v -D ${IP}:${PORT} ssh-bastion-host.example.com
export ALL_PROXY="${PROTO}${IP}:${PORT}"; HTTP_PROXY="$ALL_PROXY" HTTPS_PROXY="$ALL_PROXY"
Set up Docker Networking:
docker network create -d bridge --subnet 10.1.123.0/22 --gateway 10.1.123.1 bridgenet
Then pass the proxy to docker run ...
:
--net=bridgenet -e HTTP_PROXY=HTTP_PROXY -e HTTPS_PROXY=HTTPS_PROXY -e ALL_PROXY=ALL_PROXY
Alternatively, use a hostname inside the container’s /etc/hosts
:
--add-host proxy.local:$IP
export ALL_PROXY=socks5h://proxy.local:2903; export HTTPS_PROXY=$ALL_PROXY; export HTTP_PROXY=$ALL_PROXY;
curl -v http://your-service.vpc.local
More complete docs & example can be found here
lyraphase_workstation::machine_name
: Set MacOS machine name based onnode[machine_domain]
Local cookbook replacement for sprout-osx-settings::machine_namelyraphase_workstation::max_for_live
: Install Max for Livelyraphase_workstation::mixed_in_key
: Install Mixed In Keylyraphase_workstation::multibit
: Install Multibitlyraphase_workstation::musicbrainz_picard
: Install MusicBrainz Picardlyraphase_workstation::nfs_mounts
: Manage /etc/auto_nfs entries forlyraphase_workstation::omnifocus
: Install OmniFocuslyraphase_workstation::osx_autohide_dock
: Enable AutoHide OSX Dock, withautohide-delay
.node['lyraphase_workstation']['settings']['autohide_delay']
.node['lyraphase_workstation']['settings']['autohide_dock']
lyraphase_workstation::osx_natural_scrolling
: Enable Natural Mouse Scrollingcom.apple.swipescrolldirection
for a more natural & intuitivenode['lyraphase_workstation']['settings']['natural_scrolling']
lyraphase_workstation::oxium
: Install Xils-Lab Oxiumlyraphase_workstation::polyverse_infected_mushroom_gatekeeper
: Installlyraphase_workstation::polyverse_infected_mushroom_i_wish
: Installlyraphase_workstation::polyverse_infected_mushroom_manipulator
: Installlyraphase_workstation::prolific_pl2303_driver
: Install Prolific PL2303 Driverlyraphase_workstation::root_bootstrap_ssh_config
: Installs a minimal.ssh/config
+ known_hosts
file for GitHub & Homebrew bootstraplyraphase_workstation::ssh_tunnel_port_override
: Installssh-tunnel-port-override.sh
scriptLaunchDaemon
to allow killing some process8081
) on login.SSH Tunnel
App has not claimed the portSIGXCPU
, as supported by launchd
!/var/log/ssh-tunnel-override.log
lyraphase_workstation::sublime_text_settings
: Installs Settings symlinks forlyraphase_workstation::trackspacer
: Installs WavesFactory TrackSpacer VSTlyraphase_workstation::traktor
: Installs Traktorlyraphase_workstation::traktor_audio_2
: Installs Traktor Audio 2 DJkext
/ Kernel Extension drivers in macOSkext
driver as amacOS >= 10.15.x
snd-usb-caiaq
lyraphase_workstation::user_default_shell
: Sets a default shell for yourlyraphase_workstation::vimrc
: Installs vimrc via git repolyraphase_workstation::xcode
: Install XCode via .dmg and accepts XCode buildAuthor:: James Cuzella (@trinitronx)