summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2021-07-14 21:17:58 -0400
committerKjetil Orbekk <kj@orbekk.com>2021-07-14 21:17:58 -0400
commit91324bc602ead478b956b2602d1658ff2830adc7 (patch)
tree771be1c83bb6c0435e1fd942e380b6e24b612b66
parent0e2dc6e7084340c12b9e7c4e8ecb7700305318a0 (diff)
add hledger service
-rw-r--r--data/aliases.nix56
-rw-r--r--data/dns/db.orbekk.shared.zone3
-rw-r--r--machines/dragon.nix4
-rw-r--r--modules/hledger-web.nix41
-rw-r--r--modules/users.nix67
5 files changed, 144 insertions, 27 deletions
diff --git a/data/aliases.nix b/data/aliases.nix
index d2de58e..ce48033 100644
--- a/data/aliases.nix
+++ b/data/aliases.nix
@@ -6,22 +6,56 @@ rec {
ap2 = "10.10.255.2";
};
services = {
- hydra = { address = ip.shape; port = 11101; };
- matrix = { address = ip.shape; port = 11102; };
- matrixFederation = { address = ip.shape; port = 8448; };
- git = { address = ip.shape; port = 11103; };
- fcgi = { address = ip.shape; port = 11104; };
- systemhttpd = { address = ip.shape; port = 11105; };
- linoquotes = { address = ip.raigh; port = 11106; };
+ hydra = {
+ address = ip.shape;
+ port = 11101;
+ };
+ matrix = {
+ address = ip.shape;
+ port = 11102;
+ };
+ matrixFederation = {
+ address = ip.shape;
+ port = 8448;
+ };
+ git = {
+ address = ip.shape;
+ port = 11103;
+ };
+ fcgi = {
+ address = ip.shape;
+ port = 11104;
+ };
+ systemhttpd = {
+ address = ip.shape;
+ port = 11105;
+ };
+ linoquotes = {
+ address = ip.raigh;
+ port = 11106;
+ };
stats = { home = "/var/lib/stats"; };
wireguard = { port = 11107; };
- mpd = { address = ip.dragon; port = 11108; };
- mpdweb = { address = ip.dragon; port = 11109; };
- pjournal = { address = ip.dragon; port = 11110; };
+ mpd = {
+ address = ip.dragon;
+ port = 11108;
+ };
+ mpdweb = {
+ address = ip.dragon;
+ port = 11109;
+ };
+ pjournal = {
+ address = ip.dragon;
+ port = 11110;
+ };
grafana = { port = 11111; };
prometheus = { port = 11112; };
prometheus-exporter = { port = 11113; };
prometheus-snmp-exporter = { port = 11114; };
- login = { address = ip.dragon; port = 11115; };
+ login = {
+ address = ip.dragon;
+ port = 11115;
+ };
+ hledger-web = { port = 11116; };
};
}
diff --git a/data/dns/db.orbekk.shared.zone b/data/dns/db.orbekk.shared.zone
index f5451ad..06d7ea4 100644
--- a/data/dns/db.orbekk.shared.zone
+++ b/data/dns/db.orbekk.shared.zone
@@ -1,7 +1,7 @@
$TTL 600
@ IN SOA kremkake.trygveandre.net. root.orbekk.com. (
$serial; serial
- 601; refresh
+ 602; refresh
900; retry
2419200; expire
3600;
@@ -30,6 +30,7 @@ kj IN CNAME dragon.dynamic.orbekk.com.
journal IN CNAME dragon.dynamic.orbekk.com.
grafana IN CNAME dragon.dynamic.orbekk.com.
nextcloud IN CNAME dragon.dynamic.orbekk.com.
+money IN CNAME dragon.dynamic.orbekk.com.
raigh IN AAAA 2001:67c:29f4:1008:216:3eff:fe33:4512
gutter IN A 150.136.5.19
diff --git a/machines/dragon.nix b/machines/dragon.nix
index 54bb28a..541690a 100644
--- a/machines/dragon.nix
+++ b/machines/dragon.nix
@@ -20,6 +20,10 @@ in {
orbekk.valheim-server.enable = false;
orbekk.valheim-server.programDir = "/opt/valheim";
+ orbekk.hledger-web.enable = true;
+ orbekk.hledger-web.journalFile =
+ "/var/lib/hledger-web/hledger/anniekj.journal";
+
# virtualisation.lxd.enable = true;
boot = {
diff --git a/modules/hledger-web.nix b/modules/hledger-web.nix
new file mode 100644
index 0000000..57faed6
--- /dev/null
+++ b/modules/hledger-web.nix
@@ -0,0 +1,41 @@
+{ config, lib, pkgs, ... }:
+
+let
+ cfg = config.orbekk.hledger-web;
+ aliases = import ../data/aliases.nix;
+in {
+ options = {
+ orbekk.hledger-web = {
+ enable = lib.mkEnableOption "Enable hledger-web";
+ journalFile = lib.mkOption {
+ type = lib.types.str;
+ description = "Path to journal file";
+ };
+ port = lib.mkOption {
+ type = lib.types.int;
+ default = aliases.services.hledger-web.port;
+ };
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ systemd.services.hledger-web = {
+ description = "Hledger Web";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+ path = with pkgs; [ hledger hledger-web git ];
+
+ serviceConfig = {
+ User = "hledger";
+ Group = "hledger";
+ StateDirectory = "hledger-web";
+ StateDirectoryMode = "770";
+ };
+
+ script = ''
+ cd /var/lib/hledger-web
+ hledger-web -f ${cfg.journalFile} --auto --port ${cfg.port}
+ '';
+ };
+ };
+}
diff --git a/modules/users.nix b/modules/users.nix
index e7fb228..a789580 100644
--- a/modules/users.nix
+++ b/modules/users.nix
@@ -11,21 +11,35 @@ in {
home = "/home/orbekk";
uid = 1000;
description = "KJ";
- extraGroups = ["wheel" "networkmanager" "dialout" "uucp" "audio" "pulse" "plugdev" "lxd" "readonly" "input" "vboxusers" "video" "sound" "tty" ];
- openssh.authorizedKeys.keyFiles = [
- ../data/yubikey_rsa.pub
+ extraGroups = [
+ "wheel"
+ "networkmanager"
+ "dialout"
+ "uucp"
+ "audio"
+ "pulse"
+ "plugdev"
+ "lxd"
+ "readonly"
+ "input"
+ "vboxusers"
+ "video"
+ "sound"
+ "tty"
+ "hledger"
];
+ openssh.authorizedKeys.keyFiles = [ ../data/yubikey_rsa.pub ];
};
guest = {
isNormalUser = true;
home = "/home/guest";
uid = 1500;
description = "Guest";
- extraGroups = ["networkmanager" "audio" "pulse" "input"];
+ extraGroups = [ "networkmanager" "audio" "pulse" "input" ];
};
fcgi = {
group = "fcgi";
- extraGroups = ["readonly"];
+ extraGroups = [ "readonly" ];
uid = 500;
isSystemUser = true;
};
@@ -48,7 +62,7 @@ in {
minecraft = {
name = "minecraft";
uid = config.ids.uids.minecraft;
- extraGroups = ["readonly"];
+ extraGroups = [ "readonly" ];
isSystemUser = true;
};
stats = {
@@ -97,24 +111,47 @@ in {
mpd = lib.mkIf config.services.mpd.enable {
isSystemUser = true;
group = "mpd";
- extraGroups = ["readonly"];
+ extraGroups = [ "readonly" ];
};
nginx = lib.mkIf config.services.nginx.enable {
isSystemUser = true;
- extraGroups = ["readonly"];
+ extraGroups = [ "readonly" ];
+ };
+ hledger = lib.mkIf config.orbekk.hledger-web.enable {
+ isSystemUser = true;
+ home = "/var/lib/hledger-web";
+ group = "hledger";
};
};
extraGroups = {
- fcgi = { name = "fcgi"; gid = 500; };
- plugdev = { name = "plugdev"; gid = 501; };
- systemhttpd = { name = "systemhttpd"; gid = 502; };
- linoquotes = { name = "linoquotes"; gid = 503; };
- stats = { name = "stats"; gid = 504; };
- terraria = { name = "terraria"; gid = 505; };
+ fcgi = {
+ name = "fcgi";
+ gid = 500;
+ };
+ plugdev = {
+ name = "plugdev";
+ gid = 501;
+ };
+ systemhttpd = {
+ name = "systemhttpd";
+ gid = 502;
+ };
+ linoquotes = {
+ name = "linoquotes";
+ gid = 503;
+ };
+ stats = {
+ name = "stats";
+ gid = 504;
+ };
+ terraria = {
+ name = "terraria";
+ gid = 505;
+ };
readonly = { gid = 506; };
pjournal = { gid = 507; };
pjournal_test = { gid = 508; };
+ hledger = lib.mkIf config.orbekk.hledger-web.enable { };
};
};
}
-