update flake

This commit is contained in:
Marko Andjelic 2026-02-22 05:08:10 +00:00
commit 3001f66d64
Signed by: marko
GPG key ID: 9C5E99C8C682FB59
3 changed files with 97 additions and 81 deletions

8
flake.lock generated
View file

@ -2,16 +2,16 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1754923922,
"narHash": "sha256-xRFTBIzOkHAyUJzWuGRoITGPvPTKYV+zedivG426Iqc=",
"lastModified": 1771369470,
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7b6142dae00643a9dfa37723a7bee73ffe54f8dc",
"rev": "0182a361324364ae3f436a63005877674cf45efb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "7b6142dae006",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}

134
flake.nix
View file

@ -2,97 +2,79 @@
description = "svitak dev shell (GHC 9.12, GTK4, WebKit 6.0)";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/7b6142dae006";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs }: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
pkgs = import nixpkgs { inherit system; };
cLibs = with pkgs; [
gtk4 webkitgtk_6_0 libsoup_3 glib
atk pango cairo harfbuzz graphene gdk-pixbuf
sysprof libsysprof-capture libadwaita
libpng freetype fontconfig pixman expat librsvg
libjpeg libtiff libwebp libdeflate lcms2 woff2 jbigkit graphite2
lerc libavif libheif openjpeg
bzip2 brotli zlib xz zstd lz4
wayland wayland-protocols libepoxy libGL libglvnd
vulkan-headers vulkan-loader
libx11 libxext libxrender libxi libxcursor
libxfixes libxdamage libxcomposite libxrandr
xorgproto libxcb libxkbcommon libdrm mesa
libxau libxdmcp libxft libxinerama libxtst
gst_all_1.gstreamer gst_all_1.gst-plugins-base
libinput libevdev xkeyboard_config
fribidi libthai libdatrie icu pcre2 enchant shared-mime-info libxml2
glibcLocales
libpsl nghttp2 gnutls libsecret libgcrypt libgpg-error libtasn1 p11-kit dbus
util-linux libselinux libsepol libffi sqlite
];
allDeps = cLibs ++ [ pkgs.gobject-introspection ];
in {
devShells.${system}.default = pkgs.mkShell {
buildInputs = [
# Haskell toolchain
nativeBuildInputs = [
pkgs.pkg-config
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
];
buildInputs = cLibs;
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
export PKG_CONFIG_PATH="${pkgs.lib.makeSearchPathOutput "dev" "lib/pkgconfig" allDeps}:${pkgs.lib.makeSearchPath "lib/pkgconfig" allDeps}:${pkgs.lib.makeSearchPath "share/pkgconfig" allDeps}"
# 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
export GI_TYPELIB_PATH="${pkgs.lib.makeSearchPathOutput "out" "lib/girepository-1.0" allDeps}:${pkgs.lib.makeSearchPath "lib/girepository-1.0" allDeps}"
# play around with these if having trouble with the display:
# Fontconfig
export FONTCONFIG_FILE="${pkgs.fontconfig.out}/etc/fonts/fonts.conf"
# # Force software rendering
# export WEBKIT_DISABLE_DMABUF_RENDERER=1
# export WEBKIT_DISABLE_COMPOSITING_MODE=1
# export GSK_RENDERER=cairo
# export LOCALE_ARCHIVE="${pkgs.glibcLocales}/lib/locale/locale-archive"
# export LC_ALL="en_US.UTF-8"
# Display fallback (Try Wayland first, then X11/Xwayland)
# export XDG_RUNTIME_DIR="''${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
# export WAYLAND_DISPLAY="''${WAYLAND_DISPLAY:-wayland-0}"
export GDK_BACKEND="wayland"
'';
};
};

34
manifest.scm Normal file
View file

@ -0,0 +1,34 @@
(use-modules (guix packages)
(guix download)
(guix build-system haskell)
(gnu packages haskell-xyz)
(gnu packages haskell-check)
(gnu packages pkg-config)
(gnu packages gtk)
(gnu packages webkit)
(gnu packages glib)
(gnu packages xorg))
(package
(name "svitak-dev-env")
(version "0.1")
(source #f) ; No source because this is just for a shell
(build-system haskell-build-system)
(inputs
(list ghc
cabal-install
pkg-config
;; The C libraries haskell-gi needs
gtk
webkitgtk
glib
at-spi2-core ; This replaces/provides the 'atk' pkg-config
pango
cairo
gdk-pixbuf
libx11
zlib))
(home-page #f)
(synopsis "Development environment for svitak")
(description "GHC, Cabal, and GTK4/WebKit dependencies.")
(license #f))