page/flake.nix

71 lines
2.1 KiB
Nix

{
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 = ''
'';
};
});
}