{ description = "Nix Flake for GIMP 3.0.4 built from source"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; gimp-source = { url = "git+https://gitlab.gnome.org/GNOME/gimp"; flake = false; }; gimp-data = { url = "git+https://gitlab.gnome.org/GNOME/gimp-data"; flake = false; }; }; outputs = { self, nixpkgs, flake-utils, gimp-source, gimp-data, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; in { packages.default = pkgs.stdenv.mkDerivation { pname = "gimp"; version = "3.0.4"; src = pkgs.runCommand "merged-source" {} '' mkdir -p $out # Copy first repo (main source) cp -r --no-preserve=mode ${gimp-source}/* $out/ mkdir -p $out/gimp-data cp -r --no-preserve=mode ${gimp-data}/* $out/gimp-data/ chmod -R +r $out chmod -R +w $out ''; nativeBuildInputs = with pkgs; [ # Build tools git meson ninja pkg-config gettext python3Packages.pygobject3 python3 ]; buildInputs = with pkgs; [ #3 babl gegl #4 gtk3 glib gdk-pixbuf pango #5 cairo #6 #?? harfbuzz #7 zlib libzip #?? #8 gexiv2 #9 libpng libjpeg libtiff librsvg lcms #10 libmypaint #11 mypaint-brushes1 #12 libsoup_3 python3Packages.pycairo glib-networking #13 openjpeg libmng libwmf #14 libheif libde265 libaom openjpeg #15 #?? #21 (mandatory packages) appstream-glib atk fontconfig freetype gvfs json-glib libarchive libpng librsvg libtiff poppler poppler_data perl # require only at build, not in install readme xorg.libXmu xorg.libXpm libxslt shared-mime-info ]; configurePhase = '' export HOME=$TMPDIR/home mkdir -p $HOME/.local/share mkdir -p $HOME/.config 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" export FONTCONFIG_CACHE="$TMPDIR/fontconfig-cache" export XDG_DATA_HOME=$HOME/.local/share export XDG_CONFIG_HOME=$HOME/.config export XDG_CACHE_HOME=$TMPDIR/cache mkdir -p "$XDG_CACHE_HOME/fontconfig" mkdir -p "$FONTCONFIG_CACHE" export GIMP_TESTING=1 export G_MESSAGES_DEBUG="" export DISPLAY="" export WAYLAND_DISPLAY="" export XDG_RUNTIME_DIR="" # Fontconfig setup export FONTCONFIG_FILE=${pkgs.fontconfig.out}/etc/fonts/fonts.conf git init git remote add origin 'https://gitlab.gnome.org/GNOME/gimp' #git submodule update --init meson _build \ --prefix=$out \ --buildtype=release \ -Dgi-docgen=disabled \ -Dlua=false # Fxing these fkingujjckjvnbnsdsc shebangs <3 claude.ai thx for help patchShebangs . || true patchShebangs _build/ || true find . -type f -exec grep -l "#!/usr/bin/env" {} \; 2>/dev/null | while read file; do echo "Fixing shebang in: $file" sed -i 's|#!/usr/bin/env python3|#!${pkgs.python3}/bin/python3|g' "$file" || true sed -i 's|#!/usr/bin/env python|#!${pkgs.python3}/bin/python|g' "$file" || true sed -i 's|#!/usr/bin/env bash|#!${pkgs.bash}/bin/bash|g' "$file" || true sed -i 's|#!/usr/bin/env sh|#!${pkgs.bash}/bin/sh|g' "$file" || true sed -i 's|#!/usr/bin/env perl|#!${pkgs.perl}/bin/perl|g' "$file" || true done ''; buildPhase = '' export LD_LIBRARY_PATH="$PWD/_build/libgimp:$PWD/_build/libgimpbase:$PWD/_build/libgimpcolor:$PWD/_build/libgimpconfig:$PWD/_build/libgimpmath:$PWD/_build/libgimpmodule:$PWD/_build/libgimpthumb:$PWD/_build/libgimpwidgets:$LD_LIBRARY_PATH" ninja -C _build -v ''; installPhase = '' #mkdir -p $out/bin echo "Installing GIMP..." ninja -C _build install # Ensure the binary is executable chmod +x $out/bin/gimp-* || true # Install built files # make install PREFIX=$out # cp executable $out/bin/ ''; }; } ); }