dotfiles/nix/system/worktop/makeApp.nix

51 lines
1.1 KiB
Nix

{ name
, appname ? name
, version
, src
, sourceRoot ? "."
, # from nix
pkgs
, stdenv
, unzip
, ...
}:
if stdenv.isDarwin then
pkgs.stdenv.mkDerivation
{
name = "${name}-${version}";
version = "${version}";
src = src;
sourceRoot = "${appname}.app";
phases = [ "unpackPhase" "installPhase" ];
unpackCmd = ''
echo "File to unpack: $curSrc"
if ! [[ "$curSrc" =~ \.dmg$ ]]; then return 1; fi
mnt=$(mktemp -d -t ci-XXXXXXXXXX)
function finish {
echo "Detaching $mnt"
/usr/bin/hdiutil detach $mnt -force
rm -rf $mnt
}
trap finish EXIT
echo "Attaching $mnt"
/usr/bin/hdiutil attach -nobrowse -readonly $src -mountpoint $mnt
echo "What's in the mount dir"?
ls -la $mnt/
echo "Copying contents"
shopt -s extglob
DEST="$PWD"
(cd "$mnt"; cp -a !(Applications) "$DEST/")
'';
nativeBuildInputs = [ pkgs.unzip ];
installPhase = ''
mkdir -p $out/Applications/${appname}.app
cp -a ./. $out/Applications/${appname}.app/
'';
}
else
{ }