{ inputs = { flake-utils.url = "github:numtide/flake-utils"; nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; fenix = { url = "github:nix-community/fenix"; inputs.nixpkgs.follows = "nixpkgs"; }; naersk = { url = "github:nix-community/naersk"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, flake-utils, nixpkgs, fenix, naersk, }: flake-utils.lib.eachDefaultSystem ( system: let overlay = final: prev: { # whisper-cpp = prev.whisper-cpp.override { # vulkanSupport = true; # }; # we use the last version of gtk4 which still has the old GL renderer; # the new one is broken on macos gtk4 = prev.gtk4.overrideAttrs (finalAttrs: prevAttrs: { version = "4.16.12"; src = final.fetchurl { url = "mirror://gnome/sources/gtk/${final.lib.versions.majorMinor finalAttrs.version}/gtk-${finalAttrs.version}.tar.xz"; hash = "sha256-7zG9vW8ILEQBY0ogyFCwBQyb8lLvHgeXZO6VoqDEyVo="; }; }); libadwaita = prev.libadwaita.overrideAttrs (finalAttrs: prevAttrs: { version = "1.6.3"; src = final.fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "GNOME"; repo = "libadwaita"; rev = finalAttrs.version; hash = "sha256-4rYiNI6Oj++iqbPIwe8KvwviGnh93sAZ9wp1cIPZcBA="; }; mesonFlags = []; }); }; pkgs = import nixpkgs { inherit system; overlays = [ overlay ]; }; fenix' = fenix.packages.${system}; toolchain = fenix'.stable.withComponents [ "cargo" "clippy" "rust-src" "rustc" "rustfmt" ]; naersk' = naersk.lib.${system}.override { cargo = toolchain; rustc = toolchain; }; rustPlatform = pkgs.makeRustPlatform { cargo = toolchain; rustc = toolchain; }; in rec { defaultPackage = naersk'.buildPackage { src = ./.; nativeBuildInputs = with pkgs; [ pkg-config rustPlatform.bindgenHook wrapGAppsHook4 glib ]; buildInputs = with pkgs; [ gtk4 libadwaita gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly gst_all_1.gst-libav #gst_all_1.gst-vaapi ffmpeg_8-full.dev ]; postInstall = '' install -D -m444 -t $out/share/glib-2.0/schemas data/*.gschema.xml glib-compile-schemas $out/share/glib-2.0/schemas ''; }; devShell = pkgs.mkShell { inputsFrom = [ defaultPackage ]; buildInputs = [ fenix'.rust-analyzer rustPlatform.bindgenHook ]; # this fixes tls-related gstreamer error when playing https streams shellHook = '' export GIO_MODULE_DIR=${pkgs.glib-networking}/lib/gio/modules/ ''; }; } ); }