about summary refs log tree commit diff stats
path: root/package/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'package/package.nix')
-rw-r--r--package/package.nix76
1 files changed, 76 insertions, 0 deletions
diff --git a/package/package.nix b/package/package.nix
new file mode 100644
index 0000000..c0b4718
--- /dev/null
+++ b/package/package.nix
@@ -0,0 +1,76 @@
+# yt - A fully featured command line YouTube client
+#
+# Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of Yt.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{
+  ffmpeg,
+  glibc,
+  lib,
+  llvmPackages_latest,
+  makeWrapper,
+  mpv-unwrapped,
+  python3,
+  rustPlatform,
+  sqlite,
+  blake3,
+}: let
+  version = "0.1.0";
+
+  src = ./..;
+
+  buildInputs = [
+    (python3.withPackages (ps: [ps.yt-dlp]))
+    mpv-unwrapped.dev
+    ffmpeg
+  ];
+in
+  rustPlatform.buildRustPackage {
+    inherit version src buildInputs;
+    pname = "yt";
+
+    nativeBuildInputs = [
+      makeWrapper
+      sqlite
+    ];
+
+    env = let
+      clang_version =
+        lib.versions.major
+        llvmPackages_latest.clang-unwrapped.version;
+    in {
+      FFMPEG_LOCATION = "${lib.getExe ffmpeg}";
+      PYO3_PYTHON = lib.getExe (python3.withPackages (ps: [ps.yt-dlp]));
+
+      C_INCLUDE_PATH = "${glibc.dev}/include";
+      DATABASE_URL = "sqlite://target/database.sqlite";
+      LIBCLANG_INCLUDE_PATH = "${llvmPackages_latest.clang-unwrapped.lib}/lib/clang/${clang_version}/include";
+      LIBCLANG_PATH = "${llvmPackages_latest.clang-unwrapped.lib}/lib/libclang.so";
+    };
+
+    prePatch = ''
+      bash ./scripts/mkdb.sh
+    '';
+
+    passthru = {
+      inherit blake3;
+    };
+
+    cargoLock = {
+      lockFile = ../Cargo.lock;
+    };
+
+    postBuild = ''
+      install -m755 ./python_update/raw_update.py -D "$out/bin/raw_update.py"
+      patchShebangs "$out/bin/raw_update.py"
+    '';
+
+    postInstall = ''
+      wrapProgram $out/bin/yt \
+        --prefix PATH : ${lib.makeBinPath buildInputs}:$out/bin
+    '';
+  }