diff --git a/modules/programs/formiko.nix b/modules/programs/formiko.nix new file mode 100644 index 000000000..327ca27b1 --- /dev/null +++ b/modules/programs/formiko.nix @@ -0,0 +1,53 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.formiko; + iniFormat = pkgs.formats.ini { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + options.programs.formiko = { + enable = mkEnableOption "formiko"; + package = mkPackageOption pkgs "formiko" { nullable = true; }; + settings = mkOption { + inherit (iniFormat) type; + default = { }; + example = { + main = { + preview = 0; + parser = "json"; + auto_scroll = true; + writer = "tiny"; + }; + + editor = { + period_save = true; + check_spelling = false; + auto_indent = false; + }; + }; + description = '' + Configuration settings for formiko. All the available options + can be found by looking at ~/.config/formiko.ini. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + xdg.configFile."formiko.ini" = mkIf (cfg.settings != { }) { + source = iniFormat.generate "formiko.ini" cfg.settings; + }; + }; +} diff --git a/tests/modules/programs/formiko/default.nix b/tests/modules/programs/formiko/default.nix new file mode 100644 index 000000000..702b56829 --- /dev/null +++ b/tests/modules/programs/formiko/default.nix @@ -0,0 +1,5 @@ +{ lib, pkgs, ... }: + +lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { + formiko-example-config = ./example-config.nix; +} diff --git a/tests/modules/programs/formiko/example-config.nix b/tests/modules/programs/formiko/example-config.nix new file mode 100644 index 000000000..b34eefe6d --- /dev/null +++ b/tests/modules/programs/formiko/example-config.nix @@ -0,0 +1,25 @@ +{ + programs.formiko = { + enable = true; + settings = { + main = { + preview = 0; + parser = "json"; + auto_scroll = true; + writer = "tiny"; + }; + + editor = { + period_save = true; + check_spelling = false; + auto_indent = false; + }; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/formiko.ini + assertFileContent home-files/.config/formiko.ini \ + ${./formiko.ini} + ''; +} diff --git a/tests/modules/programs/formiko/formiko.ini b/tests/modules/programs/formiko/formiko.ini new file mode 100644 index 000000000..3e386137e --- /dev/null +++ b/tests/modules/programs/formiko/formiko.ini @@ -0,0 +1,10 @@ +[editor] +auto_indent=false +check_spelling=false +period_save=true + +[main] +auto_scroll=true +parser=json +preview=0 +writer=tiny