aboutsummaryrefslogtreecommitdiff
path: root/modules/plato.nix
diff options
context:
space:
mode:
authorChris Wells <chris@mathematicaster.org>2024-09-10 14:51:28 -0500
committerChris Wells <chris@mathematicaster.org>2024-09-10 14:51:28 -0500
commit4f471484b3a1e16230979a8406503a220b9101f4 (patch)
treedc3f5256f275f34d3bcc9573462ed34c7fd97f77 /modules/plato.nix
parent5cb16c34a8c5b803ec723934c1dc828c0e8e3bad (diff)
downloadkobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.gz
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.bz2
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.lz
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.xz
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.tar.zst
kobo-manager-4f471484b3a1e16230979a8406503a220b9101f4.zip
I think this is almost working!
Diffstat (limited to 'modules/plato.nix')
-rw-r--r--modules/plato.nix210
1 files changed, 0 insertions, 210 deletions
diff --git a/modules/plato.nix b/modules/plato.nix
deleted file mode 100644
index 0d0d05d..0000000
--- a/modules/plato.nix
+++ /dev/null
@@ -1,210 +0,0 @@
-{ config, pkgs, lib, options, ... }:
-with builtins // lib;
-let
- cfg = config.plato;
- toml = pkgs.formats.toml {};
- importOption = p: (import p { inherit pkgs lib; } cfg.path).option;
-in {
- imports = [
- ./nickel.nix
- ];
-
- options.plato = {
- enable = mkEnableOption "Plato";
-
- path = mkOption {
- type = types.str;
- default = ".adds/plato";
- description = "Relative path to Plato within src";
- };
-
- devPath = mkOption {
- type = types.str;
- default = "/mnt/onboard/${cfg.path}";
- readOnly = true;
- internal = true;
- };
-
- file = importOption ./lib/file.nix;
- manifest = importOption ./lib/manifest.nix;
-
- # file = mkOption {
- # type = options.file.type;
- # default = {};
- # description = "Files relative to ${cfg.path}";
- # };
-
- # manifest = mkOption {
- # type = options.manifest.type;
- # default = {};
- # description = "Manifest relative to ${cfg.path}";
- # };
-
- nickelEntry = mkEnableOption "Launch Plato directly from nickelMenu";
-
- config = mkOption {
- type = types.lines;
- default = "";
- description = "Plato config.sh";
- };
-
- hyphenation = mkEnableOption "hyphenation" // { default = true; };
-
- convertDictionaries = mkEnableOption "convert StarDict" // { default = true; };
-
- setFramebufferDepth = mkEnableOption "set framebuffer's depth" // { default = true; };
-
- settings = mkOption {
- type = toml.type;
- default = {};
- description = "Plato Settings.toml";
- };
-
- css = mkOption {
- default = {};
- type = with types; attrsOf lines;
- description = ''
- css style sheets.
- Only use this for epub-user dictionary-user html-user
- '';
- };
-
- scripts = mkOption {
- default = {};
- type = with types; attrsOf lines;
- description = ''
- Only use this for wifi-post-up wifi-post-down wifi-pre-up wifi-pre-down.
- '';
- # apply = mapAttrs (_: text: ''
- # #!/bin/sh
-
- # ${text}
- # '')
- };
-
- dictionaries = mkOption {
- type = with types; listOf package;
- default = [];
- };
-
- allDictionaries = mkOption {
- type = types.package;
- readOnly = true;
- internal = true;
- default = pkgs.runCommand "PlatoDictionaries" {} (''
- mkdir -p $out
- '' + concatMapStringsSep "\n" (pkg: ''
- find ${pkg}/share/dictd/ -type f -regex '.*\.\(dict\(\.dz\)?\|index\)' -exec cp -v {} $out/ \;
- '') cfg.dictionaries
- );
-
- };
-
- fonts = mkOption {
- type = with types; listOf package;
- default = [];
- };
-
- allFonts = mkOption {
- type = types.package;
- readOnly = true;
- internal = true;
- default = pkgs.runCommand "PlatoFonts" {} (''
- mkdir -p $out
- '' + concatMapStringsSep "\n" (pkg: ''
- find ${pkg}/share/fonts/truetype/ -type f -regex '.*\.\(ttf\|otf\)' -exec cp -v {} $out/ \;
- '') cfg.fonts
- );
-
- };
- };
-
- config = mkIf cfg.enable {
- plato = {
- config = concatStringsSep "\n\n" (
- optional (!cfg.convertDictionaries) ''
- unset PLATO_CONVERT_DICTIONARIES
- ''
- ++
- optional (!cfg.setFramebufferDepth) ''
- unset PLATO_SET_FRAMEBUFFER_DEPTH
- ''
- ++
- optional (!cfg.hyphenation) ''
- [ -d hyphenation-patterns ] && rm -rf hyphenation-patterns
- ''
- );
- file = mkMerge [
- (mkIf (cfg.settings != {}) {
- "Settings.toml".source = toml.generate "Settings.toml" cfg.settings;
- })
-
- (mkIf (cfg.config != "") {
- "config.sh".text = cfg.config;
- })
-
- (mapAttrs' (n: text:
- let
- n1 = if hasPrefix "css/" n then n else "css/${n}";
- name = if hasSuffix ".css" n1 then n1 else "{n1}.css";
- in {
- inherit name;
- value = { inherit text; };
- }) cfg.css)
-
- (mapAttrs' (n: t:
- let
- n1 = if hasPrefix "scripts/" n then n else "scripts/${n}";
- name = if hasSuffix ".sh" n1 then n1 else "${n1}.sh";
- text = if hasPrefix "#!/" t then t else "#!/bin/sh\n\n${t}";
- in {
- inherit name;
- value = { inherit text; };
- }) cfg.scripts)
-
- {
- dictionaries = {
- # directory = true;
- source = cfg.allDictionaries;
- };
- fonts = {
- # directory = true;
- source = cfg.allFonts;
- };
- }
- ];
-
- manifest = {
- "config-sample.sh".mergeTool = _: _: "echo 'not copying config-sample.sh'";
- "Settings-sample.toml".mergeTool = _: _: "echo 'not copying Settings-sample.toml'";
- };
- };
-
- # file = mapAttrs' (n: v: {
- # name = "plato-${n}";
- # value = v // {
- # target = "${cfg.path}/${v.target}";
- # };
- # }) cfg.file;
-
- # manifest = mapAttrs' (n: v: {
- # name = "plato-${n}";
- # value = v // {
- # targets = map (x: "${cfg.path}/${x}") v.targets;
- # };
- # }) cfg.manifest;
-
- nickel.menu.item = mkIf cfg.nickelEntry {
- plato = singleton {
- location = "main";
- label = "Plato";
- action = "cmd_spawn";
- arg = [
- "quiet"
- "exec ${cfg.devPath}/plato.sh"
- ];
- };
- };
-
- };
-}