nixfiles/lib/darwin/apps/common.nix

68 lines
No EOL
1.6 KiB
Nix

{ wget, lib }:
rec {
download = {
url,
params ? "",
var ? "DOWNLOADED_FILE"
}: ''
echo "Downloading" ${lib.escapeShellArg url}"..."
${var}=$(mktemp)
${wget}/bin/wget ${lib.escapeShellArg url} ${params} -q --show-progress -O ${"$" + var}
'';
withMountedDmg = path: shell: ''
_result=$(hdiutil mount ${path} | tail -n1)
DMG_DEVICE=$(echo "$_result" | awk '{print $1}')
DMG_MOUNTPOINT=$(echo "$_result" | awk '{print $3}')
unset _result
function _unmount {
hdiutil unmount $DMG_DEVICE > /dev/null
}
trap _unmount ERR exit
${shell}
_unmount
trap - ERR exit
unset DMG_DEVICE
unset DMG_MOUNTPOINT
'';
installAppFromDmg = { dmg, filename }: withMountedDmg dmg ''
if [ ! -d "$DMG_MOUNTPOINT/"${lib.escapeShellArg filename} ]; then
echo "Error: file not found:" ${lib.escapeShellArg filename}
exit 1
fi
cp -r "$DMG_MOUNTPOINT/"${lib.escapeShellArg filename} /Applications
'';
downloadAndInstallDmgApp = {
url,
filename,
params ? "",
}: ''
if [ ! -d "/Applications/"${lib.escapeShellArg (builtins.baseNameOf filename)} ]; then
${download { inherit url params; }}
${installAppFromDmg { dmg = "$DOWNLOADED_FILE"; inherit filename; }}
rm -rf $DOWNLOADED_FILE
fi
'';
downloadAndInstallDmgPkg = {
url,
filename,
condition,
params ? "",
}: ''
if [ ${condition} ]; then
${download { inherit url params; }}
${withMountedDmg "$DOWNLOADED_FILE" ''
installer -pkg "$DMG_MOUNTPOINT/"${lib.escapeShellArg filename} -target /
''}
rm -rf $DOWNLOADED_FILE
fi
'';
}