diff options
author | Shamrock Lee <44064051+ShamrockLee@users.noreply.github.com> | 2021-04-18 21:55:08 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-18 09:55:08 -0400 |
commit | 56a4d9857a269a3df89cb9b5ea99917e83850620 (patch) | |
tree | 3a49c46dea222589140b5c65873af1e291ba23de /pkgs/applications/video/losslesscut-bin | |
parent | 9b3ab07eba81c5a583c8c3be25ad69746ae7eba0 (diff) |
losslesscut-bin: init at 3.33.1 (#108512)
Add binary package for * Linux (AppImage) * Mac (dmg, x86_64 version) * Windows (zip)
Diffstat (limited to 'pkgs/applications/video/losslesscut-bin')
-rw-r--r-- | pkgs/applications/video/losslesscut-bin/appimage.nix | 45 | ||||
-rw-r--r-- | pkgs/applications/video/losslesscut-bin/default.nix | 24 | ||||
-rw-r--r-- | pkgs/applications/video/losslesscut-bin/dmg.nix | 31 | ||||
-rw-r--r-- | pkgs/applications/video/losslesscut-bin/windows.nix | 45 |
4 files changed, 145 insertions, 0 deletions
diff --git a/pkgs/applications/video/losslesscut-bin/appimage.nix b/pkgs/applications/video/losslesscut-bin/appimage.nix new file mode 100644 index 0000000000000..d1f60c3dd2c26 --- /dev/null +++ b/pkgs/applications/video/losslesscut-bin/appimage.nix @@ -0,0 +1,45 @@ +{ appimageTools, lib, fetchurl, gtk3, gsettings-desktop-schemas, version }: + +let + pname = "losslesscut"; + nameRepo = "lossless-cut"; + nameCamel = "LosslessCut"; + name = "${pname}-${version}"; + nameSource = "${nameCamel}-linux.AppImage"; + nameExecutable = "losslesscut"; + owner = "mifi"; + src = fetchurl { + url = "https://github.com/${owner}/${nameRepo}/releases/download/v${version}/${nameSource}"; + name = nameSource; + sha256 = "0aqz5ijl5japfzzbcdcd2mmihkb8b2fc2hs9kkm3211yb37c5ygv"; + }; + extracted = appimageTools.extractType2 { + inherit name src; + }; +in appimageTools.wrapType2 { + inherit name src; + + profile = '' + export LC_ALL=C.UTF-8 + export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS + ''; + + extraPkgs = ps: appimageTools.defaultFhsEnvArgs.multiPkgs ps; + + extraInstallCommands = '' + mv $out/bin/{${name},${nameExecutable}} + ( + mkdir -p $out/share + cd ${extracted}/usr + find share -mindepth 1 -type d -exec mkdir -p $out/{} \; + find share -mindepth 1 -type f,l -exec ln -s $PWD/{} $out/{} \; + ) + ln -s ${extracted}/${nameExecutable}.png $out/share/icons/${nameExecutable}.png + mkdir $out/share/applications + cp ${extracted}/${nameExecutable}.desktop $out/share/applications + substituteInPlace $out/share/applications/${nameExecutable}.desktop \ + --replace AppRun ${nameExecutable} + ''; + + meta.platforms = with lib.platforms; [ "x86_64-linux" ]; +} diff --git a/pkgs/applications/video/losslesscut-bin/default.nix b/pkgs/applications/video/losslesscut-bin/default.nix new file mode 100644 index 0000000000000..01f9c15806281 --- /dev/null +++ b/pkgs/applications/video/losslesscut-bin/default.nix @@ -0,0 +1,24 @@ +{ callPackage, stdenvNoCC, lib }: +let + version = "3.33.1"; + appimage = callPackage ./appimage.nix { inherit version; }; + dmg = callPackage ./dmg.nix { inherit version; }; + windows = callPackage ./windows.nix { inherit version; }; +in ( + if stdenvNoCC.isDarwin then dmg + else if stdenvNoCC.isCygwin then windows + else appimage +).overrideAttrs +(oldAttrs: { + meta = with lib; { + description = "The swiss army knife of lossless video/audio editing"; + homepage = "https://mifi.no/losslesscut/"; + license = licenses.mit; + maintainers = with maintainers; [ ShamrockLee ]; + } // oldAttrs.meta // { + platforms = + appimage.meta.platforms + ++ dmg.meta.platforms + ++ windows.meta.platforms; + }; +}) diff --git a/pkgs/applications/video/losslesscut-bin/dmg.nix b/pkgs/applications/video/losslesscut-bin/dmg.nix new file mode 100644 index 0000000000000..3d0bad1975706 --- /dev/null +++ b/pkgs/applications/video/losslesscut-bin/dmg.nix @@ -0,0 +1,31 @@ +{ stdenvNoCC, lib, fetchurl, undmg, version }: + +let + pname = "losslesscut"; + nameRepo = "lossless-cut"; + nameCamel = "LosslessCut"; + nameSource = "${nameCamel}-mac.dmg"; + nameApp = nameCamel + ".app"; + owner = "mifi"; + src = fetchurl { + url = "https://github.com/${owner}/${nameRepo}/releases/download/v${version}/${nameSource}"; + name = nameSource; + sha256 = "0xa1avbwar7x7kv5yn2ldca4vj3nwaz0dhjm3bcdy59q914xn3dj"; + }; +in stdenvNoCC.mkDerivation { + inherit pname version src; + + nativeBuildInputs = [ undmg ]; + + unpackPhase = '' + undmg ${src} + ''; + sourceRoot = nameApp; + + installPhase = '' + mkdir -p $out/Applications/${nameApp} + cp -R . $out/Applications/${nameApp} + ''; + + meta.platforms = lib.platforms.darwin; +} diff --git a/pkgs/applications/video/losslesscut-bin/windows.nix b/pkgs/applications/video/losslesscut-bin/windows.nix new file mode 100644 index 0000000000000..fe5df9d6c9066 --- /dev/null +++ b/pkgs/applications/video/losslesscut-bin/windows.nix @@ -0,0 +1,45 @@ +{ stdenvNoCC +, lib +, fetchurl +, unzip +, version +, useMklink ? false +, customSymlinkCommand ? null +}: +let + pname = "losslesscut"; + nameRepo = "lossless-cut"; + nameCamel = "LosslessCut"; + nameSourceBase = "${nameCamel}-win"; + nameSource = "${nameSourceBase}.zip"; + nameExecutable = "${nameCamel}.exe"; + owner = "mifi"; + getSymlinkCommand = if (customSymlinkCommand != null) then customSymlinkCommand + else if useMklink then (targetPath: linkPath: "mklink ${targetPath} ${linkPath}") + else (targetPath: linkPath: "ln -s ${targetPath} ${linkPath}"); +in stdenvNoCC.mkDerivation { + inherit pname version; + + src = fetchurl { + name = nameSource; + url = "https://github.com/${owner}/${nameRepo}/releases/download/v${version}/${nameSource}"; + sha256 = "1rq9frab0jl9y1mgmjhzsm734jvz0a646zq2wi5xzzspn4wikhvb"; + }; + + nativeBuildInputs = [ unzip ]; + + unpackPhase = '' + unzip $src -d ${nameSourceBase} + ''; + + sourceRoot = nameSourceBase; + + installPhase = '' + mkdir -p $out/bin $out/libexec + cd .. + mv ${nameSourceBase} $out/libexec + + '' + (getSymlinkCommand "${nameSourceBase}/${nameExecutable}" "$out/bin/${nameExecutable}"); + + meta.platforms = lib.platforms.windows; +} |