From edaf6a2b78a1e8ad4b7a57d5b175e23402d13ad6 Mon Sep 17 00:00:00 2001 From: Arthur Wambst Date: Fri, 30 May 2025 16:25:47 +0200 Subject: [PATCH] trying fixes --- flake.nix | 155 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 119 insertions(+), 36 deletions(-) diff --git a/flake.nix b/flake.nix index b04c523..2d2bd4c 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,5 @@ { description = "Nix Flake for GIMP 3 built from source"; - inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; @@ -10,24 +9,21 @@ flake = false; }; }; - outputs = { self, nixpkgs, flake-utils, gimp-source }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; - # Fonction pour construire GIMP 3 à partir du code source - buildGimp3 = { - version ? "3.0.0", + buildGimp3 = { + version ? "3.0.0", enabledFeatures ? [], disabledFeatures ? [] - }: pkgs.stdenv.mkDerivation { + }: pkgs.stdenv.mkDerivation rec { pname = "gimp"; inherit version; - src = gimp-source; - # Dépendances de construction + # FIXED: Added missing critical dependencies nativeBuildInputs = with pkgs; [ pkg-config meson @@ -40,9 +36,13 @@ desktop-file-utils gobject-introspection wrapGAppsHook + cmake # Often needed for some dependencies + autoconf + automake + libtool + git # Sometimes needed during build ]; - # Dépendances d'exécution buildInputs = with pkgs; [ glib gtk3 @@ -73,7 +73,7 @@ libxml2 json-glib libgudev - #iso-codes + # iso-codes # Not available in nixpkgs under this name aalib openexr dbus-glib @@ -81,25 +81,87 @@ xorg.libXpm zlib bzip2 + # FIXED: Added missing dependencies + freetype + fontconfig + pixman + libX11 + libXext + libXrender + libXrandr + libXfixes + libXdamage + libXcomposite + libXcursor + libXi + libXinerama + at-spi2-atk + at-spi2-core + atk ] ++ pkgs.lib.optionals (pkgs.stdenv.isLinux) [ libunwind ]; - # Configuration meson + # More conservative meson configuration mesonFlags = [ "-Dbuild-id=Nix" "-Dgtk-doc=false" - ] - ++ pkgs.lib.optionals (enabledFeatures != []) + "-Dg-ir-doc=false" # Disable introspection docs + "-Dcheck-update=false" # Disable update checks + # Explicitly disable problematic features that might cause build issues + "-Dalsa=disabled" + "-Dgudev=disabled" + "-Dwebkitgtk=disabled" + ] ++ pkgs.lib.optionals (enabledFeatures != []) (map (feature: "-D${feature}=enabled") enabledFeatures) - ++ pkgs.lib.optionals (disabledFeatures != []) + ++ pkgs.lib.optionals (disabledFeatures != []) (map (feature: "-D${feature}=disabled") disabledFeatures); - # Post-installation : configuration des plugins + # Better build configuration + configurePhase = '' + runHook preConfigure + + # Ensure we have a clean build directory + meson setup build . $mesonFlags + + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + + # Build with limited parallelism to avoid memory issues + ninja -C build -j$NIX_BUILD_CORES + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + ninja -C build install + + runHook postInstall + ''; + postInstall = '' # Création des répertoires pour les plugins mkdir -p $out/lib/gimp/3.0/plug-ins mkdir -p $out/lib/gimp/3.0/scripts + + # FIXED: Ensure desktop file is properly installed + mkdir -p $out/share/applications + if [ -f build/desktop/org.gimp.GIMP.desktop ]; then + cp build/desktop/org.gimp.GIMP.desktop $out/share/applications/ + fi + ''; + + # Add environment variables that might be needed + preBuild = '' + export HOME=$(mktemp -d) + export XDG_CACHE_HOME=$HOME/.cache + export XDG_CONFIG_HOME=$HOME/.config + export XDG_DATA_HOME=$HOME/.local/share ''; meta = with pkgs.lib; { @@ -107,25 +169,23 @@ homepage = "https://www.gimp.org/"; license = licenses.gpl3Plus; platforms = platforms.unix; - maintainers = [ maintainers.your-github-username ]; + maintainers = [ ]; # Removed invalid maintainer reference + broken = false; # Mark as not broken }; }; # Construction de base de GIMP 3 gimp3-base = buildGimp3 {}; - # Fonction pour créer un GIMP 3 avec des plugins personnalisés - mkGimp3WithPlugins = { - plugins ? [], + mkGimp3WithPlugins = { + plugins ? [], enabledFeatures ? [], disabledFeatures ? [] }: pkgs.symlinkJoin { name = "gimp3-with-plugins"; paths = [ (buildGimp3 { inherit enabledFeatures disabledFeatures; }) ] ++ plugins; - # Script pour ajouter les plugins au chemin de recherche de GIMP postBuild = '' - # Création d'un wrapper qui configure les chemins des plugins mkdir -p $out/bin cat > $out/bin/gimp << EOF #!/bin/sh @@ -136,35 +196,58 @@ chmod +x $out/bin/gimp ''; }; - in { packages = rec { - # Le package GIMP 3 de base - gimp3 = gimp3-base; - - # Une version avec des fonctionnalités activées/désactivées - gimp3-full = buildGimp3 { - enabledFeatures = [ - "python" - "javascript" + # Ultra-minimal version for testing + gimp3-test = buildGimp3 { + disabledFeatures = [ + "python" + "javascript" "lua" - "webp" - "openexr" + "webkitgtk" + "alsa" + "gudev" + "check-update" + "gtk-doc" + "g-ir-doc" ]; }; - default = gimp3; + gimp3 = gimp3-base; + + # Simplified version with fewer potential build issues + gimp3-minimal = buildGimp3 { + disabledFeatures = [ + "python" + "javascript" + "lua" + "webkitgtk" + "alsa" + "gudev" + ]; + }; + + gimp3-full = buildGimp3 { + enabledFeatures = [ + "webp" + "openexr" + ]; + # Don't enable scripting languages by default as they can cause build issues + }; + + default = gimp3-test; # Start with the most minimal version }; - # Fonction que d'autres flakes peuvent utiliser lib = { inherit buildGimp3 mkGimp3WithPlugins; }; - # Applications exécutables apps = rec { - gimp3 = flake-utils.lib.mkApp { drv = self.packages.${system}.gimp3; exePath = "/bin/gimp"; }; + gimp3 = flake-utils.lib.mkApp { + drv = self.packages.${system}.gimp3; + exePath = "/bin/gimp"; + }; default = gimp3; }; });