trying fixes

This commit is contained in:
Arthur Wambst 2025-05-30 16:25:47 +02:00
parent 6981831cc7
commit edaf6a2b78

155
flake.nix
View File

@ -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;
};
});