treewide: begin restructuring the module tree

This commit is contained in:
raf 2024-04-07 17:16:08 +03:00
commit 7c730a78e5
No known key found for this signature in database
GPG key ID: 02D1DD3FA08B6B29
254 changed files with 749 additions and 664 deletions

View file

@ -0,0 +1,5 @@
{
imports = [
./neocord
];
}

View file

@ -0,0 +1,20 @@
{
config,
lib,
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.lua) toLuaObject;
cfg = config.vim.presence.neocord;
in {
config = mkIf cfg.enable {
vim.startPlugins = ["neocord"];
vim.luaConfigRC.neocord = entryAnywhere ''
-- Description of each option can be found in https://github.com/IogaMaster/neocord#lua
require("neocord").setup(${toLuaObject cfg.setupOpts})
'';
};
}

View file

@ -0,0 +1,6 @@
{
imports = [
./config.nix
./neocord.nix
];
}

View file

@ -0,0 +1,141 @@
{lib, ...}: let
inherit (lib.modules) mkRemovedOptionModule mkRenamedOptionModule;
inherit (lib.options) mkEnableOption mkOption literalExpression;
inherit (lib.types) bool int str enum nullOr listOf;
inherit (lib.nvim.types) mkPluginSetupOption;
in {
imports =
[
(mkRemovedOptionModule ["vim" "presence" "presence-nvim"] ''
The option vim.presence.presence-nvim has been deprecated in favor of the new neocord module.
Options provided by the plugin remain mostly the same, but manual migration is required.
Please see neocord documentation and the neovim-flake options for more info
'')
]
++ (map
(optName: mkRenamedOptionModule ["vim" "presence" "neocord" "rich_presence" optName] ["vim" "presence" "neocord" "setupOpts" optName])
["debounce_timeout" "blacklist" "show_time" "editing_text" "file_explorer_text" "git_commit_text" "plugin_manager_text" "reading_text" "workspace_text" "line_number_text" "terminal_text"])
++ (map
(optName: mkRenamedOptionModule ["vim" "presence" "neocord" optName] ["vim" "presence" "neocord" "setupOpts" optName])
["logo" "logo_tooltip" "main_image" "client_id" "log_level" "debounce_timeout" "blacklist" "show_time"]);
options.vim.presence.neocord = {
enable = mkEnableOption "neocord plugin for discord rich presence";
setupOpts = mkPluginSetupOption "neocord" {
logo = mkOption {
type = str; # TODO: can the default be documented better, maybe with an enum?
default = "auto";
description = ''
Logo to be displayed on the RPC item
This must be either "auto" or an URL to your image of choice
'';
};
logo_tooltip = mkOption {
type = str;
default = "The One True Text Editor";
description = "Text displayed when hovering over the Neovim image";
};
main_image = mkOption {
type = enum ["language" "logo"];
default = "language";
description = "Main image to be displayed";
};
client_id = mkOption {
type = str;
default = "1157438221865717891";
description = "Client ID of the application";
};
log_level = mkOption {
type = nullOr (enum ["debug" "info" "warn" "error"]);
default = null;
description = "Log level to be used by the plugin";
};
debounce_timeout = mkOption {
type = int;
default = 10;
description = "Number of seconds to debounce events";
};
auto_update = mkOption {
type = bool;
default = true;
description = "Automatically update the presence";
};
enable_line_number = mkOption {
type = bool;
default = false;
description = "Show line number on the RPC item";
};
show_time = mkOption {
type = bool;
default = true;
description = "Show time on the RPC item";
};
blacklist = mkOption {
type = listOf str;
default = [];
example = literalExpression ''["Alpha"]'';
description = "List of filetypes to ignore";
};
editing_text = mkOption {
type = str;
default = "Editing %s";
description = "Text displayed when editing a file";
};
file_explorer_text = mkOption {
type = str;
default = "Browsing %s";
description = "Text displayed when browsing files";
};
git_commit_text = mkOption {
type = str;
default = "Committing changes";
description = "Text displayed when committing changes";
};
plugin_manager_text = mkOption {
type = str;
default = "Managing plugins";
description = "Text displayed when managing plugins";
};
reading_text = mkOption {
type = str;
default = "Reading %s";
description = "Text displayed when reading a file";
};
workspace_text = mkOption {
type = str;
default = "Working on %s";
description = "Text displayed when working on a project";
};
line_number_text = mkOption {
type = str;
default = "Line %s out of %s";
description = "Text displayed when showing line number";
};
terminal_text = mkOption {
type = str;
default = "Working on the terminal";
description = "Text displayed when working on the terminal";
};
};
};
}