summaryrefslogtreecommitdiff
path: root/wrappers
diff options
context:
space:
mode:
authorIsabella Bastaja <isabella@sorre.xyz>2026-03-22 21:49:41 +0100
committerIsabella Bastaja <isabella@sorre.xyz>2026-03-22 22:26:56 +0100
commit50e2588f76ef70c8ea14df13e313618c00d15dcb (patch)
tree429c8e853e03932362d70662e65800f36d156658 /wrappers
parent4cccd2c27f3108f7fb8aa53b2406b11dd83e31ba (diff)
Add wrapper-manger, wrap gallery-dl
Diffstat (limited to 'wrappers')
-rw-r--r--wrappers/gallery-dl/config.nix67
-rw-r--r--wrappers/gallery-dl/default.nix19
2 files changed, 86 insertions, 0 deletions
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
+ ];
+ };
+}