all repos

rss-tools @ 7235086123c8b37c0f4db89fb5821d89d0e29094

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
fix flake, hopefully, 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
            user = mkOption {
32
              type = types.str;
33
              default = "rss-tools";
34
              description = "User account under which rss-tools runs.";
35
            };
36
37
            group = mkOption {
38
              type = types.str;
39
              default = "rss-tools";
40
              description = "Group under which rss-tools runs.";
41
            };
42
43
            package = mkOption {
44
              type = types.package;
45
              default = self.packages.${pkgs.stdenv.hostPlatform.system}.rss-tools;
46
              defaultText = literalExpression "self.packages.\${pkgs.stdenv.hostPlatform.system}.rss-tools";
47
              description = "rss-tools package to run.";
48
            };
49
50
            settingsFile = mkOption {
51
              type = types.nullOr types.str;
52
              default = null;
53
              example = "/run/secrets/rss-tools.json";
54
              description = "Path to JSON config file passed to --config.";
55
            };
56
57
            dbPath = mkOption {
58
              type = types.str;
59
              default = "%S/rss-tools/db";
60
              example = "/var/lib/rss-tools/rss.db";
61
              description = "Path to local bbolt DB file passed to --db.";
62
            };
63
          };
64
65
          config = mkIf cfg.enable {
66
            assertions = [
67
              {
68
                assertion = cfg.settingsFile != null;
69
                message = "services.rss-tools.settingsFile must be set";
70
              }
71
            ];
72
73
            users.groups.${cfg.group} = { };
74
            users.users.${cfg.user} = {
75
              isSystemUser = true;
76
              group = cfg.group;
77
            };
78
79
            systemd.services.rss-tools = {
80
              description = "rss-tools service";
81
              wantedBy = [ "multi-user.target" ];
82
              after = [ "network.target" ];
83
              serviceConfig = {
84
                Type = "simple";
85
                User = cfg.user;
86
                Group = cfg.group;
87
                StateDirectory = "rss-tools";
88
                WorkingDirectory = "%S/rss-tools";
89
                ExecStart = "${cfg.package}/bin/rss-tools --config ${cfg.settingsFile} --db ${cfg.dbPath}";
90
                Restart = "on-failure";
91
                RestartSec = "5s";
92
                NoNewPrivileges = true;
93
                PrivateTmp = true;
94
                ProtectSystem = "strict";
95
                ProtectHome = true;
96
              };
97
            };
98
          };
99
        };
100
    };
101
}