silx: 2.1.1 -> 2.1.2 (#361612)
[NixPkgs.git] / nixos / modules / services / misc / ombi.nix
blob89d8b5c537634a9ed7a051c6c6a7997315594742
1 { config, pkgs, lib, ... }:
2 let cfg = config.services.ombi;
4 in {
5   options = {
6     services.ombi = {
7       enable = lib.mkEnableOption ''
8         Ombi, a web application that automatically gives your shared Plex or
9         Emby users the ability to request content by themselves!
11         Optionally see <https://docs.ombi.app/info/reverse-proxy>
12         on how to set up a reverse proxy
13       '';
15       package = lib.mkPackageOption pkgs "ombi" { };
17       dataDir = lib.mkOption {
18         type = lib.types.str;
19         default = "/var/lib/ombi";
20         description = "The directory where Ombi stores its data files.";
21       };
23       port = lib.mkOption {
24         type = lib.types.port;
25         default = 5000;
26         description = "The port for the Ombi web interface.";
27       };
29       openFirewall = lib.mkOption {
30         type = lib.types.bool;
31         default = false;
32         description = "Open ports in the firewall for the Ombi web interface.";
33       };
35       user = lib.mkOption {
36         type = lib.types.str;
37         default = "ombi";
38         description = "User account under which Ombi runs.";
39       };
41       group = lib.mkOption {
42         type = lib.types.str;
43         default = "ombi";
44         description = "Group under which Ombi runs.";
45       };
46     };
47   };
49   config = lib.mkIf cfg.enable {
50     systemd.tmpfiles.rules = [
51       "d '${cfg.dataDir}' 0700 ${cfg.user} ${cfg.group} - -"
52     ];
54     systemd.services.ombi = {
55       description = "Ombi";
56       after = [ "network.target" ];
57       wantedBy = [ "multi-user.target" ];
59       serviceConfig = {
60         Type = "simple";
61         User = cfg.user;
62         Group = cfg.group;
63         ExecStart = "${lib.getExe cfg.package} --storage '${cfg.dataDir}' --host 'http://*:${toString cfg.port}'";
64         Restart = "on-failure";
65       };
66     };
68     networking.firewall = lib.mkIf cfg.openFirewall {
69       allowedTCPPorts = [ cfg.port ];
70     };
72     users.users = lib.mkIf (cfg.user == "ombi") {
73       ombi = {
74         isSystemUser = true;
75         group = cfg.group;
76         home = cfg.dataDir;
77       };
78     };
80     users.groups = lib.mkIf (cfg.group == "ombi") { ombi = { }; };
81   };