{ config, lib, pkgs, ... }: with lib; let cfg = config.nixfiles.modules.profiles.dev.sql; in { options.nixfiles.modules.profiles.dev.sql.enable = mkEnableOption "SQL stuff and database management tools" // { default = config.nixfiles.modules.profiles.dev.enable; }; config = mkIf cfg.enable { hm = { home.packages = with pkgs; [ pgcli litecli ]; xdg = let mainSection = { destructive_warning = "True"; enable_pager = "True"; keyword_casing = "auto"; less_chatty = "True"; log_file = "/dev/null"; log_level = "CRITICAL"; multi_line = "False"; syntax_style = "default"; table_format = "fancy_grid"; }; colorsSection = with config.colors.withHashtag; { "arg-toolbar" = "noinherit bold"; "arg-toolbar.text" = "nobold"; "bottom-toolbar" = "bg:${base01} ${base06}"; "bottom-toolbar.off" = "bg:${base01} ${base02}"; "bottom-toolbar.on" = "bg:${base01} ${base07}"; "bottom-toolbar.transaction.failed" = "bg:${base01} ${base08} bold"; "bottom-toolbar.transaction.valid" = "bg:${base01} ${base0B} bold"; "completion-menu.completion" = "bg:${base01} ${base06}"; "completion-menu.completion.current" = "bg:${base06} ${base01}"; "completion-menu.meta.completion" = "bg:${base01} ${base13}"; "completion-menu.meta.completion.current" = "bg:${base09} ${base01}"; "completion-menu.multi-column-meta" = "bg:${base09} ${base01}"; "scrollbar" = "bg:${base01}"; "scrollbar.arrow" = "bg:${base01}"; "search" = "bg:${base17} ${base07}"; "search-toolbar" = "noinherit bold"; "search-toolbar.text" = "nobold"; "search.current" = "bg:${base14} ${base07}"; "selected" = "bg:${base0D} ${base07}"; "system-toolbar" = "noinherit bold"; }; mkCliConfig = { name, custom }: { "${name}/config" = { text = generators.toINI { } { main = mainSection // custom; colors = mapAttrs (_: v: "'${v}'") colorsSection; }; }; }; in { configFile = mkMerge ( map mkCliConfig [ { name = "pgcli"; custom = { prompt = "'\\u@\\h:\\d> '"; multi_line_mode = "psql"; on_error = "STOP"; auto_expand = "True"; expand = "True"; keyring = "False"; vi = "True"; casing_file = "/dev/null"; history_file = "/dev/null"; }; } { name = "litecli"; custom = { prompt = "'\\d> '"; prompt_continuation = "'-> '"; auto_vertical_output = "True"; key_bindings = "vi"; audit_log = "/dev/null"; }; } ] ); }; }; }; }