From a7305904c7167b9e356f056400521f0d8e145c1e Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Thu, 14 Aug 2025 09:51:28 -0500 Subject: [PATCH] overlays for imgui --- default.nix | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 820fbc42..ef577db0 100644 --- a/default.nix +++ b/default.nix @@ -35,6 +35,28 @@ let };}); }; + # overlay to fix libconfig (distant dependency of SDL2) + libconfig-overlay = self: super: { + libconfig = super.libconfig.overrideAttrs (old: { + # 1.7.3. no longer at https://hyperrealm.github.io/libconfig/dist/libconfig-1.7.3.tar.gz + # (1.8.1 advertised, so perhaps has expired) + # + src = self.fetchurl { + url = "https://github.com/hyperrealm/libconfig/releases/download/v${super.libconfig.version}/libconfig-${super.libconfig.version}.tar.gz"; + sha256 = "sha256-VFFm1srAN3RDgdHpzFpUBQlOe/rRakEWmbz/QLuzHuc="; + };}); + }; + + pipewire-overlay = self: super: { + pipewire = super.pipewire.override { + # ffado 2.4.8 won't build from source. + # needs a patch from a defunct server. + # provides sound for firewire devices, which are uncommon-to-rare + # these days + ffadoSupport = false; + }; + }; + ccache-overlay = self: super: { ccache = super.ccache.overrideAttrs (old: { src = self.fetchFromGitHub { @@ -46,6 +68,16 @@ let };}); }; +# # nixGL not present in my nixpkgs snapshot +# nixgl-overlay = self: super: { +# nixGL = import (self.fetchFromGitHub { +# owner = "nix-community"; +# repo = "nixGL"; +# rev = "main"; +# sha256 = "sha256-Ob/HuUhANoDs+nvYqyTKrkcPXf4ZgXoqMTQoCK0RFgQ="; +# }) {pkgs = self; }; +# }; + # Problem: builds *everything* with llvm18 toolchain, exposes too many compiler nits llvm-overlay = self: super: { # use 'super' when you want to override the terms of a package. @@ -145,7 +177,10 @@ let pkgs = import nixpkgs-path { overlays = [ qrencode-overlay + libconfig-overlay + pipewire-overlay ccache-overlay +# nixgl-overlay # llvm-overlay xo-overlay ]; @@ -163,6 +198,7 @@ pkgs.mkShell { buildInputs = [ pkgs.gsettings-desktop-schemas pkgs.emacs + pkgs.nushell pkgs.which pkgs.man pkgs.man-pages @@ -170,7 +206,6 @@ pkgs.mkShell { pkgs.nix-tree # needs GHC... pkgs.ripgrep pkgs.openssh - #pkgs.chromium pkgs.notmuch pkgs.emacsPackages.notmuch pkgs.inconsolata-lgc @@ -211,12 +246,55 @@ pkgs.mkShell { pkgs.cmake pkgs.pkg-config + + pkgs.emscripten + pkgs.imgui + pkgs.SDL2.dev + pkgs.glew +# pkgs.nixGL.nixGLDefault +# pkgs.nixGL.nixGLNvidia +# pkgs.nixGL.nixGLMesa + pkgs.libGL + + # fonts for imgui + pkgs.gucharmap + pkgs.fontconfig + pkgs.noto-fonts + #pkgs.noto-fonts-lgc # lgc for latin,greek,cyrillic (but doesn't exist in pinned nixpkgs) + #pkgs.noto-fonts-cjk # cjk for chinese,japanese,korean + pkgs.noto-fonts-emoji + pkgs.dejavu_fonts + + pkgs.xorg.xclock ]; shellHook = '' # override SOUCE_DATE_EPOCH to current time (otherwise will get 1980) export SOURCE_DATE_EPOCH=$(date +%s) + export CXENV=$CXENV:xo + + # software-only pipeline + #export SDL_VIDEODRIVER=x11 + #export LIBGL_ALWAYS_SOFTWARE=1 + + #export SDL_VIDEO_X11_FORCE_EGL=0 + export SDL_VIDEO_X11_VISUALID=0x023 + + #export LIBGL_ALWAYS_INDIRECT=1 + #export WSLG_FORCE_EGL=1 + #export GLFW_USE_EGL=1 + + # just for info + export mesa_drivers=${pkgs.mesa.drivers} + + export FONTCONFIG_PATH=${pkgs.fontconfig.out}/etc/fonts + export NOTO_FONTS_PATH=${pkgs.noto-fonts}/share/fonts + export DEJAVU_FONTS_PATH=${pkgs.dejavu_fonts}/share/fonts + + echo "FONTCONFIG_PATH=$FONTCONFIG_PATH" + echo "NOTO_FONTS_PATH=$NOTO_FONTS_PATH" + echo "xo development environment loaded!" ''; }