From 50e2588f76ef70c8ea14df13e313618c00d15dcb Mon Sep 17 00:00:00 2001 From: Isabella Bastaja Date: Sun, 22 Mar 2026 21:49:41 +0100 Subject: Add wrapper-manger, wrap gallery-dl --- wrappers/gallery-dl/config.nix | 67 +++++++++++++++++++++++++++++++++++++++++ wrappers/gallery-dl/default.nix | 19 ++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 wrappers/gallery-dl/config.nix create mode 100644 wrappers/gallery-dl/default.nix (limited to 'wrappers/gallery-dl') diff --git a/wrappers/gallery-dl/config.nix b/wrappers/gallery-dl/config.nix new file mode 100644 index 0000000..649eeda --- /dev/null +++ b/wrappers/gallery-dl/config.nix @@ -0,0 +1,67 @@ +{ + postprocessors = [ + { + name = "metadata"; + mode = "json"; + whitelist = [ + "danbooru" + "moebooru" + "gelbooru" + "sankaku" + "nhentai" + "rule34" + ]; + } + { + name = "zip"; + compression = "store"; + extension = "cbz"; + filter = "extension not in ('zip', 'rar')"; + whitelist = [ + "nhentai" + "mangadex" + ]; + } + ]; + + Danbooru.metadata = true; + + reddit = { + archive-format = "s_{subreddit}{filename}"; + directory = { + "locals().get('is_gallery')" = [ + "Reddit" + "S" + "{subreddit!C}" + "{title[:120]!t:?/_/R /_/}{id}" + ]; + "" = [ + "Reddit" + "S" + "{subreddit!C}" + ]; + }; + + filename = { + "locals().get('is_gallery')" = "{title[:120]!t:?/_/R /_/}{id}{num:?_//>02}.{extension}"; + "" = "{title[:120]!t:?/_/R /_/}{id}.{extension}"; + }; + }; + + artstation.external = true; # Try to follow external URLs of embedded players. + + ao3.formats = [ + "pdf" + "epub" + "html" + ]; + + bluesky = { + include = [ "all" ]; # List of subcategories to include when processing a **user profile**. + metadata = [ + "facets" + "user" + ]; + quoted = true; # Fetch media from quoted posts. + }; +} diff --git a/wrappers/gallery-dl/default.nix b/wrappers/gallery-dl/default.nix new file mode 100644 index 0000000..1c640f8 --- /dev/null +++ b/wrappers/gallery-dl/default.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: +let + jsonFormat = pkgs.formats.json { }; + config = (import ./config.nix); + jsonConfig = jsonFormat.generate "gallery-dl-config" config; +in +{ + wrappers.gallery-dl = { + basePackage = pkgs.gallery-dl; + prependFlags = [ + "--config" + jsonConfig + "--option" + # NOTE: escape the $ here because makeCWrapper otherwise expands it, + # evaluating to `/homeless-shelter` + "base-directory=\\$HOME/Pictures/gallery-dl" # TODO: maybe mandate XDG + ]; + }; +} -- cgit v1.3.1