diff --git a/modules/modules.nix b/modules/modules.nix index 2b77cdb7f..7ec7550c2 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -158,6 +158,7 @@ let ./programs/keychain.nix ./programs/khal.nix ./programs/khard.nix + ./programs/kickoff.nix ./programs/kitty.nix ./programs/kodi.nix ./programs/kubecolor.nix diff --git a/modules/programs/kickoff.nix b/modules/programs/kickoff.nix new file mode 100644 index 000000000..9660acbe2 --- /dev/null +++ b/modules/programs/kickoff.nix @@ -0,0 +1,58 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.kickoff; + + formatter = pkgs.formats.toml { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + + options.programs.kickoff = { + enable = mkEnableOption "kickoff"; + package = mkPackageOption pkgs "kickoff" { nullable = true; }; + settings = mkOption { + type = formatter.type; + default = { }; + example = '' + padding = 100; + font_size = 32; + search.show_hidden_files = false; + history.decrease_interval = 48; + + keybinding = { + paste = [ "ctrl+v" ]; + execute = [ "KP_Enter" "Return" ]; + complete = [ "Tab" ]; + }; + ''; + description = '' + Configuration settings for kickoff. All the available options can be found + here: . + ''; + }; + }; + + config = mkIf cfg.enable { + assertions = [ + (lib.hm.assertions.assertPlatform "programs.kickoff" pkgs lib.platforms.linux) + ]; + + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + + xdg.configFile = mkIf (cfg.settings != { }) { + "kickoff/config.toml".source = formatter.generate "kickoff-config-toml" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 82e3e1909..657d61501 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -376,6 +376,7 @@ import nmtSrc { ./modules/programs/i3status-rust ./modules/programs/imv ./modules/programs/kodi + ./modules/programs/kickoff ./modules/programs/looking-glass-client ./modules/programs/mangohud ./modules/programs/ncmpcpp-linux diff --git a/tests/modules/programs/kickoff/default.nix b/tests/modules/programs/kickoff/default.nix new file mode 100644 index 000000000..742e1c5cd --- /dev/null +++ b/tests/modules/programs/kickoff/default.nix @@ -0,0 +1 @@ +{ kickoff-example-config = ./example-config.nix; } diff --git a/tests/modules/programs/kickoff/example-config.nix b/tests/modules/programs/kickoff/example-config.nix new file mode 100644 index 000000000..d2eb05379 --- /dev/null +++ b/tests/modules/programs/kickoff/example-config.nix @@ -0,0 +1,26 @@ +{ + programs.kickoff = { + enable = true; + settings = { + padding = 100; + font_size = 32; + search.show_hidden_files = false; + history.decrease_interval = 48; + + keybinding = { + paste = [ "ctrl+v" ]; + execute = [ + "KP_Enter" + "Return" + ]; + complete = [ "Tab" ]; + }; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/kickoff/config.toml + assertFileContent home-files/.config/kickoff/config.toml \ + ${./example-config.toml} + ''; +} diff --git a/tests/modules/programs/kickoff/example-config.toml b/tests/modules/programs/kickoff/example-config.toml new file mode 100644 index 000000000..27516803c --- /dev/null +++ b/tests/modules/programs/kickoff/example-config.toml @@ -0,0 +1,13 @@ +font_size = 32 +padding = 100 + +[history] +decrease_interval = 48 + +[keybinding] +complete = ["Tab"] +execute = ["KP_Enter", "Return"] +paste = ["ctrl+v"] + +[search] +show_hidden_files = false