nix-files/pkgs/gpodder-configured/default.nix

53 lines
1.5 KiB
Nix
Raw Normal View History

{ stdenv
, gnome-feeds
, gpodder
, makeWrapper
, python3
, symlinkJoin
2022-09-23 11:14:46 +00:00
}:
let
pyEnv = python3.withPackages (_ps: [ gnome-feeds.listparser ]);
remove-extra = stdenv.mkDerivation {
pname = "gpodder-remove-extra";
version = "0.1.0";
src = ./.;
patchPhase = ''
substituteInPlace ./remove_extra.py \
--replace "#!/usr/bin/env nix-shell" "#!${pyEnv.interpreter}"
'';
installPhase = ''
mkdir -p $out/bin
mv remove_extra.py $out/bin/gpodder-remove-extra
'';
};
in
2023-01-13 15:09:43 +00:00
# we use a symlinkJoin so that we can inherit the .desktop and icon files from the original gPodder
(symlinkJoin {
2022-09-23 11:14:46 +00:00
name = "gpodder-configured";
paths = [ gpodder remove-extra ];
nativeBuildInputs = [ makeWrapper ];
2022-09-23 11:14:46 +00:00
# gpodder keeps all its feeds in a sqlite3 database.
# we can configure the feeds externally by wrapping gpodder and just instructing it to import
# a feedlist every time we run it.
2023-01-13 15:09:43 +00:00
# repeat imports are deduplicated by url, even when offline.
2022-09-23 11:14:46 +00:00
postBuild = ''
makeWrapper $out/bin/gpodder $out/bin/gpodder-configured \
--run "$out/bin/gpodder-remove-extra ~/.config/gpodderFeeds.opml" \
--run "$out/bin/gpo import ~/.config/gpodderFeeds.opml" \
2022-09-23 11:14:46 +00:00
# fix up the .desktop file to invoke our wrapped application
orig_desktop=$(readlink $out/share/applications/gpodder.desktop)
unlink $out/share/applications/gpodder.desktop
sed "s:Exec=.*:Exec=$out/bin/gpodder-configured:" $orig_desktop > $out/share/applications/gpodder.desktop
'';
passthru = {
remove-extra = remove-extra;
};
2022-09-23 11:14:46 +00:00
})