diff --git a/TODO.md b/TODO.md
index f3d6d8a4..2d131928 100644
--- a/TODO.md
+++ b/TODO.md
@@ -130,4 +130,3 @@
- migrate MAME cabinet to nix
- boot it from PXE from servo?
- enable IPv6
-- package lemonade lemmy app:
diff --git a/pkgs/additional/lemonade/default.nix b/pkgs/additional/lemonade/default.nix
new file mode 100644
index 00000000..7cb77564
--- /dev/null
+++ b/pkgs/additional/lemonade/default.nix
@@ -0,0 +1,69 @@
+# XXX: lemonade is ALPHA. literally unusable right now. it loads the top communities from lemmy.ml, but interacting with them in any form is completely unimplemented.
+# my development fork:
+# difference from tip:
+# - flake.nix/default.nix
+# - runs outside flatpak
+# - more logging
+{ lib, stdenv
+, desktop-file-utils
+, fetchFromGitHub
+, gitUpdater
+, gobject-introspection
+, gtk4
+, libadwaita
+, meson
+, ninja
+, python3
+, wrapGAppsHook4
+}:
+
+let
+ pyEnv = python3.withPackages (ps: with ps; [
+ pygobject3
+ requests
+ ]);
+in
+stdenv.mkDerivation (final: with final; {
+ pname = "lemonade";
+ version = "2023.10.29";
+
+ src = fetchFromGitHub {
+ owner = "mdwalters";
+ repo = "lemonade";
+ rev = version;
+ hash = "sha256-E5NDkyChaH/iQSWxWuwNWQQtWELF9tPLMWiJB7j4F4Y=";
+ };
+
+ postPatch = ''
+ # see:
+ substituteInPlace src/main.py \
+ --replace \
+ "{os.environ['XDG_RUNTIME_DIR']}/app/ml.mdwalters.Lemonade/cache" \
+ "{os.environ['HOME']}/.cache/ml.mdwalters.Lemonade" \
+ --replace \
+ 'os.path.join(f"{os.environ['"'"'XDG_RUNTIME_DIR'"'"']}/app/ml.mdwalters.Lemonade", "cache")' \
+ 'os.path.join(f"{os.environ['"'"'HOME'"'"']}/.cache", "ml.mdwalters.Lemonade")'
+ '';
+
+ nativeBuildInputs = [
+ desktop-file-utils
+ gobject-introspection
+ meson
+ ninja
+ wrapGAppsHook4
+ ];
+ buildInputs = [
+ gtk4
+ libadwaita
+ pyEnv
+ ];
+
+ passthru.updateScript = gitUpdater { };
+
+ meta = with lib; {
+ description = "🍋 Follow discussions on Lemmy";
+ homepage = "https://github.com/mdwalters/lemonade";
+ license = licenses.gpl3Plus;
+ maintainers = with maintainers; [ colinsane ];
+ };
+})
diff --git a/pkgs/default.nix b/pkgs/default.nix
index cf1f7ee7..8ac99377 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -43,6 +43,7 @@ let
landlock-sandboxer = callPackage ./additional/landlock-sandboxer { };
ldd-aarch64 = callPackage ./additional/ldd-aarch64 { };
lemoa = callPackage ./additional/lemoa { };
+ lemmy-lemonade = callPackage ./additional/lemonade { }; # XXX: nixpkgs already has a `lemonade` pkg
lightdm-mobile-greeter = callPackage ./additional/lightdm-mobile-greeter { };
linux-firmware-megous = callPackage ./additional/linux-firmware-megous { };
# XXX: eval error: need to port past linux_6_4