{ 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"; }; nickelEntry = mkEnableOption "Launch KOReader directly via nickelMenu"; 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.items = mkIf cfg.nickelEntry { koreader = singleton { location = "main"; label = "KOReader"; action = "cmd_spawn"; arg = [ "quiet" "exec /mnt/onboard/${cfg.path}/koreader.sh" ]; }; }; }; }