From 9676e8a52a177d80c8a42f66566362a6d74ecf78 Mon Sep 17 00:00:00 2001 From: Miku B Date: Sat, 19 Apr 2025 14:05:58 +0000 Subject: [PATCH] inori: init module (#6289) --- modules/lib/maintainers.nix | 6 ++ modules/misc/news/2025-04-18_10-58-18.nix | 9 +++ modules/modules.nix | 1 + modules/programs/inori.nix | 58 ++++++++++++++++++ tests/default.nix | 1 + .../modules/programs/inori/default-config.nix | 9 +++ tests/modules/programs/inori/default.nix | 4 ++ tests/modules/programs/inori/full-config.nix | 59 +++++++++++++++++++ tests/modules/programs/inori/full-config.toml | 32 ++++++++++ 9 files changed, 179 insertions(+) create mode 100644 modules/misc/news/2025-04-18_10-58-18.nix create mode 100644 modules/programs/inori.nix create mode 100644 tests/modules/programs/inori/default-config.nix create mode 100644 tests/modules/programs/inori/default.nix create mode 100644 tests/modules/programs/inori/full-config.nix create mode 100644 tests/modules/programs/inori/full-config.toml diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index 82f564d95..0bd0d2d2c 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -762,4 +762,10 @@ github = "LesVu"; githubId = 66196443; }; + lunahd = { + name = "Miku B"; + email = "lunab08@proton.me"; + github = "miku4k"; + githubId = 89653242; + }; } diff --git a/modules/misc/news/2025-04-18_10-58-18.nix b/modules/misc/news/2025-04-18_10-58-18.nix new file mode 100644 index 000000000..ce8aabd81 --- /dev/null +++ b/modules/misc/news/2025-04-18_10-58-18.nix @@ -0,0 +1,9 @@ +{ + time = "2025-04-18T08:58:18+00:00"; + condition = true; + message = '' + A new module is available: 'programs.inori'. + + inori is a client for the Music Player Daemon (MPD) + ''; +} diff --git a/modules/modules.nix b/modules/modules.nix index ed5220ba1..957ebddf0 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -140,6 +140,7 @@ let ./programs/iamb.nix ./programs/imv.nix ./programs/info.nix + ./programs/inori.nix ./programs/ion.nix ./programs/irssi.nix ./programs/java.nix diff --git a/modules/programs/inori.nix b/modules/programs/inori.nix new file mode 100644 index 000000000..fe94a8a2f --- /dev/null +++ b/modules/programs/inori.nix @@ -0,0 +1,58 @@ +{ + lib, + config, + pkgs, + ... +}: + +let + inherit (lib) + mkOption + mkEnableOption + mkPackageOption + literalExpression + mkIf + hm + maintainers + ; + + cfg = config.programs.inori; + + tomlFormat = pkgs.formats.toml { }; +in +{ + meta.maintainers = [ + hm.maintainers.lunahd + maintainers.stephen-huan + ]; + + options.programs.inori = { + enable = mkEnableOption "inori"; + + package = mkPackageOption pkgs "inori" { nullable = true; }; + + settings = mkOption { + type = tomlFormat.type; + default = { }; + example = literalExpression '' + { + seek_seconds = 10; + dvorak_keybindings = true; + } + ''; + description = '' + Configuration written to {file}`$XDG_CONFIG_HOME/inori/config.toml`. + + See for available options. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + + xdg.configFile."inori/config.toml" = mkIf (cfg.settings != { }) { + source = tomlFormat.generate "config.toml" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index a2fa85408..c8f0c83e6 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -380,6 +380,7 @@ import nmtSrc { ./modules/programs/htop ./modules/programs/hyfetch ./modules/programs/i3status + ./modules/programs/inori ./modules/programs/irssi ./modules/programs/jujutsu ./modules/programs/joplin-desktop diff --git a/tests/modules/programs/inori/default-config.nix b/tests/modules/programs/inori/default-config.nix new file mode 100644 index 000000000..80d61506e --- /dev/null +++ b/tests/modules/programs/inori/default-config.nix @@ -0,0 +1,9 @@ +{ + config = { + programs.inori.enable = true; + + nmt.script = '' + assertPathNotExists home-files/.config/inori/config.toml + ''; + }; +} diff --git a/tests/modules/programs/inori/default.nix b/tests/modules/programs/inori/default.nix new file mode 100644 index 000000000..1d03da8ba --- /dev/null +++ b/tests/modules/programs/inori/default.nix @@ -0,0 +1,4 @@ +{ + inori-default-config = ./default-config.nix; + inori-full-config = ./full-config.nix; +} diff --git a/tests/modules/programs/inori/full-config.nix b/tests/modules/programs/inori/full-config.nix new file mode 100644 index 000000000..5e2c33f3a --- /dev/null +++ b/tests/modules/programs/inori/full-config.nix @@ -0,0 +1,59 @@ +{ + config = { + programs.inori = { + enable = true; + settings = { + seek_seconds = 10; + dvorak_keybindings = true; + keybindings = { + toggle_playpause = [ + "p" + "" + ]; + next_song = [ + ">" + "C-n" + ]; + previous_song = [ + "<" + "C-p" + ]; + seek = ""; + seek_backwards = ""; + + up = "k"; + down = "j"; + left = "h"; + right = "l"; + top = [ + "g g" + "" + ]; + bottom = [ + "G" + "" + ]; + quit = [ + "" + "q" + ]; + }; + theme = { + status_artist.fg = "#fab387"; + status_album.fg = "#89b4fa"; + status_title = { + fg = "#cba6f7"; + add_modifier = "BOLD"; + }; + album.fg = "#89b4fa"; + playing.fg = "#a6e3a1"; + }; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/inori/config.toml + assertFileContent home-files/.config/inori/config.toml ${./full-config.toml} + ''; + }; +} diff --git a/tests/modules/programs/inori/full-config.toml b/tests/modules/programs/inori/full-config.toml new file mode 100644 index 000000000..f70e1c433 --- /dev/null +++ b/tests/modules/programs/inori/full-config.toml @@ -0,0 +1,32 @@ +dvorak_keybindings = true +seek_seconds = 10 + +[keybindings] +bottom = ["G", ""] +down = "j" +left = "h" +next_song = [">", "C-n"] +previous_song = ["<", "C-p"] +quit = ["", "q"] +right = "l" +seek = "" +seek_backwards = "" +toggle_playpause = ["p", ""] +top = ["g g", ""] +up = "k" + +[theme.album] +fg = "#89b4fa" + +[theme.playing] +fg = "#a6e3a1" + +[theme.status_album] +fg = "#89b4fa" + +[theme.status_artist] +fg = "#fab387" + +[theme.status_title] +add_modifier = "BOLD" +fg = "#cba6f7"