feat(home-manager): add webdav module
This commit is contained in:
parent
01092ee7ef
commit
b0d455217f
5 changed files with 183 additions and 1 deletions
133
modules/home-manager/accounts/dav/default.nix
Normal file
133
modules/home-manager/accounts/dav/default.nix
Normal file
|
@ -0,0 +1,133 @@
|
|||
{ lib, config, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.modules.accounts.dav;
|
||||
vdirsyncerConf = {
|
||||
enable = true;
|
||||
auth = "basic";
|
||||
userNameCommand = [
|
||||
"cat"
|
||||
"${config.sops.secrets."webdav/username".path}"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
options.modules.accounts.dav = {
|
||||
enable = mkEnableOption "enable personal Caldav / CardDav";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
## Manage secrets used in this module
|
||||
sops = {
|
||||
secrets = {
|
||||
"webdav/url/caldav" = {
|
||||
sopsFile = ../../../../secrets/accounts.yaml;
|
||||
};
|
||||
"webdav/url/carddav" = {
|
||||
sopsFile = ../../../../secrets/accounts.yaml;
|
||||
};
|
||||
"webdav/username" = {
|
||||
sopsFile = ../../../../secrets/accounts.yaml;
|
||||
};
|
||||
"webdav/password" = {
|
||||
sopsFile = ../../../../secrets/accounts.yaml;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
accounts.calendar.basePath = ".local/share/calendars";
|
||||
accounts.calendar.accounts.personal_calendars = {
|
||||
name = "personal_calendar";
|
||||
remote.type = "caldav";
|
||||
remote.passwordCommand = [
|
||||
"cat"
|
||||
"${config.sops.secrets."webdav/password".path}"
|
||||
];
|
||||
vdirsyncer = vdirsyncerConf // {
|
||||
metadata = [
|
||||
"color"
|
||||
"displayname"
|
||||
];
|
||||
itemTypes = [
|
||||
"VTODO"
|
||||
"VEVENT"
|
||||
];
|
||||
urlCommand = [
|
||||
"cat"
|
||||
"${config.sops.secrets."webdav/url/caldav".path}"
|
||||
];
|
||||
collections = [
|
||||
"from a"
|
||||
"from b"
|
||||
];
|
||||
};
|
||||
khal = {
|
||||
enable = true;
|
||||
type = "discover";
|
||||
color = "auto";
|
||||
};
|
||||
};
|
||||
|
||||
accounts.contact.basePath = ".local/share/contacts";
|
||||
accounts.contact.accounts.personal_contacts = {
|
||||
remote.type = "carddav";
|
||||
remote.passwordCommand = [
|
||||
"cat"
|
||||
"${config.sops.secrets."webdav/password".path}"
|
||||
];
|
||||
local.type = "filesystem";
|
||||
local.fileExt = ".vcf";
|
||||
vdirsyncer = vdirsyncerConf // {
|
||||
|
||||
metadata = [
|
||||
"displayname"
|
||||
];
|
||||
urlCommand = [
|
||||
"cat"
|
||||
"${config.sops.secrets."webdav/url/carddav".path}"
|
||||
];
|
||||
};
|
||||
khal = {
|
||||
enable = true;
|
||||
color = "#26A269";
|
||||
};
|
||||
khard = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
programs.vdirsyncer.enable = true;
|
||||
services.vdirsyncer = {
|
||||
enable = true;
|
||||
frequency = "*:0/15";
|
||||
};
|
||||
programs.khal = {
|
||||
enable = true;
|
||||
locale = {
|
||||
dateformat = "%Y.%m.%d";
|
||||
datetimeformat = "%Y.%m.%d %H:%M";
|
||||
longdateformat = "%d %B %Y";
|
||||
longdatetimeformat = "%d %B %Y %H:%M";
|
||||
timeformat = "%H:%M";
|
||||
};
|
||||
settings = {
|
||||
default = {
|
||||
highlight_event_days = true;
|
||||
};
|
||||
view = {
|
||||
frame = "color";
|
||||
blank_line_before_day = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
programs.khard = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
default_action = "list";
|
||||
editor = ["nvim" "-i" "NONE"];
|
||||
merge_editor = [ "nvim" "-d" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue