svitak/flake.nix
2026-02-20 22:57:46 +00:00

99 lines
No EOL
1.8 KiB
Nix

{
description = "svitak dev shell (GHC 9.12, GTK4, WebKit 6.0)";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/7b6142dae006";
};
outputs = { self, nixpkgs }: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
devShells.${system}.default = pkgs.mkShell {
buildInputs = [
# Haskell toolchain
pkgs.haskell.compiler.ghc912
pkgs.cabal-install
# Build tools
pkgs.pkg-config
pkgs.zlib
pkgs.libsysprof-capture
pkgs.pcre2
pkgs.libxdmcp
pkgs.util-linux
pkgs.libselinux
pkgs.libsepol
pkgs.libpsl
pkgs.libnghttp2
pkgs.libnghttp2_asio
pkgs.nghttp2
pkgs.fribidi
pkgs.libthai
pkgs.libdatrie
pkgs.libdeflate
pkgs.lerc
pkgs.liblzma
# GTK stack
pkgs.gtk4
pkgs.webkitgtk_6_0
pkgs.libsoup_3
pkgs.glib
pkgs.gobject-introspection
pkgs.gdk-pixbuf
pkgs.cairo
pkgs.pango
pkgs.atk
# X11 runtime
pkgs.xorg.libX11
pkgs.xorg.libXext
pkgs.xorg.libXcursor
pkgs.xorg.libXrandr
pkgs.xorg.libXrender
pkgs.xorg.libXfixes
pkgs.xorg.libXcomposite
pkgs.xorg.libXdamage
pkgs.xorg.libXScrnSaver
pkgs.xorg.libICE
pkgs.xorg.libSM
# Optional but common
pkgs.sqlite
];
shellHook = ''
echo "Entering svitak dev shell (GHC 9.12 + GTK4 + WebKit6)"
unset GHC_PACKAGE_PATH
# Haskell GI needs pkg-config for gobject-introspection
export PKG_CONFIG_PATH=${pkgs.gobject-introspection}/lib/pkgconfig
# Runtime libraries
export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath [
pkgs.webkitgtk_6_0
pkgs.libsoup_3
pkgs.gtk4
pkgs.glib
pkgs.gobject-introspection
pkgs.gdk-pixbuf
pkgs.cairo
pkgs.pango
pkgs.xorg.libX11
pkgs.xorg.libXext
pkgs.xorg.libXcursor
pkgs.xorg.libXrandr
pkgs.xorg.libXrender
pkgs.xorg.libXfixes
pkgs.xorg.libXcomposite
pkgs.xorg.libXdamage
pkgs.xorg.libXScrnSaver
pkgs.xorg.libICE
pkgs.xorg.libSM
]}:$LD_LIBRARY_PATH
'';
};
};
}