From 45156e2bdb359c22398f8c7a60fb729ad168786a Mon Sep 17 00:00:00 2001 From: Chris Wells Date: Thu, 25 Jan 2024 11:26:31 -0600 Subject: This distribution is coming together --- modules/manifest.nix | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 modules/manifest.nix (limited to 'modules/manifest.nix') 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. + ''; + }; + }; + })); + }; +} -- cgit v1.2.3