diff options
Diffstat (limited to 'package/package.nix')
-rw-r--r-- | package/package.nix | 76 |
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 + ''; + } |