{ config, pkgs, lib, options, ... }: with builtins // lib; let cfg = config.koreader; in { options.koreader = { enable = mkEnableOption "KOReader"; path = mkOption { type = types.str; default = ".adds/koreader"; description = "Relative path to KOReader within src"; }; nickleEntry = mkEnableOption "Launch KOReader directly via NickleMenu"; 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 nickle.menuItems = mkIf cfg.nickleEntry { "koreader" = [ "main" "KOReader" "cmd_spawn" "quiet" "exec /mnt/onboard/${cfg.path}/koreader.sh" ]; }; }; }