No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
m4rti b4d32037e0
All checks were successful
Check / check (push) Successful in 56s
read
2026-09-01 20:39:39 -04:00
.forgejo/workflows Package PhotoGIMP as a standalone flake 2026-09-01 19:01:15 +02:00
.gitignore Package PhotoGIMP as a standalone flake 2026-09-01 19:01:15 +02:00
alejandra.toml Package PhotoGIMP as a standalone flake 2026-09-01 19:01:15 +02:00
flake.lock Export a home-manager module instead of a package 2026-09-01 20:39:39 -04:00
flake.nix Export a home-manager module instead of a package 2026-09-01 20:39:39 -04:00
module.nix treesiiter 2026-09-01 20:39:39 -04:00
package.nix Move the derivation to the repo root 2026-09-01 19:05:38 +02:00
README.md read 2026-09-01 20:39:39 -04:00

photogimp

A Nix flake for PhotoGIMP, the GIMP profile that rearranges the interface and keybindings to match Adobe Photoshop. All credit for PhotoGIMP itself goes to its authors; this repo is packaging only.

Usage

{
	inputs.photogimp.url = "git+https://git.cumsek.com/flakes/photogimp";
}

Import the home-manager module and turn it on:

{
	imports = [inputs.photogimp.homeModules.default];
	programs.photogimp.enable = true;
}

That installs GIMP and seeds its profile. Nothing else to wire up.

Options

Option Default Description
programs.photogimp.enable false Install GIMP and seed the PhotoGIMP profile.
programs.photogimp.package pkgs.gimp The GIMP to install. Set it to pin a different version — the profile directory follows whatever this resolves to.

Why a module and not a package

There is no packages output, on purpose. PhotoGIMP is not a program, it is a tree of config files, and GIMP only reads them from a writable $XDG_CONFIG_HOME/GIMP/<major.minor>. A package in home.packages would land in the profile under share/photogimp, where GIMP would never look at it.

Symlinking the tree in with xdg.configFile does not work either: GIMP rewrites gimprc, sessionrc, contextrc, toolrc and tool-options/* every time it exits, and those symlinks point into the read-only store. Pointing GIMP3_DIRECTORY at the store path fails for the same reason.

So the profile has to be copied into a directory GIMP owns, and copied only once — re-copying on every rebuild would silently throw away every preference and window layout change made since the last one. The module's activation script does that, guarded by a marker file. The marker names the PhotoGIMP version and sits in the GIMP series directory, so either bump re-seeds; delete ~/.config/GIMP/3.2/.photogimp-3.1 to force a reset.

Updating

Bump version in package.nix to the new upstream tag, blank the hash, and let the build report the correct one.

Checks

nix flake check -L

Evaluates the module in a throwaway home-manager configuration, builds the profile and runs alejandra, deadnix and statix. CI runs the same command and nothing else.

Licence

The packaging is trivial; PhotoGIMP itself is GPL-3.0-or-later, as recorded in meta.license.