about summary refs log tree commit diff
path: root/pkgs/by-name/ra/rav1e/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/ra/rav1e/package.nix')
-rw-r--r--pkgs/by-name/ra/rav1e/package.nix78
1 files changed, 78 insertions, 0 deletions
diff --git a/pkgs/by-name/ra/rav1e/package.nix b/pkgs/by-name/ra/rav1e/package.nix
new file mode 100644
index 0000000000000..b90dd2d56a617
--- /dev/null
+++ b/pkgs/by-name/ra/rav1e/package.nix
@@ -0,0 +1,78 @@
+{
+  lib,
+  rust,
+  stdenv,
+  rustPlatform,
+  fetchCrate,
+  pkg-config,
+  cargo-c,
+  darwin,
+  libgit2,
+  libiconv,
+  nasm,
+  testers,
+  zlib,
+  rav1e,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "rav1e";
+  version = "0.7.1";
+
+  src = fetchCrate {
+    inherit pname version;
+    hash = "sha256-Db7qb7HBAy6lniIiN07iEzURmbfNtuhmgJRv7OUagUM=";
+  };
+
+  cargoHash = "sha256-VyQ6n2kIJ7OjK6Xlf0T0GNsBvgESRETzKZDZzAn8ZuY=";
+
+  depsBuildBuild = [ pkg-config ];
+
+  nativeBuildInputs = [
+    cargo-c
+    libgit2
+    nasm
+  ];
+
+  buildInputs =
+    [ zlib ]
+    ++ lib.optionals stdenv.isDarwin [
+      libiconv
+      darwin.apple_sdk.frameworks.Security
+    ];
+
+  # Darwin uses `llvm-strip`, which results in link errors when using `-x` to strip the asm library
+  # and linking it with cctools ld64.
+  postPatch = lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) ''
+    substituteInPlace build.rs --replace-fail '.arg("-x")' '.arg("-S")'
+  '';
+
+  checkType = "debug";
+
+  postBuild = ''
+    ${rust.envVars.setEnv} cargo cbuild --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget}
+  '';
+
+  postInstall = ''
+    ${rust.envVars.setEnv} cargo cinstall --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget}
+  '';
+
+  passthru = {
+    tests.version = testers.testVersion { package = rav1e; };
+  };
+
+  meta = {
+    description = "Fastest and safest AV1 encoder";
+    longDescription = ''
+      rav1e is an AV1 video encoder. It is designed to eventually cover all use
+      cases, though in its current form it is most suitable for cases where
+      libaom (the reference encoder) is too slow.
+      Features: https://github.com/xiph/rav1e#features
+    '';
+    homepage = "https://github.com/xiph/rav1e";
+    changelog = "https://github.com/xiph/rav1e/releases/tag/v${version}";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ getchoo ];
+    mainProgram = "rav1e";
+  };
+}