{ description = "page - a gtk view thingy whatever fuck you"; 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 = import nixpkgs { inherit system; }; gstPluginPath = pkgs.lib.makeSearchPath "lib/gstreamer-1.0" (with pkgs.gst_all_1; [ gstreamer.out gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]); page = pkgs.stdenv.mkDerivation { pname = "page"; version = "0.1.0"; src = ./.; nativeBuildInputs = [ pkgs.pkg-config pkgs.meson pkgs.ninja pkgs.wrapGAppsHook3 ]; buildInputs = [ pkgs.gtk4 pkgs.webkitgtk_6_0 pkgs.glib-networking pkgs.cacert ] ++ (with pkgs.gst_all_1; [ gstreamer.out gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]); preFixup = '' gappsWrapperArgs+=( --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "${gstPluginPath}" --set SSL_CERT_FILE "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" --set GST_REGISTRY_REUSE_PLUGIN_SCANNER no ) ''; }; in { packages.default = page; packages.page = page; apps.default = { type = "app"; program = "${page}/bin/page"; }; devShells.default = pkgs.mkShell { nativeBuildInputs = [ pkgs.pkg-config pkgs.meson pkgs.ninja pkgs.gdb ]; buildInputs = [ pkgs.gtk4 pkgs.webkitgtk_6_0 pkgs.glib-networking pkgs.cacert ] ++ (with pkgs.gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]); GIO_EXTRA_MODULES = "${pkgs.glib-networking}/lib/gio/modules"; SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; GST_PLUGIN_SYSTEM_PATH_1_0 = gstPluginPath; shellHook = '' ''; }; }); }