mirror of
https://github.com/nix-community/home-manager
synced 2024-11-27 13:39:46 +01:00
36a53d9f26
This process was automated by [my fork of `nix-doc-munge`]. All conversions were automatically checked to produce the same DocBook result when converted back, modulo minor typographical/formatting differences on the acceptable-to-desirable spectrum. To reproduce this commit, run: $ NIX_PATH=nixpkgs=flake:nixpkgs/e7e69199f0372364a6106a1e735f68604f4c5a25 \ nix shell nixpkgs#coreutils \ -c find . -name '*.nix' \ -exec nix run -- github:emilazy/nix-doc-munge/98dadf1f77351c2ba5dcb709a2a171d655f15099 \ {} + $ ./format [my fork of `nix-doc-munge`]: https://github.com/emilazy/nix-doc-munge/tree/home-manager
134 lines
3.4 KiB
Nix
134 lines
3.4 KiB
Nix
{ config, lib, pkgs, ... }:
|
||
|
||
with lib;
|
||
|
||
let
|
||
|
||
cfg = config.accounts.contact;
|
||
|
||
localModule = name:
|
||
types.submodule {
|
||
options = {
|
||
path = mkOption {
|
||
type = types.str;
|
||
default = "${cfg.basePath}/${name}";
|
||
defaultText = "‹accounts.contact.basePath›/‹name›";
|
||
description = lib.mdDoc "The path of the storage.";
|
||
};
|
||
|
||
type = mkOption {
|
||
type = types.enum [ "filesystem" "singlefile" ];
|
||
description = lib.mdDoc "The type of the storage.";
|
||
};
|
||
|
||
fileExt = mkOption {
|
||
type = types.nullOr types.str;
|
||
default = null;
|
||
description = lib.mdDoc "The file extension to use.";
|
||
};
|
||
|
||
encoding = mkOption {
|
||
type = types.nullOr types.str;
|
||
default = null;
|
||
description = lib.mdDoc ''
|
||
File encoding for items, both content and file name.
|
||
Defaults to UTF-8.
|
||
'';
|
||
};
|
||
};
|
||
};
|
||
|
||
remoteModule = types.submodule {
|
||
options = {
|
||
type = mkOption {
|
||
type = types.enum [ "carddav" "http" "google_contacts" ];
|
||
description = lib.mdDoc "The type of the storage.";
|
||
};
|
||
|
||
url = mkOption {
|
||
type = types.nullOr types.str;
|
||
default = null;
|
||
description = lib.mdDoc "The URL of the storage.";
|
||
};
|
||
|
||
userName = mkOption {
|
||
type = types.nullOr types.str;
|
||
default = null;
|
||
description = lib.mdDoc "User name for authentication.";
|
||
};
|
||
|
||
# userNameCommand = mkOption {
|
||
# type = types.nullOr (types.listOf types.str);
|
||
# default = null;
|
||
# example = [ "~/get-username.sh" ];
|
||
# description = ''
|
||
# A command that prints the user name to standard output.
|
||
# '';
|
||
# };
|
||
|
||
passwordCommand = mkOption {
|
||
type = types.nullOr (types.listOf types.str);
|
||
default = null;
|
||
example = [ "pass" "caldav" ];
|
||
description = lib.mdDoc ''
|
||
A command that prints the password to standard output.
|
||
'';
|
||
};
|
||
};
|
||
};
|
||
|
||
contactOpts = { name, config, ... }: {
|
||
options = {
|
||
name = mkOption {
|
||
type = types.str;
|
||
readOnly = true;
|
||
description = lib.mdDoc ''
|
||
Unique identifier of the contact account. This is set to the
|
||
attribute name of the contact configuration.
|
||
'';
|
||
};
|
||
|
||
local = mkOption {
|
||
type = types.nullOr (localModule name);
|
||
default = null;
|
||
description = lib.mdDoc ''
|
||
Local configuration for the contacts.
|
||
'';
|
||
};
|
||
|
||
remote = mkOption {
|
||
type = types.nullOr remoteModule;
|
||
default = null;
|
||
description = lib.mdDoc ''
|
||
Remote configuration for the contacts.
|
||
'';
|
||
};
|
||
};
|
||
|
||
config = { name = name; };
|
||
};
|
||
|
||
in {
|
||
options.accounts.contact = {
|
||
basePath = mkOption {
|
||
type = types.str;
|
||
apply = p:
|
||
if hasPrefix "/" p then p else "${config.home.homeDirectory}/${p}";
|
||
description = lib.mdDoc ''
|
||
The base directory in which to save contacts. May be a
|
||
relative path, in which case it is relative the home
|
||
directory.
|
||
'';
|
||
};
|
||
|
||
accounts = mkOption {
|
||
type = types.attrsOf (types.submodule [
|
||
contactOpts
|
||
(import ../programs/vdirsyncer-accounts.nix)
|
||
(import ../programs/khal-accounts.nix)
|
||
]);
|
||
default = { };
|
||
description = lib.mdDoc "List of contacts.";
|
||
};
|
||
};
|
||
}
|