nxcaldav
This commit is contained in:
@@ -1 +1,117 @@
|
||||
{ pkgs, ... }@all: with all; { }
|
||||
{ pkgs, ... }@all: with all; let
|
||||
x = rec { version = "0.0.11";
|
||||
user = "nxcaldav";
|
||||
nxcsrc = pkgs.fetchFromGitea {
|
||||
domain = "git.${hyper.domain}";
|
||||
owner = "nx2";
|
||||
repo = "NxCalDav";
|
||||
rev = version;
|
||||
hash = "sha256-Hk27BQCBtdRQ1aSHVEQ1EVjPrsC2jOUPDT4yuU9OCXQ=";
|
||||
};
|
||||
nxc = pkgs.buildGoModule {
|
||||
pname = "NxCalDav";
|
||||
inherit version;
|
||||
src = nxcsrc;
|
||||
vendorHash = "sha256-prstYDJuwS5E5uRwUkX0M+QdnIaQ0QewKe8HaoZ0Db4=";
|
||||
};
|
||||
nxc_helpers = pkgs.python3Packages.buildPythonApplication {
|
||||
inherit version;
|
||||
format = "other";
|
||||
pname = "nxc_helpers";
|
||||
src = nxcsrc;
|
||||
propagatedBuildInputs = with pkgs.python313Packages; [ pyyaml psycopg2 ];
|
||||
installPhase = ''
|
||||
sed -i "15s|.*| parser.add_argument('--config', default='${cfg}', help='Path to config.yaml')|" ./export_events.py
|
||||
sed -i "17s|.*| parser.add_argument('--config', default='${cfg}', help='Path to config.yaml')|" ./import_events.py
|
||||
install -Dm755 "./export_events.py" "$out/bin/nxc_export"
|
||||
install -Dm755 "./import_events.py" "$out/bin/nxc_import"
|
||||
'';
|
||||
};
|
||||
cfg = (pkgs.formats.yaml { }).generate "nxcaldav-config.yaml" {
|
||||
server = {
|
||||
bind_address = "0.0.0.0:14243";
|
||||
public_url = "http://nxc.${hyper.domain}/";
|
||||
redaction_text = "[-]";
|
||||
default_class = "CONFIDENTIAL";
|
||||
};
|
||||
database.url = "postgres://nxcaldav@localhost:5432/nxcaldav?sslmode=disable";
|
||||
users = let dfu = name: {
|
||||
name = name;
|
||||
password_cmd = ''cat ${config.sops.secrets."nx2site/nxcaldav/${name}_password".path}'';
|
||||
groups = [ "family" ];
|
||||
}; in [
|
||||
(dfu "lennart")
|
||||
(dfu "daniel")
|
||||
(dfu "diane")
|
||||
(dfu "georg")
|
||||
(dfu "tessa")
|
||||
(dfu "shared")
|
||||
];
|
||||
calendars = [
|
||||
{ owner = "lennart"; color = "#dddddd"; id = "preservation"; }
|
||||
{ owner = "lennart"; color = "#dd2222"; id = "effort"; }
|
||||
{ owner = "lennart"; color = "#2222dd"; id = "experience"; }
|
||||
{ owner = "lennart"; color = "#22aa22"; id = "leisure"; }
|
||||
{ id = "family";
|
||||
owner = "shared";
|
||||
color = "#dddd22";
|
||||
access = [
|
||||
{ group = "family"; mode = "read-write"; }
|
||||
];
|
||||
}
|
||||
];
|
||||
address_books = [
|
||||
{ owner = "lennart"; id = "Others"; }
|
||||
{ owner = "lennart"; id = "TUDa"; }
|
||||
{ owner = "lennart"; id = "HSMW"; }
|
||||
{ owner = "lennart"; id = "CWG"; }
|
||||
{ owner = "lennart"; id = "Handball"; }
|
||||
{ id = "Family & Freinds";
|
||||
owner = "shared";
|
||||
access = [
|
||||
{ group = "family"; mode = "read-write"; }
|
||||
];
|
||||
}
|
||||
];
|
||||
aggregates = [
|
||||
{ id = "lennart-aggregate";
|
||||
owner = "shared";
|
||||
sources = [ "preservation" "effort" "experience" "leisure" ];
|
||||
access = [
|
||||
{ group = "family" ; mode = "read-only"; }
|
||||
{ ics = "future-only"; }
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
}; in with x; {
|
||||
sops.secrets = let ss = { owner = user; group = user; mode = "600"; }; in {
|
||||
"nx2site/nxcaldav/lennart_password" = ss;
|
||||
"nx2site/nxcaldav/daniel_password" = ss;
|
||||
"nx2site/nxcaldav/diane_password" = ss;
|
||||
"nx2site/nxcaldav/georg_password" = ss;
|
||||
"nx2site/nxcaldav/tessa_password" = ss;
|
||||
"nx2site/nxcaldav/shared_password" = ss;
|
||||
};
|
||||
users = {
|
||||
groups."${user}" = {};
|
||||
users = {
|
||||
"${hyper.user}".extraGroups = [ user ];
|
||||
"${user}" = {
|
||||
isSystemUser = true;
|
||||
isNormalUser = false;
|
||||
group = user;
|
||||
};
|
||||
};
|
||||
};
|
||||
environment.systemPackages = [ nxc_helpers ];
|
||||
systemd.services."nxcaldav" = {
|
||||
enable = true;
|
||||
path = [ pkgs.bash pkgs.coreutils ];
|
||||
serviceConfig = {
|
||||
User = user;
|
||||
Group = user;
|
||||
ExecStart = ''${nxc}/bin/nxcaldav -c ${cfg}'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user