{ config, pkgs, lib, options, ... }: with builtins // lib; let cfg = config.koreader; importOption = p: (import p { inherit pkgs lib; } cfg.path).option; in { options.koreader = { enable = mkEnableOption "KOReader"; path = mkOption { type = types.str; default = ".adds/koreader"; description = "Relative path to KOReader within src"; }; nickelEntry = mkEnableOption "Launch KOReader directly via nickelMenu"; file = importOption ./lib/file.nix; manifest = importOption ./lib/manifest.nix; # file = mkOption { # type = options.file.type; # default = {}; # description = "Files relative to ${cfg.path}"; # }; }; config = mkIf cfg.enable { # file = mapAttrs' (n: v: { # name = "koreader-${n}"; # value = v // { # target = "${cfg.path}/${v.target}"; # }; # }) cfg.file; nickel.menu.item = mkIf cfg.nickelEntry { koreader = singleton { location = "main"; label = "KOReader"; action = "cmd_spawn"; arg = [ "quiet" "exec /mnt/onboard/${cfg.path}/koreader.sh" ]; }; }; }; }