about summary refs log tree commit diff
path: root/pkgs/applications/video/losslesscut-bin
diff options
context:
space:
mode:
authorShamrock Lee <44064051+ShamrockLee@users.noreply.github.com>2021-04-18 21:55:08 +0800
committerGitHub <noreply@github.com>2021-04-18 09:55:08 -0400
commit56a4d9857a269a3df89cb9b5ea99917e83850620 (patch)
tree3a49c46dea222589140b5c65873af1e291ba23de /pkgs/applications/video/losslesscut-bin
parent9b3ab07eba81c5a583c8c3be25ad69746ae7eba0 (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.nix45
-rw-r--r--pkgs/applications/video/losslesscut-bin/default.nix24
-rw-r--r--pkgs/applications/video/losslesscut-bin/dmg.nix31
-rw-r--r--pkgs/applications/video/losslesscut-bin/windows.nix45
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;
+}