55 lines
1.4 KiB
Nix
55 lines
1.4 KiB
Nix
{ lib, ... }:
|
|
|
|
let
|
|
feed = with lib; types.submodule ({ config, ... }: {
|
|
options = {
|
|
freq = mkOption {
|
|
type = types.enum [ "hourly" "daily" "weekly" "infrequent" ];
|
|
default = "infrequent";
|
|
};
|
|
cat = mkOption {
|
|
type = types.enum [ "art" "humor" "pol" "rat" "tech" "uncat" ];
|
|
default = "uncat";
|
|
};
|
|
format = mkOption {
|
|
type = types.enum [ "text" "image" "podcast" "video" ];
|
|
default = "text";
|
|
};
|
|
title = mkOption {
|
|
type = types.nullOr types.str;
|
|
default = null;
|
|
};
|
|
url = mkOption {
|
|
type = types.str;
|
|
description = ''
|
|
url to a RSS feed
|
|
'';
|
|
};
|
|
substack = mkOption {
|
|
type = types.nullOr types.str;
|
|
default = null;
|
|
description = ''
|
|
if the feed is a substack domain, just enter the subdomain here and the url/format field can be populated automatically
|
|
'';
|
|
};
|
|
};
|
|
config = lib.mkIf (config.substack != null) {
|
|
url = "https://${config.substack}.substack.com/feed";
|
|
format = "text";
|
|
};
|
|
});
|
|
in
|
|
{
|
|
# we don't explicitly generate anything from the feeds here.
|
|
# instead, config.sane.feeds is used by a variety of services at their definition site.
|
|
options = with lib; {
|
|
sane.feeds = mkOption {
|
|
type = types.listOf feed;
|
|
default = [];
|
|
description = ''
|
|
RSS feeds indexed by a human-readable name.
|
|
'';
|
|
};
|
|
};
|
|
}
|