From d6949fe35c1b4c7a9e93d1430e5c1b1d5dd4d9c6 Mon Sep 17 00:00:00 2001 From: Chris Wells Date: Wed, 24 Jan 2024 14:56:56 -0600 Subject: Getting a whole kobo distribution together! --- modules/kobo.nix | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 modules/kobo.nix (limited to 'modules/kobo.nix') diff --git a/modules/kobo.nix b/modules/kobo.nix new file mode 100644 index 0000000..d46da7e --- /dev/null +++ b/modules/kobo.nix @@ -0,0 +1,61 @@ +{ config, pkgs, lib, ... }: +with builtins // lib; +let + cfg = config.kobo; +in { + imports = [ + ./kfmon.nix + ./koreader.nix + ./plato.nix + ]; + + options.kobo = { + package = mkOption { + type = types.package; + description = "The resulting kobo configuration"; + default = if cfg.generate == "" then cfg.src else pkgs.stdenvNoCC.mkDerivation { + inherit (cfg) src; + name = "kobo-config"; + + dontBuild = true; + dontFixup = true; + dontConfigure = true; + dontPatch = true; + + installPhase = '' + mkdir -p $out + cp -rv . $out + + ${cfg.generate} + ''; + }; + }; + + src = mkOption { + type = types.package; + description = "The base source files to use"; + default = with pkgs.kobo.src; + if config.plato.enable && config.koreader.enable then KOReader-Plato + else if config.plato.enable then Plato + else if config.koreader.enable then KOReader + else if config.kfmon.enable then KFMon + else error "At least one of plato, koreader or kfmon must be enabled in order to use a default package"; + }; + + generate = mkOption { + type = types.lines; + default = ""; + description = "Script used to generate the kobo config"; + }; + }; + + config = { + kobo = { + generate = mkBefore (concatStringsSep "\n" ( + optional config.kfmon.enable config.kfmon.generate ++ + optional config.plato.enable config.plato.generate ++ + optional config.koreader.enable config.koreader.generate + )); + }; + }; +} -- cgit v1.2.3