all repos

rss-tools @ 01ec2afdf1caef7524fdf882dcb090fc67961aa2

get rss feed from sources that(i need and) dont provide one

rss-tools/flake.nix (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
add flake, 1 month ago
1
{
2
  description = "rss-tools";
3
  inputs.nixpkgs.url = "github:NixOS/nixpkgs";
4
  outputs = { self, nixpkgs }:
5
    let
6
      systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
7
      forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
8
    in {
9
      packages = forAllSystems (pkgs:
10
        let version = self.rev or "dev";
11
        in {
12
          default = self.packages.${pkgs.stdenv.hostPlatform.system}.rss-tools;
13
          rss-tools = pkgs.buildGo126Module {
14
            pname = "rss-tools";
15
            version = version;
16
            src = ./.;
17
            vendorHash = "sha256-HxCJvHCIve83OMvInOZtgcveC9uVZ5YAZAi5cL26akI=";
18
            ldflags = [ "-s" "-w" ];
19
            meta = with pkgs.lib; { license = licenses.mit; };
20
          };
21
        }
22
      );
23
24
      nixosModules.default = { config, lib, pkgs, ... }:
25
        with lib;
26
        let cfg = config.services.rss-tools;
27
        in {
28
          options.services.rss-tools = {
29
            enable = mkEnableOption "rss-tools service";
30
31
            package = mkOption {
32
              type = types.package;
33
              default = self.packages.${pkgs.stdenv.hostPlatform.system}.rss-tools;
34
              defaultText = literalExpression "self.packages.\${pkgs.stdenv.hostPlatform.system}.rss-tools";
35
              description = "rss-tools package to run.";
36
            };
37
38
            settingsFile = mkOption {
39
              type = types.nullOr types.str;
40
              default = null;
41
              example = "/run/secrets/rss-tools.json";
42
              description = "Path to JSON config file passed to --config.";
43
            };
44
45
            dbPath = mkOption {
46
              type = types.str;
47
              default = "%S/rss-tools/db";
48
              example = "/var/lib/rss-tools/rss.db";
49
              description = "Path to local bbolt DB file passed to --db.";
50
            };
51
          };
52
53
          config = mkIf cfg.enable {
54
            assertions = [
55
              {
56
                assertion = cfg.settingsFile != null;
57
                message = "services.rss-tools.settingsFile must be set";
58
              }
59
            ];
60
61
            systemd.services.rss-tools = {
62
              description = "rss-tools service";
63
              wantedBy = [ "multi-user.target" ];
64
              after = [ "network.target" ];
65
              serviceConfig = {
66
                Type = "simple";
67
                DynamicUser = true;
68
                StateDirectory = "rss-tools";
69
                WorkingDirectory = "%S/rss-tools";
70
                ExecStart = "${cfg.package}/bin/rss-tools --config ${cfg.settingsFile} --db ${cfg.dbPath}";
71
                Restart = "on-failure";
72
                RestartSec = "5s";
73
                NoNewPrivileges = true;
74
                PrivateTmp = true;
75
                ProtectSystem = "strict";
76
                ProtectHome = true;
77
                ReadWritePaths = [ (builtins.dirOf cfg.dbPath) ];
78
              };
79
            };
80
          };
81
        };
82
    };
83
}