diff options
Diffstat (limited to 'modules/manifest.nix')
| -rw-r--r-- | modules/manifest.nix | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/modules/manifest.nix b/modules/manifest.nix new file mode 100644 index 0000000..718ffb4 --- /dev/null +++ b/modules/manifest.nix @@ -0,0 +1,38 @@ +{ config, pkgs, lib, ... }: +with builtins // lib; +let + cfg = config.manifest; +in { + options.manifest = mkOption { + default = {}; + type = with types; attrsOf (submodule ({ name, config, ... }: { + options = { + enable = mkEnableOption name // { default = true; }; + targets = mkOption { + type = with types; listOf str; + default = [ name ]; + }; + mergeTool = mkOption { + type = with types; functionTo (functionTo str); + description = '' + Sometimes we don't just want to overwrite the existing kobo file; instead we need to merge them. + This is the executable which does this. + The first argument is the local file and the second is the kobo file. + Note that the local file path and the kobo file path only disagree in their top-level directory and otherwise are the same path. + ''; + example = '' + localFile: koboFile: "cp ''${localFile} ''${koboFile}" + ''; + }; + remoteOnly = mkOption { + type = types.bool + default = false; + description = '' + In general, the manifest only considers local files that match the target/pattern. + Setting this to true means that the kobo files will be scanned and the provided mergeTool will be run with the first argument set to null. + ''; + }; + }; + })); + }; +} |
