lib.packagesFromDirectoryRecursive: Improved documentation (#359898)
[NixPkgs.git] / nixos / modules / services / web-apps / ethercalc.nix
blobfd6c6e05a87273412feab89e290166c12bd62ecd
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.services.ethercalc;
7 in {
8   options = {
9     services.ethercalc = {
10       enable = mkOption {
11         default = false;
12         type = types.bool;
13         description = ''
14           ethercalc, an online collaborative spreadsheet server.
16           Persistent state will be maintained under
17           {file}`/var/lib/ethercalc`. Upstream supports using a
18           redis server for storage and recommends the redis backend for
19           intensive use; however, the Nix module doesn't currently support
20           redis.
22           Note that while ethercalc is a good and robust project with an active
23           issue tracker, there haven't been new commits since the end of 2020.
24         '';
25       };
27       package = mkPackageOption pkgs "ethercalc" { };
29       host = mkOption {
30         type = types.str;
31         default = "0.0.0.0";
32         description = "Address to listen on (use 0.0.0.0 to allow access from any address).";
33       };
35       port = mkOption {
36         type = types.port;
37         default = 8000;
38         description = "Port to bind to.";
39       };
40     };
41   };
43   config = mkIf cfg.enable {
44     systemd.services.ethercalc = {
45       description = "Ethercalc service";
46       wantedBy    = [ "multi-user.target" ];
47       after       = [ "network.target" ];
48       serviceConfig = {
49         DynamicUser    =   true;
50         ExecStart        = "${cfg.package}/bin/ethercalc --host ${cfg.host} --port ${toString cfg.port}";
51         Restart          = "always";
52         StateDirectory   = "ethercalc";
53         WorkingDirectory = "/var/lib/ethercalc";
54       };
55     };
56   };