From 4f471484b3a1e16230979a8406503a220b9101f4 Mon Sep 17 00:00:00 2001 From: Chris Wells Date: Tue, 10 Sep 2024 14:51:28 -0500 Subject: I think this is almost working! --- modules/koreader/default.nix | 72 ++++++++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 23 deletions(-) (limited to 'modules/koreader') diff --git a/modules/koreader/default.nix b/modules/koreader/default.nix index 3cc5281..ab1be83 100644 --- a/modules/koreader/default.nix +++ b/modules/koreader/default.nix @@ -8,15 +8,42 @@ in { package = mkPackageOption pkgs "kobo-koreader" {}; - _allFiles = mkOption { + _createdFiles = mkOption { type = types.package; + internal = true; readOnly = true; + default = pkgs.buildEnv { + name = "koreader-files-created"; + paths = mapAttrsToList (_: v: v._package) cfg.file; + extraPrefix = cfg.devicePath; + }; + }; + + finalPackage = mkOption { + type = types.package; internal = true; - default = pkgs.symlinkJoin { - name = "koreader-files"; - paths = mapAttrsToList (_: v: v._package) cfg.file ++ [ cfg.package ]; + readOnly = true; + default = pkgs.mergePaths { + name = "koreader-package"; + paths = [ + (pkgs.linkFarm "koreader" [{ + name = removePrefix "/" cfg.devicePath; + path = cfg.package.out; + }]) + cfg._createdFiles + cfg.package.KoboRoot + ]; }; }; + # _allFiles = mkOption { + # type = types.package; + # readOnly = true; + # internal = true; + # default = pkgs.symlinkJoin { + # name = "koreader-files"; + # paths = mapAttrsToList (_: v: v._package) cfg.file ++ [ cfg.package ]; + # }; + # }; path = mkOption { type = types.str; @@ -43,25 +70,24 @@ in { }; }; - config = mkIf cfg.enable { - koboroot.include = [ - (pkgs.linkFarm [{ - name = cfg.devicePath; - path = cfg._allFiles; - }) - cfg.package.KoboRoot - ]; + config = mkMerge [ + { + info.koreader = cfg.enable; + } + (mkIf cfg.enable { + koboroot.include = singleton cfg.finalPackage; - nickel.menu.item = mkIf cfg.nickel.enable { - koreader = singleton { - location = "main"; - label = "KOReader"; - action = "cmd_spawn"; - arg = [ - "quiet" - "exec ${cfg.devicePath}/koreader.sh"; - ]; + nickel.menu.item = mkIf cfg.nickel.enable { + koreader = singleton { + location = "main"; + label = "KOReader"; + action = "cmd_spawn"; + arg = [ + "quiet" + "exec ${cfg.devicePath}/koreader.sh" + ]; + }; }; - }; - }; + }) + ]; } -- cgit v1.2.3