{ config, lib, pkgs, ... }: { home.packages = with pkgs; [ khard ]; programs.vdirsyncer.enable = true; accounts.contact = { basePath = ".contact"; accounts = let calendarAccounts = config.accounts.calendar.accounts; local = { type = "filesystem"; fileExt = ".vcf"; }; in { nextcloud = { inherit local; remote = { inherit (calendarAccounts.nextcloud.remote) userName passwordCommand; type = "carddav"; url = "https://cloud.xenia.me.uk/remote.php/dav/addressbooks/users/xenia/contacts-1/"; }; vdirsyncer = { inherit (calendarAccounts.nextcloud.vdirsyncer) enable; collections = [ "from a" ]; }; }; # Remove for now as contact syncing doesn't seem to work with davmail # TODO investigate LDAP based solution instead # ukaea = { # inherit local; # remote = rec { # inherit (calendarAccounts.ukaea.remote) userName passwordCommand; # type = "carddav"; # url = "http://localhost:1080/users/${userName}/contacts/"; # }; # vdirsyncer = { # inherit (calendarAccounts.ukaea.vdirsyncer) enable; # collections = [ "contacts" ]; # }; # }; }; }; xdg.configFile."khard/khard.conf".text = '' # example configuration file for khard version > 0.14.0 # place it under ~/.config/khard/khard.conf # This file is parsed by the configobj library. The syntax is described at # https://configobj.readthedocs.io/en/latest/configobj.html#the-config-file-format [addressbooks] [[nextcloud]] path = ~/.contact/nextcloud/contacts-1/ # [[ukaea]] # path = ~/.contact/ukaea/contacts/ [general] debug = no default_action = list # These are either strings or comma seperated lists # editor = vim, -i, NONE # merge_editor = vimdiff [contact table] # display names by first or last name: first_name / last_name / formatted_name display = first_name # group by address book: yes / no group_by_addressbook = no # reverse table ordering: yes / no reverse = no # append nicknames to name column: yes / no show_nicknames = yes # show uid table column: yes / no show_uids = yes # show kind table column: yes / no show_kinds = no # sort by first or last name: first_name / last_name / formatted_name sort = last_name # localize dates: yes / no localize_dates = yes # set a comma separated list of preferred phone number types in descending priority # or nothing for non-filtered alphabetical order # preferred_phone_number_type = pref, cell, home # set a comma separated list of preferred email address types in descending priority # or nothing for non-filtered alphabetical order # preferred_email_address_type = pref, work, home [vcard] # extend contacts with your own private objects # these objects are stored with a leading "X-" before the object name in the vcard files # every object label may only contain letters, digits and the - character # example: # private_objects = Jabber, Skype, Twitter # default: , (the empty list) # private_objects = Jabber, Skype, Twitter # preferred vcard version: 3.0 / 4.0 preferred_version = 3.0 # Look into source vcf files to speed up search queries: yes / no search_in_source_files = no # skip unparsable vcard files: yes / no skip_unparsable = no ''; }