nixpkgs/pkgs/applications/misc/tomato-c/default.nix
Randy Eckenrode 3e678d5d9c
tomato-c: fix build on Darwin
- Add patch for missing function declarations;
- Define `_ISOC99_SOURCE`, which is needed for `snprintf` on Darwin; and
- Make sure TOMATONOISE points to `$out/tomatonoise` not
  `/usr/local/bin/tomatonoise`.
2024-03-23 17:31:10 -04:00

83 lines
1.9 KiB
Nix

{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, libnotify
, makeWrapper
, mpv
, ncurses
, pkg-config
}:
stdenv.mkDerivation (finalAttrs: {
pname = "tomato-c";
version = "unstable-2023-08-21";
src = fetchFromGitHub {
owner = "gabrielzschmitz";
repo = "Tomato.C";
rev = "6e43e85aa15f3d96811311a3950eba8ce9715634";
hash = "sha256-RpKkQ7xhM2XqfZdXra0ju0cTBL3Al9NMVQ/oleFydDs=";
};
patches = [
# Adds missing function declarations required by newer versions of clang.
(fetchpatch {
url = "https://github.com/gabrielzschmitz/Tomato.C/commit/ad6d4c385ae39d655a716850653cd92431c1f31e.patch";
hash = "sha256-3ormv59Ce4rOmeyL30QET3CCUIOrRYMquub+eIQsMW8=";
})
];
postPatch = ''
substituteInPlace Makefile \
--replace-fail "sudo " ""
# Need to define _ISOC99_SOURCE to use `snprintf` on Darwin
substituteInPlace config.mk \
--replace-fail -D_POSIX_C_SOURCE -D_ISOC99_SOURCE
substituteInPlace notify.c \
--replace-fail "/usr/local" "${placeholder "out"}"
substituteInPlace util.c \
--replace-fail "/usr/local" "${placeholder "out"}"
substituteInPlace tomato.desktop \
--replace-fail "/usr/local" "${placeholder "out"}"
'';
nativeBuildInputs = [
makeWrapper
pkg-config
];
buildInputs = [
libnotify
mpv
ncurses
];
makeFlags = [
"PREFIX=${placeholder "out"}"
];
installFlags = [
"CPPFLAGS=$NIX_CFLAGS_COMPILE"
"LDFLAGS=$NIX_LDFLAGS"
];
postFixup = ''
for file in $out/bin/*; do
wrapProgram $file \
--prefix PATH : ${lib.makeBinPath [ libnotify mpv ]}
done
'';
strictDeps = true;
meta = {
homepage = "https://github.com/gabrielzschmitz/Tomato.C";
description = " A pomodoro timer written in pure C";
license = with lib.licenses; [ gpl3Plus ];
maintainers = with lib.maintainers; [ AndersonTorres ];
mainProgram = "tomato";
platforms = lib.platforms.unix;
};
})