From e0026e16a5beff80f641e4edca318e654baa5a9b Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Wed, 1 Mar 2023 15:57:55 +0100 Subject: [PATCH] fuzzel: add module --- .github/CODEOWNERS | 3 ++ modules/misc/news.nix | 8 +++ modules/modules.nix | 1 + modules/programs/fuzzel.nix | 52 +++++++++++++++++++ tests/default.nix | 1 + tests/modules/programs/fuzzel/default.nix | 4 ++ .../programs/fuzzel/empty-settings.nix | 11 ++++ .../fuzzel/example-settings-expected.ini | 6 +++ .../programs/fuzzel/example-settings.nix | 23 ++++++++ 9 files changed, 109 insertions(+) create mode 100644 modules/programs/fuzzel.nix create mode 100644 tests/modules/programs/fuzzel/default.nix create mode 100644 tests/modules/programs/fuzzel/empty-settings.nix create mode 100644 tests/modules/programs/fuzzel/example-settings-expected.ini create mode 100644 tests/modules/programs/fuzzel/example-settings.nix diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 50e538e47..a09f085c2 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -117,6 +117,9 @@ Makefile @thiagokokada /modules/services/fusuma.nix @iosmanthus /tests/modules/services/fusuma @iosmanthus +/modules/programs/fuzzel.nix @Scrumplex +/tests/modules/programs/fuzzel @Scrumplex + /modules/programs/gallery-dl.nix @marsam /tests/modules/programs/gallery-dl @marsam diff --git a/modules/misc/news.nix b/modules/misc/news.nix index ac7f914bd..fa033a510 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1015,6 +1015,14 @@ in A new module is available: 'programs.translate-shell'. ''; } + + { + time = "2023-05-13T13:51:18+00:00"; + condition = hostPlatform.isLinux; + message = '' + A new module is available: 'programs.fuzzel'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index ddc32535b..91b8bf0b3 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -76,6 +76,7 @@ let ./programs/firefox.nix ./programs/fish.nix ./programs/foot.nix + ./programs/fuzzel.nix ./programs/fzf.nix ./programs/gallery-dl.nix ./programs/getmail.nix diff --git a/modules/programs/fuzzel.nix b/modules/programs/fuzzel.nix new file mode 100644 index 000000000..aff97cf1e --- /dev/null +++ b/modules/programs/fuzzel.nix @@ -0,0 +1,52 @@ +{ config, lib, pkgs, ... }: + +let + + inherit (lib) literalExpression mkEnableOption mkPackageOption mkOption mkIf; + + cfg = config.programs.fuzzel; + + iniFormat = pkgs.formats.ini { }; + +in { + meta.maintainers = [ lib.maintainers.Scrumplex ]; + + options.programs.fuzzel = { + enable = mkEnableOption "fuzzel"; + + package = mkPackageOption pkgs "fuzzel" { }; + + settings = mkOption { + type = iniFormat.type; + default = { }; + example = literalExpression '' + { + main = { + terminal = "''${pkgs.foot}/bin/foot"; + layer = "overlay"; + }; + colors.background = "ffffffff"; + } + ''; + description = '' + Configuration for fuzzel written to + $XDG_CONFIG_HOME/fuzzel/fuzzel.ini. See + fuzzel.ini + 5 for a list of available options. + ''; + }; + }; + + config = mkIf cfg.enable { + assertions = [ + (lib.hm.assertions.assertPlatform "programs.fuzzel" pkgs + lib.platforms.linux) + ]; + + home.packages = [ cfg.package ]; + + xdg.configFile."fuzzel/fuzzel.ini" = mkIf (cfg.settings != { }) { + source = iniFormat.generate "fuzzel.ini" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 134f2324e..d744a5f7b 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -157,6 +157,7 @@ import nmt { ./modules/programs/borgmatic ./modules/programs/firefox ./modules/programs/foot + ./modules/programs/fuzzel ./modules/programs/getmail ./modules/programs/gnome-terminal ./modules/programs/hexchat diff --git a/tests/modules/programs/fuzzel/default.nix b/tests/modules/programs/fuzzel/default.nix new file mode 100644 index 000000000..702bd0d67 --- /dev/null +++ b/tests/modules/programs/fuzzel/default.nix @@ -0,0 +1,4 @@ +{ + fuzzel-example-settings = ./example-settings.nix; + fuzzel-empty-settings = ./empty-settings.nix; +} diff --git a/tests/modules/programs/fuzzel/empty-settings.nix b/tests/modules/programs/fuzzel/empty-settings.nix new file mode 100644 index 000000000..e14aad4f5 --- /dev/null +++ b/tests/modules/programs/fuzzel/empty-settings.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + programs.fuzzel.enable = true; + + test.stubs.fuzzel = { }; + + nmt.script = '' + assertPathNotExists home-files/.config/fuzzel + ''; +} diff --git a/tests/modules/programs/fuzzel/example-settings-expected.ini b/tests/modules/programs/fuzzel/example-settings-expected.ini new file mode 100644 index 000000000..8e9c8e58b --- /dev/null +++ b/tests/modules/programs/fuzzel/example-settings-expected.ini @@ -0,0 +1,6 @@ +[border] +width=6 + +[main] +dpi-aware=yes +font=Fira Code:size=11 diff --git a/tests/modules/programs/fuzzel/example-settings.nix b/tests/modules/programs/fuzzel/example-settings.nix new file mode 100644 index 000000000..3273af585 --- /dev/null +++ b/tests/modules/programs/fuzzel/example-settings.nix @@ -0,0 +1,23 @@ +{ config, ... }: + +{ + programs.fuzzel = { + enable = true; + package = config.lib.test.mkStubPackage { }; + + settings = { + main = { + font = "Fira Code:size=11"; + dpi-aware = "yes"; + }; + + border = { width = 6; }; + }; + }; + + nmt.script = '' + assertFileContent \ + home-files/.config/fuzzel/fuzzel.ini \ + ${./example-settings-expected.ini} + ''; +}