about summary refs log tree commit diff stats
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--flake.nix76
1 files changed, 76 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..5413444
--- /dev/null
+++ b/flake.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>.
+{
+  description = "yt";
+
+  inputs = {
+    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+
+    flake-utils.url = "github:numtide/flake-utils";
+  };
+
+  outputs = {
+    self,
+    nixpkgs,
+    flake-utils,
+  }: (flake-utils.lib.eachDefaultSystem (system: let
+    pkgs = nixpkgs.legacyPackages."${system}";
+
+    python = pkgs.python3.withPackages (ps:
+      with ps; [
+        yt-dlp
+      ]);
+
+    buildInputs = with pkgs; [
+      mpv-unwrapped.dev
+    ];
+
+    nativeBuildInputs = with pkgs; [
+      llvmPackages_latest.clang-unwrapped.lib
+    ];
+  in {
+    devShells.default = pkgs.mkShell {
+      env = let
+        clang_version =
+          pkgs.lib.versions.major
+          pkgs.llvmPackages_latest.clang-unwrapped.version;
+      in {
+        FFMPEG_LOCATION = "${pkgs.lib.getExe pkgs.ffmpeg}";
+        LIBCLANG_PATH = "${pkgs.llvmPackages_latest.clang-unwrapped.lib}/lib/libclang.so";
+        LIBCLANG_INCLUDE_PATH = "${pkgs.llvmPackages_latest.clang-unwrapped.lib}/lib/clang/${clang_version}/include";
+        C_INCLUDE_PATH = "${pkgs.glibc.dev}/include";
+      };
+
+      inherit buildInputs nativeBuildInputs;
+
+      packages = with pkgs; [
+        # rust stuff
+        cargo
+        clippy
+        rustc
+        rustfmt
+        mold-wrapped
+
+        reuse
+        cocogitto
+
+        sqlx-cli
+        sqlite-interactive
+
+        python
+        jq
+
+        cargo-edit
+        cargo-expand
+        cargo-flamegraph
+      ];
+    };
+  }));
+}