diff --git a/modules/modules.nix b/modules/modules.nix index fbe0098d7..1171d32da 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -174,6 +174,7 @@ let ./programs/lapce.nix ./programs/lazydocker.nix ./programs/lazygit.nix + ./programs/lazysql.nix ./programs/ledger.nix ./programs/less.nix ./programs/lesspipe.nix diff --git a/modules/programs/lazysql.nix b/modules/programs/lazysql.nix new file mode 100644 index 000000000..bc6b6eb29 --- /dev/null +++ b/modules/programs/lazysql.nix @@ -0,0 +1,41 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.lazysql; + + formatter = pkgs.formats.toml { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + + options.programs.lazysql = { + enable = mkEnableOption "lazysql"; + package = mkPackageOption pkgs "lazysql" { nullable = true; }; + settings = mkOption { + type = formatter.type; + default = { }; + example = { }; + description = '' + Configuration settings for lazysql. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + xdg.configFile."lazysql/config.toml" = mkIf (cfg.settings != { }) { + source = formatter.generate "lazysql-config" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 4f4e10c19..332cbf59b 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -236,6 +236,7 @@ import nmtSrc { ./modules/programs/kubecolor ./modules/programs/lapce ./modules/programs/lazydocker + ./modules/programs/lazysql ./modules/programs/ledger ./modules/programs/less ./modules/programs/lesspipe diff --git a/tests/modules/programs/lazysql/default.nix b/tests/modules/programs/lazysql/default.nix new file mode 100644 index 000000000..e8f674e73 --- /dev/null +++ b/tests/modules/programs/lazysql/default.nix @@ -0,0 +1 @@ +{ lazysql-example-config = ./example-config.nix; } diff --git a/tests/modules/programs/lazysql/example-config.nix b/tests/modules/programs/lazysql/example-config.nix new file mode 100644 index 000000000..11d627737 --- /dev/null +++ b/tests/modules/programs/lazysql/example-config.nix @@ -0,0 +1,38 @@ +{ + programs.lazysql = { + enable = true; + settings = { + database = [ + { + Name = "Production database"; + Provider = "postgres"; + DBName = "foo"; + URL = "postgres://postgres:urlencodedpassword@localhost:$${port}/foo"; + Commands = [ + { + Command = "ssh -tt remote-bastion -L $${port}:localhost:5432"; + WaitForPort = "$${port}"; + } + ]; + } + { + Name = "Development database"; + Provider = "postgres"; + DBName = "foo"; + URL = "postgres://postgres:urlencodedpassword@localhost:5432/foo"; + } + ]; + application = { + DefaultPageSize = 300; + DisableSidebar = false; + SidebarOverlay = false; + }; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/lazysql/config.toml + assertFileContent home-files/.config/lazysql/config.toml \ + ${./example-config.toml} + ''; +} diff --git a/tests/modules/programs/lazysql/example-config.toml b/tests/modules/programs/lazysql/example-config.toml new file mode 100644 index 000000000..75ec68bbb --- /dev/null +++ b/tests/modules/programs/lazysql/example-config.toml @@ -0,0 +1,19 @@ +[application] +DefaultPageSize = 300 +DisableSidebar = false +SidebarOverlay = false + +[[database]] +DBName = "foo" +Name = "Production database" +Provider = "postgres" +URL = "postgres://postgres:urlencodedpassword@localhost:$${port}/foo" +[[database.Commands]] +Command = "ssh -tt remote-bastion -L $${port}:localhost:5432" +WaitForPort = "$${port}" + +[[database]] +DBName = "foo" +Name = "Development database" +Provider = "postgres" +URL = "postgres://postgres:urlencodedpassword@localhost:5432/foo"