blob: 57f7a8830d4d2b33b493554ce5e2c888893934c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
{ config, pkgs, lib, options, ... }:
with builtins // lib;
let
cfg = config.kobo;
ini = pkgs.formats.ini {};
importOption = p: (import p { inherit pkgs lib; } cfg.path).option;
in {
options.kobo = {
enable = mkEnableOption "main configurations";
path = mkOption {
type = types.str;
default = ".kobo/Kobo";
description = "Relative path to main Kobo config";
};
file = importOption ./lib/file.nix;
manifest = importOption ./lib/manifest.nix;
config = mkOption {
type = ini.type;
default = {};
description = "https://wiki.mobileread.com/wiki/Kobo_Configuration_Options";
};
};
config = {
# file = mapAttrs' (n: v: {
# name = "kobo-${n}";
# value = v // {
# target = "${cfg.path}/${v.target}";
# };
# }) cfg.file;
# manifest = mapAttrs' (n: v: {
# name = "kobo-${n}";
# value = v // {
# targets = map (x: "${cfg.path}/${x}") v.targets;
# };
# }) cfg.manifest;
kobo = {
config = {
FeatureSettings = {
ExcludeSyncFolders = ''(\.(?!kobo|adobe).+|([^.][^/]*/)+\..+)'';
};
ApplicationPreferences = {
QuickTourShown = true;
};
};
file = mkMerge [
(mkIf (cfg.config != {}) {
"Kobo eReader.conf".text = generators.toINI {} cfg.config;
})
];
manifest = {
"Kobo eReader.conf".mergeTool = local: remote: ''
${getBin pkgs.crudini}/bin/crudini --merge "${remote}" < "${local}"
'';
};
};
};
}
|