aboutsummaryrefslogtreecommitdiff
path: root/modules/koreader/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/koreader/default.nix')
-rw-r--r--modules/koreader/default.nix72
1 files changed, 49 insertions, 23 deletions
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"
+ ];
+ };
};
- };
- };
+ })
+ ];
}