mirror of
https://github.com/js0ny/dotfiles.git
synced 2026-03-21 18:26:20 +00:00
cfg(readest): Add
This commit is contained in:
parent
7e0e7fcae8
commit
fe11cf7a65
8 changed files with 201 additions and 5 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -47,3 +47,6 @@ nvim-healthcheck.txt
|
||||||
private_pid
|
private_pid
|
||||||
private_security
|
private_security
|
||||||
private_fish_variables
|
private_fish_variables
|
||||||
|
|
||||||
|
# NixOS local secrets
|
||||||
|
nixcfgs/secrets/local.nix
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
tavily_api: ENC[AES256_GCM,data:2hdsutsj0mqytujPIF1t1gpfSE7ym4WV2/lDbdLUw4yyLv7Rfvgtww8=,iv:kIYZ7ETQtQzyf2ymsgSTrvOh00qLQt6715SEi3dqxt4=,tag:M4qTgeoMlcnfh7D418ppfQ==,type:str]
|
tavily_api: ENC[AES256_GCM,data:2hdsutsj0mqytujPIF1t1gpfSE7ym4WV2/lDbdLUw4yyLv7Rfvgtww8=,iv:kIYZ7ETQtQzyf2ymsgSTrvOh00qLQt6715SEi3dqxt4=,tag:M4qTgeoMlcnfh7D418ppfQ==,type:str]
|
||||||
openrouter_api: ENC[AES256_GCM,data:XmsmgAEdiYP90JHnKmdy/jzgaFhmoU/wdYqxahIZ3NMZshgGIWv/fq7apOH8bh+yTytiIMrOdGGP1LZRHWVMeTqoDnWAimpweA==,iv:m2qykUpt9qE4ZAIHzQ0qhFUqEhPG6TiuVZWK+kOP2fg=,tag:Jtr/s17DJMVW215sh2/6+Q==,type:str]
|
openrouter_api: ENC[AES256_GCM,data:XmsmgAEdiYP90JHnKmdy/jzgaFhmoU/wdYqxahIZ3NMZshgGIWv/fq7apOH8bh+yTytiIMrOdGGP1LZRHWVMeTqoDnWAimpweA==,iv:m2qykUpt9qE4ZAIHzQ0qhFUqEhPG6TiuVZWK+kOP2fg=,tag:Jtr/s17DJMVW215sh2/6+Q==,type:str]
|
||||||
anki_sync_key: ENC[AES256_GCM,data:58zVvhbW6DS+CaxYHBUh5w==,iv:f8XOGMHS72p8cEVuburgsWBOpkw+axNjyP09NR4P3lo=,tag:UZzrdhnEfxtxCZwviEM+4g==,type:str]
|
anki_sync_key: ENC[AES256_GCM,data:58zVvhbW6DS+CaxYHBUh5w==,iv:f8XOGMHS72p8cEVuburgsWBOpkw+axNjyP09NR4P3lo=,tag:UZzrdhnEfxtxCZwviEM+4g==,type:str]
|
||||||
|
openclaw_gateway_token: ENC[AES256_GCM,data:htTV/5GmsahHs+3N/L3Q1Kn2y0t0+kPMoH1P5z07xspnTwn+vxQ/QiR+1G506VM0y4Jm93tLk+sZRruLeaSFTw==,iv:mtid4CE2fyDadu2fePs4rcVLR35WUPiiRzuUA9GHWRw=,tag:ICW9ocQwgswwM/yrXMdC1A==,type:str]
|
||||||
|
openclaw_tgbot_token: ENC[AES256_GCM,data:9q3Q6oYNO6Vj3UryVoS8yDgrO6zrBV6vvXWx7gH3IlG6gVnJ5pqYFSfiyItUsg==,iv:9MBfBK/k/9J6PACvyyhhdCIGrVN0LDeg1viivSZJdaA=,tag:r4w+QkE30O2QraGeXvXySA==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age1z2km2vu3mw6usw8p2rhjzkugddmsvk0ypwjw76cscyy3ar3tnufqtrv3nu
|
- recipient: age1z2km2vu3mw6usw8p2rhjzkugddmsvk0ypwjw76cscyy3ar3tnufqtrv3nu
|
||||||
|
|
@ -21,7 +23,7 @@ sops:
|
||||||
MlBBYzA4bWkyOFNzWlFWbWhDMU9VSG8KJGAr3Gjg6+1OUC+d8+Yu+AW+zzfQ2MtX
|
MlBBYzA4bWkyOFNzWlFWbWhDMU9VSG8KJGAr3Gjg6+1OUC+d8+Yu+AW+zzfQ2MtX
|
||||||
7RzIvGv4R3YtAHlX79BcIT6XwGMXVIF86Fu2QOoU7u8o4wpyAt0CXA==
|
7RzIvGv4R3YtAHlX79BcIT6XwGMXVIF86Fu2QOoU7u8o4wpyAt0CXA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-11-23T15:05:53Z"
|
lastmodified: "2026-03-08T15:47:15Z"
|
||||||
mac: ENC[AES256_GCM,data:VBgIJR2RJpaB8sSO/BhNbBdU8QYk2csS07a4mCSBJGonuT9iO3mLr65uTI76uayZS/2uiDCYUMGR635IlBhAc8pvy/bif8FCheVNestUjJeppS44fjatS+Wz+i6hz3ED9ECpEFlgoqi31uG0hzPeECinVXKDZr3o0JJmw4s7ZM8=,iv:0D4YD8C0rtXmJ+Qv7rzMWUJ2CaUogP6sQk6GEJFpnSo=,tag:nlT55c7ikMqq2TImVp9cSA==,type:str]
|
mac: ENC[AES256_GCM,data:jzMalds3vg6mfWgktBKRXmGqh3VRLUXRAEwEMh6Q+NUzwm7j0rkqzs2Bz8W3bu7GNL4SQwiBnHCoEL/9E/6qLOzMbyOZmXyleRByUEUMSBGCJa25vhjGF9x3oPANksEhTLZ0N4MA3xak66CKU6c2z1DGjV5cU61e6g8kEd3pAKI=,iv:JNHZgygwKoVBrNPVc2ODT4Ai9vNAh5w4HYgJLlv9R4Q=,tag:wfmBTup5fV4JSA3BdoEzRQ==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.11.0
|
version: 3.12.1
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ in {
|
||||||
"com.qq.QQ"
|
"com.qq.QQ"
|
||||||
"com.tencent.WeChat"
|
"com.tencent.WeChat"
|
||||||
# "eu.betterbird.Betterbird"
|
# "eu.betterbird.Betterbird"
|
||||||
# "com.baidu.NetDisk"
|
"com.baidu.NetDisk"
|
||||||
# "com.discordapp.Discord"
|
# "com.discordapp.Discord"
|
||||||
"com.google.EarthPro"
|
"com.google.EarthPro"
|
||||||
"com.wps.Office"
|
"com.wps.Office"
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
review-heatmap
|
review-heatmap
|
||||||
# recolor # Use stylix
|
# recolor # Use stylix
|
||||||
];
|
];
|
||||||
sync = {
|
profiles."User 1".sync = {
|
||||||
autoSync = true;
|
autoSync = true;
|
||||||
autoSyncMediaMinutes = 15;
|
autoSyncMediaMinutes = 15;
|
||||||
username = "ankiweb.unusable450@passmail.net";
|
username = "ankiweb.unusable450@passmail.net";
|
||||||
|
|
|
||||||
140
nixcfgs/users/js0ny/programs/openclaw.nix
Normal file
140
nixcfgs/users/js0ny/programs/openclaw.nix
Normal file
|
|
@ -0,0 +1,140 @@
|
||||||
|
# OpenClaw - AI Gateway with Telegram/Discord Integration
|
||||||
|
# Documentation: https://github.com/openclaw/nix-openclaw
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# Import local machine-specific values (git-ignored)
|
||||||
|
# Create nixcfgs/secrets/local.nix with your Telegram User ID
|
||||||
|
localSecrets = import ../../../secrets/local.nix;
|
||||||
|
in {
|
||||||
|
programs.openclaw = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# Documents directory containing AGENTS.md, SOUL.md, TOOLS.md, etc.
|
||||||
|
# Located at ~/.local/share/openclaw-docs
|
||||||
|
documents = "${config.home.homeDirectory}/.local/share/openclaw-docs";
|
||||||
|
|
||||||
|
# Core gateway configuration
|
||||||
|
config = {
|
||||||
|
gateway = {
|
||||||
|
mode = "local"; # "local" or "remote"
|
||||||
|
auth = {
|
||||||
|
# Gateway authentication token (managed by sops-nix)
|
||||||
|
token = config.sops.secrets."OPENCLAW_GATEWAY_TOKEN".path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Communication channels
|
||||||
|
channels = {
|
||||||
|
telegram = {
|
||||||
|
# Get bot token from @BotFather on Telegram (managed by sops-nix)
|
||||||
|
tokenFile = config.sops.secrets."OPENCLAW_TGBOT_TOKEN".path;
|
||||||
|
|
||||||
|
# Your Telegram user ID - get from @userinfobot
|
||||||
|
# Imported from nixcfgs/secrets/local.nix (git-ignored)
|
||||||
|
allowFrom = lib.optionals (localSecrets.telegramUserId != 0) [
|
||||||
|
localSecrets.telegramUserId
|
||||||
|
];
|
||||||
|
|
||||||
|
# Group chat configuration
|
||||||
|
groups = {
|
||||||
|
"*" = {requireMention = true;}; # Default: require @mention in all groups
|
||||||
|
# "-1001234567890" = { requireMention = false; }; # Specific group without @mention
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Discord configuration (optional)
|
||||||
|
# discord = {
|
||||||
|
# tokenFile = config.sops.secrets."DISCORD_BOT_TOKEN".path;
|
||||||
|
# allowFrom = [
|
||||||
|
# "your-discord-user-id"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
|
||||||
|
# Provider API keys (managed by sops-nix)
|
||||||
|
env.vars = {
|
||||||
|
OPENROUTER_API_KEY = config.sops.secrets."OPENROUTER_API_KEY".path;
|
||||||
|
# OPENAI_API_KEY = config.sops.secrets."OPENAI_API_KEY".path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Built-in plugins
|
||||||
|
bundledPlugins = {
|
||||||
|
summarize.enable = true; # Summarize web pages, PDFs, videos
|
||||||
|
peekaboo.enable = lib.mkIf pkgs.stdenv.isDarwin true; # Take screenshots (macOS only)
|
||||||
|
poltergeist.enable = false; # Control macOS UI (macOS only)
|
||||||
|
sag.enable = false; # Text-to-speech
|
||||||
|
camsnap.enable = false; # Camera snapshots (macOS only)
|
||||||
|
gogcli.enable = false; # Google Calendar integration
|
||||||
|
goplaces.enable = false; # Google Places API
|
||||||
|
bird.enable = false; # Twitter/X integration
|
||||||
|
sonoscli.enable = false; # Sonos speaker control
|
||||||
|
imsg.enable = false; # iMessage integration (macOS only)
|
||||||
|
|
||||||
|
# Example: Plugin with sops-nix configuration
|
||||||
|
# goplaces = {
|
||||||
|
# enable = true;
|
||||||
|
# config.env.GOOGLE_PLACES_API_KEY = config.sops.secrets."GOOGLE_PLACES_API_KEY".path;
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
|
||||||
|
# Custom/community plugins
|
||||||
|
# plugins = [
|
||||||
|
# # Simple plugin from GitHub
|
||||||
|
# { source = "github:owner/repo-name"; }
|
||||||
|
#
|
||||||
|
# # Plugin with sops-nix managed secrets
|
||||||
|
# {
|
||||||
|
# source = "github:owner/plugin-name";
|
||||||
|
# config = {
|
||||||
|
# env = {
|
||||||
|
# PLUGIN_AUTH_FILE = config.sops.secrets."PLUGIN_AUTH_KEY".path;
|
||||||
|
# };
|
||||||
|
# settings = {
|
||||||
|
# default_option = "value";
|
||||||
|
# retries = 3;
|
||||||
|
# tags = [ "tag1" "tag2" ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# # Local plugin development
|
||||||
|
# { source = "path:${config.home.homeDirectory}/code/my-openclaw-plugin"; }
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# Tool management (avoid conflicts with system packages)
|
||||||
|
# excludeTools = [ "git" "jq" "ripgrep" ]; # Exclude tools already installed
|
||||||
|
};
|
||||||
|
|
||||||
|
# Multi-instance configuration (advanced)
|
||||||
|
# Use when you need separate prod/dev environments
|
||||||
|
# programs.openclaw.instances = {
|
||||||
|
# prod = {
|
||||||
|
# enable = true;
|
||||||
|
# stateDir = "${config.home.homeDirectory}/.openclaw";
|
||||||
|
# workspaceDir = "${config.home.homeDirectory}/.openclaw/workspace";
|
||||||
|
# config = {
|
||||||
|
# gateway.auth.token = config.sops.secrets."OPENCLAW_GATEWAY_TOKEN_PROD".path;
|
||||||
|
# channels.telegram.tokenFile = config.sops.secrets."TELEGRAM_BOT_TOKEN_PROD".path;
|
||||||
|
# # ... other prod config
|
||||||
|
# };
|
||||||
|
# plugins = [ /* production plugins */ ];
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# dev = {
|
||||||
|
# enable = true;
|
||||||
|
# gatewayPort = 18790;
|
||||||
|
# gatewayPath = "${config.home.homeDirectory}/code/openclaw"; # Local development
|
||||||
|
# config = {
|
||||||
|
# gateway.auth.token = config.sops.secrets."OPENCLAW_GATEWAY_TOKEN_DEV".path;
|
||||||
|
# channels.telegram.tokenFile = config.sops.secrets."TELEGRAM_BOT_TOKEN_DEV".path;
|
||||||
|
# # ... other dev config
|
||||||
|
# };
|
||||||
|
# plugins = [ /* dev plugins with local overrides */ ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
30
nixcfgs/users/js0ny/programs/readest.nix
Normal file
30
nixcfgs/users/js0ny/programs/readest.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
mergetools = import ../lib/mergetools.nix {inherit pkgs lib config;};
|
||||||
|
mkMergedJson = mergetools.mkMergedJson;
|
||||||
|
readestSettings = mkMergedJson {
|
||||||
|
name = "readest-settings";
|
||||||
|
target = ".config/com.bilingify.readest/settings.json";
|
||||||
|
settings = {
|
||||||
|
globalViewSettings = {
|
||||||
|
serifFont = "LXGW WenKai GB Screen";
|
||||||
|
defaultCJKFont = "LXGW WenKai GB Screen";
|
||||||
|
sansSerifFont = config.stylix.fonts.sansSerif.name;
|
||||||
|
monospaceFont = config.stylix.fonts.monospace.name ++ " Regular";
|
||||||
|
uiLanguage = "zh-CN";
|
||||||
|
};
|
||||||
|
telemetryEnabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
home.packages = [
|
||||||
|
pkgs.readest
|
||||||
|
];
|
||||||
|
imports = [
|
||||||
|
readestSettings
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -42,6 +42,26 @@ in {
|
||||||
"ANKI_SYNC_KEY" = {
|
"ANKI_SYNC_KEY" = {
|
||||||
key = "anki_sync_key";
|
key = "anki_sync_key";
|
||||||
};
|
};
|
||||||
|
# OpenClaw secrets
|
||||||
|
"OPENCLAW_GATEWAY_TOKEN" = {
|
||||||
|
key = "openclaw_gateway_token";
|
||||||
|
};
|
||||||
|
"OPENCLAW_TGBOT_TOKEN" = {
|
||||||
|
key = "openclaw_tgbot_token";
|
||||||
|
};
|
||||||
|
"TELEGRAM_USER_ID_AMS" = {
|
||||||
|
key = "telegram_userid_ams";
|
||||||
|
};
|
||||||
|
# Optional OpenClaw secrets (uncomment as needed)
|
||||||
|
# "DISCORD_BOT_TOKEN" = {
|
||||||
|
# key = "discord_bot_token";
|
||||||
|
# };
|
||||||
|
# "OPENAI_API_KEY" = {
|
||||||
|
# key = "openai_api_key";
|
||||||
|
# };
|
||||||
|
# "GOOGLE_PLACES_API_KEY" = {
|
||||||
|
# key = "google_places_api_key";
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@ in {
|
||||||
./programs/elisa.nix
|
./programs/elisa.nix
|
||||||
./programs/lollypop.nix
|
./programs/lollypop.nix
|
||||||
./programs/gallery-dl.nix
|
./programs/gallery-dl.nix
|
||||||
|
./programs/readest.nix
|
||||||
|
|
||||||
# Desktop Linux
|
# Desktop Linux
|
||||||
./programs/desktop/gnome
|
./programs/desktop/gnome
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue