From 7969ed8baac8363b32775c5f55e132668bab8123 Mon Sep 17 00:00:00 2001 From: awwpotato Date: Sun, 13 Jul 2025 15:51:03 -0700 Subject: [PATCH] gurk-rs: add module (#7466) --- .github/labeler.yml | 2 + modules/programs/gurk-rs.nix | 55 +++++++++++++++++++ .../modules/programs/gurk-rs/basic-config.nix | 46 ++++++++++++++++ tests/modules/programs/gurk-rs/default.nix | 3 + 4 files changed, 106 insertions(+) create mode 100644 modules/programs/gurk-rs.nix create mode 100644 tests/modules/programs/gurk-rs/basic-config.nix create mode 100644 tests/modules/programs/gurk-rs/default.nix diff --git a/.github/labeler.yml b/.github/labeler.yml index cd698dc31..de310a412 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -108,6 +108,7 @@ - modules/programs/fastfetch.nix - modules/programs/fd.nix - modules/programs/fzf.nix + - modules/programs/gurk-rs.nix - modules/programs/hstr.nix - modules/programs/htop.nix - modules/programs/hwatch.nix @@ -328,6 +329,7 @@ - modules/programs/chawan.nix - modules/programs/discocss.nix - modules/programs/element-desktop.nix + - modules/programs/gurk-rs.nix - modules/programs/halloy.nix - modules/programs/havoc.nix - modules/programs/hexchat.nix diff --git a/modules/programs/gurk-rs.nix b/modules/programs/gurk-rs.nix new file mode 100644 index 000000000..b898f1302 --- /dev/null +++ b/modules/programs/gurk-rs.nix @@ -0,0 +1,55 @@ +{ + lib, + pkgs, + config, + ... +}: +let + tomlFormat = pkgs.formats.toml { }; + cfg = config.programs.gurk-rs; +in +{ + meta.maintainers = [ lib.maintainers.awwpotato ]; + + options.programs.gurk-rs = { + enable = lib.mkEnableOption "gurk-rs"; + package = lib.mkPackageOption pkgs "gurk-rs" { nullable = true; }; + + settings = lib.mkOption { + inherit (tomlFormat) type; + default = { }; + description = '' + Configuration written to {file}`$XDG_CONFIG_HOME/.config/gurk/gurk.toml` + or {file}`Library/Application Support/gurk/gurk.toml`. Options are + declared at . + Note that `data_path` and `signal_db_path` should be set. + ''; + example = lib.literalExpression '' + { + data_path = "/home/USERNAME/.local/share/gurk/gurk.data.json"; + signal_db_path = "/home/USERNAME/.local/share/gurk/signal-db"; + first_name_only = false; + show_receipts = true; + notifications = true; + bell = true; + colored_messages = false; + default_keybindings = true; + user = { + name = "MYNAME"; + phone_number = "MYNUMBER"; + }; + keybindings = { }; + } + ''; + }; + }; + + config = lib.mkIf cfg.enable { + home.package = lib.mkIf (cfg.package != null) [ cfg.package ]; + + home.file."${ + if pkgs.stdenv.hostPlatform.isDarwin then "Library/Application Support" else config.xdg.configHome + }/gurk/gurk.toml".source = + lib.mkIf (cfg.settings != { }) (tomlFormat.generate "gurk-config" cfg.settings); + }; +} diff --git a/tests/modules/programs/gurk-rs/basic-config.nix b/tests/modules/programs/gurk-rs/basic-config.nix new file mode 100644 index 000000000..35f0d75e5 --- /dev/null +++ b/tests/modules/programs/gurk-rs/basic-config.nix @@ -0,0 +1,46 @@ +{ pkgs, ... }: +{ + programs.gurk-rs = { + enable = true; + settings = { + first_name_only = false; + show_receipts = true; + notifications = true; + bell = true; + colored_messages = false; + default_keybindings = true; + user = { + name = "MYNAME"; + phone_number = "MYNUMBER"; + }; + keybindings = { }; + }; + }; + + nmt.script = + let + configFile = + if pkgs.stdenv.isDarwin then + "home-files/Library/Application\\ Support/gurk/gurk.toml" + else + "home-files/.config/gurk/gurk.toml"; + in + '' + assertFileExists ${configFile} + assertFileContent ${configFile} \ + ${pkgs.writeText "settings-expected" '' + bell = true + colored_messages = false + default_keybindings = true + first_name_only = false + notifications = true + show_receipts = true + + [keybindings] + + [user] + name = "MYNAME" + phone_number = "MYNUMBER" + ''} + ''; +} diff --git a/tests/modules/programs/gurk-rs/default.nix b/tests/modules/programs/gurk-rs/default.nix new file mode 100644 index 000000000..26a26a137 --- /dev/null +++ b/tests/modules/programs/gurk-rs/default.nix @@ -0,0 +1,3 @@ +{ + gurk-rs-basic-config = ./basic-config.nix; +}