{ 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.default.enable; }; config = mkIf cfg.enable { hm = { home.packages = with pkgs; [ dbeaver 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.colourScheme; { "arg-toolbar" = "noinherit bold"; "arg-toolbar.text" = "nobold"; "bottom-toolbar" = "bg:${black} ${white}"; "bottom-toolbar.off" = "bg:${black} ${brightBlack}"; "bottom-toolbar.on" = "bg:${black} ${brightWhite}"; "bottom-toolbar.transaction.failed" = "bg:${black} ${red} bold"; "bottom-toolbar.transaction.valid" = "bg:${black} ${green} bold"; "completion-menu.completion" = "bg:${black} ${white}"; "completion-menu.completion.current" = "bg:${white} ${black}"; "completion-menu.meta.completion" = "bg:${black} ${yellow}"; "completion-menu.meta.completion.current" = "bg:${yellow} ${black}"; "completion-menu.multi-column-meta" = "bg:${yellow} ${black}"; "scrollbar" = "bg:${black}"; "scrollbar.arrow" = "bg:${black}"; "search" = "bg:${magenta} ${brightWhite}"; "search-toolbar" = "noinherit bold"; "search-toolbar.text" = "nobold"; "search.current" = "bg:${green} ${brightWhite}"; "selected" = "bg:${blue} ${brightWhite}"; "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 = { auto_expand = "True"; casing_file = "/dev/null"; expand = "True"; history_file = "/dev/null"; keyring = "False"; multi_line_mode = "psql"; on_error = "STOP"; prompt = "'\\u@\\h:\\d> '"; vi = "True"; }; } { name = "litecli"; custom = { audit_log = "/dev/null"; key_bindings = "vi"; prompt = "'\\d> '"; prompt_continuation = "'-> '"; auto_vertical_output = "True"; }; } ]); }; }; }; }