mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 19:46: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/rbenv.nix
|
||||||
./programs/wallust.nix
|
./programs/wallust.nix
|
||||||
./programs/watson.nix
|
./programs/watson.nix
|
||||||
|
./programs/waveterm.nix
|
||||||
./programs/waylogout.nix
|
./programs/waylogout.nix
|
||||||
./programs/waybar.nix
|
./programs/waybar.nix
|
||||||
./programs/wayprompt.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/vscode
|
||||||
./modules/programs/wallust
|
./modules/programs/wallust
|
||||||
./modules/programs/watson
|
./modules/programs/watson
|
||||||
|
./modules/programs/waveterm
|
||||||
./modules/programs/wezterm
|
./modules/programs/wezterm
|
||||||
./modules/programs/yazi
|
./modules/programs/yazi
|
||||||
./modules/programs/zed-editor
|
./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