1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 10:11:08 +01:00
Files
niveum/modules/hledger.nix

47 lines
1.5 KiB
Nix
Raw Normal View History

2019-04-19 15:02:05 +02:00
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.niveum.hledger;
in {
options.niveum.hledger = {
enable = mkEnableOption "hledger";
2019-04-21 15:22:40 +02:00
package = mkOption { type = types.package; default = pkgs.hledger; };
2019-04-19 15:02:05 +02:00
server = {
enable = mkEnableOption "hledger server";
port = mkOption { type = pkgs.unstable.lib.types.port; default = 5000; };
host = mkOption { type = types.str; default = "127.0.0.1"; };
capabilities = mkOption {
type = types.listOf (types.enum ["view" "add" "manage"]);
default = [ "view" "add" ];
};
flags = mkOption { type = types.listOf types.str; default = []; };
user = mkOption { type = types.attrs; };
2019-04-21 15:22:40 +02:00
package = mkOption { type = types.package; default = pkgs.hledger-web; };
2019-04-19 15:02:05 +02:00
};
};
config = mkIf cfg.enable {
2019-04-21 15:22:40 +02:00
environment.systemPackages = [ cfg.package ];
2019-04-19 15:02:05 +02:00
systemd.services.hledger-web = mkIf cfg.server.enable {
description = "hledger server";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Restart = "always";
ExecStart = ''
2019-04-21 15:22:40 +02:00
${cfg.server.package}/bin/hledger-web \
2019-04-19 15:02:05 +02:00
--port=${toString cfg.server.port} \
--host=${cfg.server.host} \
--capabilities=${concatStringsSep "," cfg.server.capabilities} \
${concatStringsSep " " cfg.server.flags}
'';
User = cfg.server.user.name;
PrivateTemp = true;
RuntimeDirectory = "hledger-web";
WorkingDirectory = "%t/hledger-web";
};
};
};
}