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/plato.nix | 210 ------------------------------------------------------ 1 file changed, 210 deletions(-) delete mode 100644 modules/plato.nix (limited to 'modules/plato.nix') 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" - ]; - }; - }; - - }; -} -- cgit v1.2.3