mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 11:36:05 +01:00
waveterm: add module (#7004)
This commit is contained in:
parent
5d428b68dd
commit
8d2ee39915
8 changed files with 256 additions and 0 deletions
|
|
@ -303,6 +303,7 @@ let
|
|||
./programs/rbenv.nix
|
||||
./programs/wallust.nix
|
||||
./programs/watson.nix
|
||||
./programs/waveterm.nix
|
||||
./programs/waylogout.nix
|
||||
./programs/waybar.nix
|
||||
./programs/wayprompt.nix
|
||||
|
|
|
|||
120
modules/programs/waveterm.nix
Normal file
120
modules/programs/waveterm.nix
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib)
|
||||
mkIf
|
||||
mkEnableOption
|
||||
mkPackageOption
|
||||
mkOption
|
||||
;
|
||||
|
||||
cfg = config.programs.waveterm;
|
||||
|
||||
formatter = pkgs.formats.json { };
|
||||
in
|
||||
{
|
||||
meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ];
|
||||
|
||||
options.programs.waveterm = {
|
||||
enable = mkEnableOption "waveterm";
|
||||
package = mkPackageOption pkgs "waveterm" { nullable = true; };
|
||||
settings = mkOption {
|
||||
type = formatter.type;
|
||||
default = { };
|
||||
example = {
|
||||
"app:dismissarchitecturewarning" = false;
|
||||
"autoupdate:enabled" = false;
|
||||
"term:fontsize" = 12.0;
|
||||
"term:fontfamily" = "JuliaMono";
|
||||
"term:theme" = "my-custom-theme";
|
||||
"term:transparency" = 0.5;
|
||||
"window:showhelp" = false;
|
||||
"window:blur" = true;
|
||||
"window:opacity" = 0.5;
|
||||
"window:bgcolor" = "#000000";
|
||||
"window:reducedmotion" = true;
|
||||
};
|
||||
description = ''
|
||||
Configuration settings for WaveTerm. All available options can be
|
||||
found here: <\https://docs.waveterm.dev/config#configuration-keys>.
|
||||
'';
|
||||
};
|
||||
|
||||
themes = mkOption {
|
||||
type = formatter.type;
|
||||
default = { };
|
||||
example = {
|
||||
default-dark = {
|
||||
"display:name" = "Default Dark";
|
||||
"display:order" = 1;
|
||||
black = "#757575";
|
||||
red = "#cc685c";
|
||||
green = "#76c266";
|
||||
yellow = "#cbca9b";
|
||||
blue = "#85aacb";
|
||||
magenta = "#cc72ca";
|
||||
cyan = "#74a7cb";
|
||||
white = "#c1c1c1";
|
||||
brightBlack = "#727272";
|
||||
brightRed = "#cc9d97";
|
||||
brightGreen = "#a3dd97";
|
||||
brightYellow = "#cbcaaa";
|
||||
brightBlue = "#9ab6cb";
|
||||
brightMagenta = "#cc8ecb";
|
||||
brightCyan = "#b7b8cb";
|
||||
brightWhite = "#f0f0f0";
|
||||
gray = "#8b918a";
|
||||
cmdtext = "#f0f0f0";
|
||||
foreground = "#c1c1c1";
|
||||
selectionBackground = "";
|
||||
background = "#00000077";
|
||||
cursorAccent = "";
|
||||
};
|
||||
};
|
||||
description = ''
|
||||
User defined terminal themes. All the details about available options and
|
||||
format can be found here: <https://docs.waveterm.dev/config#terminal-theming>.
|
||||
'';
|
||||
};
|
||||
|
||||
bookmarks = mkOption {
|
||||
type = formatter.type;
|
||||
default = { };
|
||||
example = {
|
||||
"bookmark@google" = {
|
||||
url = "https://www.google.com";
|
||||
title = "Google";
|
||||
};
|
||||
"bookmark@claude" = {
|
||||
url = "https://claude.ai";
|
||||
title = "Claude";
|
||||
};
|
||||
"bookmark@github" = {
|
||||
url = "https://github.com";
|
||||
title = "GitHub";
|
||||
};
|
||||
};
|
||||
description = ''
|
||||
Bookmark definitions for WaveTerm. Details about the format and the options
|
||||
can be found here: <https://docs.waveterm.dev/config#webbookmarks-configuration>.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = mkIf (cfg.package != null) [ cfg.package ];
|
||||
xdg.configFile."waveterm/settings.json" = mkIf (cfg.settings != { }) {
|
||||
source = formatter.generate "waveterm-settings" cfg.settings;
|
||||
};
|
||||
xdg.configFile."waveterm/termthemes.json" = mkIf (cfg.themes != { }) {
|
||||
source = formatter.generate "waveterm-themes" cfg.themes;
|
||||
};
|
||||
xdg.configFile."waveterm/bookmarks.json" = mkIf (cfg.settings != { }) {
|
||||
source = formatter.generate "waveterm-bookmarks" cfg.bookmarks;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -313,6 +313,7 @@ import nmtSrc {
|
|||
./modules/programs/vscode
|
||||
./modules/programs/wallust
|
||||
./modules/programs/watson
|
||||
./modules/programs/waveterm
|
||||
./modules/programs/wezterm
|
||||
./modules/programs/yazi
|
||||
./modules/programs/zed-editor
|
||||
|
|
|
|||
14
tests/modules/programs/waveterm/cfg/bookmarks.json
Normal file
14
tests/modules/programs/waveterm/cfg/bookmarks.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"bookmark@claude": {
|
||||
"title": "Claude",
|
||||
"url": "https://claude.ai"
|
||||
},
|
||||
"bookmark@github": {
|
||||
"title": "GitHub",
|
||||
"url": "https://github.com"
|
||||
},
|
||||
"bookmark@google": {
|
||||
"title": "Google",
|
||||
"url": "https://www.google.com"
|
||||
}
|
||||
}
|
||||
13
tests/modules/programs/waveterm/cfg/settings.json
Normal file
13
tests/modules/programs/waveterm/cfg/settings.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"app:dismissarchitecturewarning": false,
|
||||
"autoupdate:enabled": false,
|
||||
"term:fontfamily": "JuliaMono",
|
||||
"term:fontsize": 12.0,
|
||||
"term:theme": "my-custom-theme",
|
||||
"term:transparency": 0.5,
|
||||
"window:bgcolor": "#000000",
|
||||
"window:blur": true,
|
||||
"window:opacity": 0.5,
|
||||
"window:reducedmotion": true,
|
||||
"window:showhelp": false
|
||||
}
|
||||
28
tests/modules/programs/waveterm/cfg/termthemes.json
Normal file
28
tests/modules/programs/waveterm/cfg/termthemes.json
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"default-dark": {
|
||||
"background": "#00000077",
|
||||
"black": "#757575",
|
||||
"blue": "#85aacb",
|
||||
"brightBlack": "#727272",
|
||||
"brightBlue": "#9ab6cb",
|
||||
"brightCyan": "#b7b8cb",
|
||||
"brightGreen": "#a3dd97",
|
||||
"brightMagenta": "#cc8ecb",
|
||||
"brightRed": "#cc9d97",
|
||||
"brightWhite": "#f0f0f0",
|
||||
"brightYellow": "#cbcaaa",
|
||||
"cmdtext": "#f0f0f0",
|
||||
"cursorAccent": "",
|
||||
"cyan": "#74a7cb",
|
||||
"display:name": "Default Dark",
|
||||
"display:order": 1,
|
||||
"foreground": "#c1c1c1",
|
||||
"gray": "#8b918a",
|
||||
"green": "#76c266",
|
||||
"magenta": "#cc72ca",
|
||||
"red": "#cc685c",
|
||||
"selectionBackground": "",
|
||||
"white": "#c1c1c1",
|
||||
"yellow": "#cbca9b"
|
||||
}
|
||||
}
|
||||
1
tests/modules/programs/waveterm/default.nix
Normal file
1
tests/modules/programs/waveterm/default.nix
Normal file
|
|
@ -0,0 +1 @@
|
|||
{ waveterm-example-config = ./example-config.nix; }
|
||||
78
tests/modules/programs/waveterm/example-config.nix
Normal file
78
tests/modules/programs/waveterm/example-config.nix
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
{
|
||||
programs.waveterm = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"app:dismissarchitecturewarning" = false;
|
||||
"autoupdate:enabled" = false;
|
||||
"term:fontsize" = 12.0;
|
||||
"term:fontfamily" = "JuliaMono";
|
||||
"term:theme" = "my-custom-theme";
|
||||
"term:transparency" = 0.5;
|
||||
"window:showhelp" = false;
|
||||
"window:blur" = true;
|
||||
"window:opacity" = 0.5;
|
||||
"window:bgcolor" = "#000000";
|
||||
"window:reducedmotion" = true;
|
||||
};
|
||||
|
||||
themes = {
|
||||
default-dark = {
|
||||
"display:name" = "Default Dark";
|
||||
"display:order" = 1;
|
||||
black = "#757575";
|
||||
red = "#cc685c";
|
||||
green = "#76c266";
|
||||
yellow = "#cbca9b";
|
||||
blue = "#85aacb";
|
||||
magenta = "#cc72ca";
|
||||
cyan = "#74a7cb";
|
||||
white = "#c1c1c1";
|
||||
brightBlack = "#727272";
|
||||
brightRed = "#cc9d97";
|
||||
brightGreen = "#a3dd97";
|
||||
brightYellow = "#cbcaaa";
|
||||
brightBlue = "#9ab6cb";
|
||||
brightMagenta = "#cc8ecb";
|
||||
brightCyan = "#b7b8cb";
|
||||
brightWhite = "#f0f0f0";
|
||||
gray = "#8b918a";
|
||||
cmdtext = "#f0f0f0";
|
||||
foreground = "#c1c1c1";
|
||||
selectionBackground = "";
|
||||
background = "#00000077";
|
||||
cursorAccent = "";
|
||||
};
|
||||
};
|
||||
|
||||
bookmarks = {
|
||||
"bookmark@google" = {
|
||||
url = "https://www.google.com";
|
||||
title = "Google";
|
||||
};
|
||||
"bookmark@claude" = {
|
||||
url = "https://claude.ai";
|
||||
title = "Claude";
|
||||
};
|
||||
"bookmark@github" = {
|
||||
url = "https://github.com";
|
||||
title = "GitHub";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.config/waveterm/settings.json
|
||||
assertFileExists home-files/.config/waveterm/bookmarks.json
|
||||
assertFileExists home-files/.config/waveterm/termthemes.json
|
||||
|
||||
assertFileContent home-files/.config/waveterm/settings.json \
|
||||
${./cfg/settings.json}
|
||||
|
||||
assertFileContent home-files/.config/waveterm/bookmarks.json \
|
||||
${./cfg/bookmarks.json}
|
||||
|
||||
assertFileContent home-files/.config/waveterm/termthemes.json \
|
||||
${./cfg/termthemes.json}
|
||||
|
||||
'';
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue