python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / misc / ombi.nix
blob8bf6a9b116ec292ffd58bc4a8fd7efe1364cd203
1 { config, pkgs, lib, ... }:
3 with lib;
5 let cfg = config.services.ombi;
7 in {
8   options = {
9     services.ombi = {
10       enable = mkEnableOption (lib.mdDoc ''
11         Ombi.
12         Optionally see <https://docs.ombi.app/info/reverse-proxy>
13         on how to set up a reverse proxy
14       '');
16       dataDir = mkOption {
17         type = types.str;
18         default = "/var/lib/ombi";
19         description = lib.mdDoc "The directory where Ombi stores its data files.";
20       };
22       port = mkOption {
23         type = types.port;
24         default = 5000;
25         description = lib.mdDoc "The port for the Ombi web interface.";
26       };
28       openFirewall = mkOption {
29         type = types.bool;
30         default = false;
31         description = lib.mdDoc "Open ports in the firewall for the Ombi web interface.";
32       };
34       user = mkOption {
35         type = types.str;
36         default = "ombi";
37         description = lib.mdDoc "User account under which Ombi runs.";
38       };
40       group = mkOption {
41         type = types.str;
42         default = "ombi";
43         description = lib.mdDoc "Group under which Ombi runs.";
44       };
45     };
46   };
48   config = mkIf cfg.enable {
49     systemd.tmpfiles.rules = [
50       "d '${cfg.dataDir}' 0700 ${cfg.user} ${cfg.group} - -"
51     ];
53     systemd.services.ombi = {
54       description = "Ombi";
55       after = [ "network.target" ];
56       wantedBy = [ "multi-user.target" ];
58       serviceConfig = {
59         Type = "simple";
60         User = cfg.user;
61         Group = cfg.group;
62         ExecStart = "${pkgs.ombi}/bin/Ombi --storage '${cfg.dataDir}' --host 'http://*:${toString cfg.port}'";
63         Restart = "on-failure";
64       };
65     };
67     networking.firewall = mkIf cfg.openFirewall {
68       allowedTCPPorts = [ cfg.port ];
69     };
71     users.users = mkIf (cfg.user == "ombi") {
72       ombi = {
73         isSystemUser = true;
74         group = cfg.group;
75         home = cfg.dataDir;
76       };
77     };
79     users.groups = mkIf (cfg.group == "ombi") { ombi = { }; };
80   };