trying fixes
This commit is contained in:
parent
8538673cb8
commit
eca9ff8954
143
flake.nix
143
flake.nix
@ -3,9 +3,9 @@
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
# Source du code GIMP
|
||||
# Source du code GIMP
|
||||
gimp-source = {
|
||||
url = "github:GNOME/gimp/master";
|
||||
url = "git+https://gitlab.gnome.org/GNOME/gimp.git";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
@ -13,7 +13,7 @@
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
|
||||
|
||||
buildGimp3 = {
|
||||
version ? "3.0.0",
|
||||
enabledFeatures ? [],
|
||||
@ -21,8 +21,15 @@
|
||||
}: pkgs.stdenv.mkDerivation rec {
|
||||
pname = "gimp";
|
||||
inherit version;
|
||||
src = gimp-source;
|
||||
|
||||
# FIXED: Use fetchgit to properly fetch submodules
|
||||
src = pkgs.fetchgit {
|
||||
url = "https://gitlab.gnome.org/GNOME/gimp.git";
|
||||
rev = "master";
|
||||
fetchSubmodules = true;
|
||||
sha256 = pkgs.lib.fakeSha256;
|
||||
};
|
||||
|
||||
# FIXED: Added missing critical dependencies
|
||||
nativeBuildInputs = with pkgs; [
|
||||
pkg-config
|
||||
@ -42,9 +49,10 @@
|
||||
libtool
|
||||
git # Sometimes needed during build
|
||||
];
|
||||
|
||||
|
||||
buildInputs = with pkgs; [
|
||||
glib
|
||||
glib-networking # FIXED: Moved to more prominent position
|
||||
gtk3
|
||||
gdk-pixbuf
|
||||
pango
|
||||
@ -73,7 +81,6 @@
|
||||
libxml2
|
||||
json-glib
|
||||
libgudev
|
||||
glib-networking
|
||||
# iso-codes # Not available in nixpkgs under this name
|
||||
aalib
|
||||
openexr
|
||||
@ -86,89 +93,129 @@
|
||||
freetype
|
||||
fontconfig
|
||||
pixman
|
||||
|
||||
at-spi2-atk
|
||||
at-spi2-core
|
||||
atk
|
||||
# FIXED: Additional dependencies that might be needed
|
||||
libsoup_3 # Required for glib-networking functionality
|
||||
gsettings-desktop-schemas # For GSettings schemas
|
||||
hicolor-icon-theme # For proper icon handling
|
||||
# FIXED: Python dependencies for PyGObject
|
||||
python3Packages.pygobject3
|
||||
python3Packages.pycairo
|
||||
] ++ pkgs.lib.optionals (pkgs.stdenv.isLinux) [
|
||||
libunwind
|
||||
];
|
||||
|
||||
# More conservative meson configuration
|
||||
|
||||
# FIXED: Better meson configuration with explicit glib-networking support
|
||||
mesonFlags = [
|
||||
"-Dbuild-id=Nix"
|
||||
# "-Dgtk-doc=false"
|
||||
# "-Dg-ir-doc=false" # Disable introspection docs
|
||||
"-Dcheck-update=no" # Disable update checks
|
||||
# FIXED: Ensure glib-networking is properly detected
|
||||
"-Dglib-networking=enabled"
|
||||
# Explicitly disable problematic features that might cause build issues
|
||||
"-Dalsa=disabled"
|
||||
"-Dgudev=disabled"
|
||||
# "-Dwebkitgtk=disabled"
|
||||
"-Dgudev=disabled"
|
||||
] ++ pkgs.lib.optionals (enabledFeatures != [])
|
||||
(map (feature: "-D${feature}=enabled") enabledFeatures)
|
||||
++ pkgs.lib.optionals (disabledFeatures != [])
|
||||
(map (feature: "-D${feature}=disabled") disabledFeatures);
|
||||
|
||||
# Better build configuration
|
||||
|
||||
# FIXED: Better build configuration with proper environment setup
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
# FIXED: Set up environment for glib-networking detection
|
||||
export PKG_CONFIG_PATH="${pkgs.glib-networking}/lib/pkgconfig:${pkgs.glib}/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
export GIO_MODULE_DIR="${pkgs.glib-networking}/lib/gio/modules"
|
||||
|
||||
# FIXED: Set up Python environment for PyGObject
|
||||
export PYTHONPATH="${pkgs.python3Packages.pygobject3}/${pkgs.python3.sitePackages}:${pkgs.python3Packages.pycairo}/${pkgs.python3.sitePackages}:$PYTHONPATH"
|
||||
|
||||
# Ensure pkg-config can find all dependencies
|
||||
export PKG_CONFIG_PATH="${pkgs.lib.concatStringsSep ":" (map (p: "${p}/lib/pkgconfig") buildInputs)}:$PKG_CONFIG_PATH"
|
||||
|
||||
# Ensure we have a clean build directory
|
||||
meson setup build . $mesonFlags
|
||||
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
|
||||
# FIXED: Set environment variables for build
|
||||
export GIO_MODULE_DIR="${pkgs.glib-networking}/lib/gio/modules"
|
||||
export GSETTINGS_SCHEMA_DIR="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}/glib-2.0/schemas"
|
||||
|
||||
# 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
|
||||
|
||||
# FIXED: Set up GIO modules path for runtime
|
||||
mkdir -p $out/lib/gio/modules
|
||||
if [ -d "${pkgs.glib-networking}/lib/gio/modules" ]; then
|
||||
ln -sf "${pkgs.glib-networking}/lib/gio/modules"/* $out/lib/gio/modules/
|
||||
fi
|
||||
'';
|
||||
|
||||
# Add environment variables that might be needed
|
||||
|
||||
# FIXED: 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
|
||||
|
||||
# FIXED: Ensure glib-networking is available
|
||||
export GIO_MODULE_DIR="${pkgs.glib-networking}/lib/gio/modules"
|
||||
export GSETTINGS_SCHEMA_DIR="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}/glib-2.0/schemas"
|
||||
|
||||
# FIXED: Python environment for PyGObject
|
||||
export PYTHONPATH="${pkgs.python3Packages.pygobject3}/${pkgs.python3.sitePackages}:${pkgs.python3Packages.pycairo}/${pkgs.python3.sitePackages}:$PYTHONPATH"
|
||||
'';
|
||||
|
||||
|
||||
# FIXED: Add preFixup to handle GSettings and GIO modules
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix GIO_MODULE_DIR : "${pkgs.glib-networking}/lib/gio/modules"
|
||||
--prefix GSETTINGS_SCHEMA_DIR : "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}/glib-2.0/schemas"
|
||||
)
|
||||
'';
|
||||
|
||||
meta = with pkgs.lib; {
|
||||
description = "GNU Image Manipulation Program (GIMP) version 3.0";
|
||||
homepage = "https://www.gimp.org/";
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.unix;
|
||||
maintainers = [ ]; # Removed invalid maintainer reference
|
||||
broken = false; # Mark as not broken
|
||||
maintainers = [ ];
|
||||
broken = false;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
# Construction de base de GIMP 3
|
||||
gimp3-base = buildGimp3 {};
|
||||
|
||||
|
||||
mkGimp3WithPlugins = {
|
||||
plugins ? [],
|
||||
enabledFeatures ? [],
|
||||
@ -176,13 +223,14 @@
|
||||
}: pkgs.symlinkJoin {
|
||||
name = "gimp3-with-plugins";
|
||||
paths = [ (buildGimp3 { inherit enabledFeatures disabledFeatures; }) ] ++ plugins;
|
||||
|
||||
|
||||
postBuild = ''
|
||||
mkdir -p $out/bin
|
||||
cat > $out/bin/gimp << EOF
|
||||
#!/bin/sh
|
||||
export GIMP3_PLUGINDIR=\$HOME/.config/GIMP/3.0/plug-ins:${pkgs.lib.concatStringsSep ":" (map (p: "${p}/lib/gimp/3.0/plug-ins") plugins)}
|
||||
export GIMP3_SCRIPTDIR=\$HOME/.config/GIMP/3.0/scripts:${pkgs.lib.concatStringsSep ":" (map (p: "${p}/lib/gimp/3.0/scripts") plugins)}
|
||||
export GIO_MODULE_DIR="${pkgs.glib-networking}/lib/gio/modules"
|
||||
exec ${gimp3-base}/bin/gimp "\$@"
|
||||
EOF
|
||||
chmod +x $out/bin/gimp
|
||||
@ -194,51 +242,44 @@
|
||||
# Ultra-minimal version for testing
|
||||
gimp3-test = buildGimp3 {
|
||||
disabledFeatures = [
|
||||
#"python"
|
||||
"javascript"
|
||||
#"lua"
|
||||
#"webkitgtk"
|
||||
"javascript"
|
||||
"alsa"
|
||||
"gudev"
|
||||
#"check-update"
|
||||
#"gtk-doc"
|
||||
#"g-ir-doc"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
gimp3 = gimp3-base;
|
||||
|
||||
|
||||
# Simplified version with fewer potential build issues
|
||||
gimp3-minimal = buildGimp3 {
|
||||
disabledFeatures = [
|
||||
"python"
|
||||
"javascript"
|
||||
"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
|
||||
|
||||
default = gimp3-test;
|
||||
};
|
||||
|
||||
|
||||
lib = {
|
||||
inherit buildGimp3 mkGimp3WithPlugins;
|
||||
};
|
||||
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user