Compare commits

..

1 Commits

Author SHA1 Message Date
imxyy1soope1 832733f931 feat(nvim): use mini.nvim & neo-tree 2026-02-07 12:00:30 +08:00
84 changed files with 1514 additions and 4121 deletions
Generated
+462 -385
View File
File diff suppressed because it is too large Load Diff
+7 -48
View File
@@ -20,7 +20,6 @@
nixos-wsl = { nixos-wsl = {
url = "github:nix-community/NixOS-WSL"; url = "github:nix-community/NixOS-WSL";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
}; };
# Flake organization tools # Flake organization tools
@@ -41,11 +40,11 @@
# Useful modules # Useful modules
# keep-sorted start block=yes # keep-sorted start block=yes
impermanence = { catppuccin = {
url = "github:nix-community/impermanence"; url = "github:catppuccin/nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
}; };
impermanence.url = "github:nix-community/impermanence";
# TODO: sops-nix: remove pr patch once merged # TODO: sops-nix: remove pr patch once merged
# https://github.com/Mic92/sops-nix/pull/779 # https://github.com/Mic92/sops-nix/pull/779
sops-nix = { sops-nix = {
@@ -55,8 +54,6 @@
stylix = { stylix = {
url = "github:danth/stylix"; url = "github:danth/stylix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-parts.follows = "flake-parts";
inputs.systems.follows = "systems";
}; };
system76-scheduler-niri = { system76-scheduler-niri = {
url = "github:Kirottu/system76-scheduler-niri"; url = "github:Kirottu/system76-scheduler-niri";
@@ -69,9 +66,6 @@
angrr = { angrr = {
url = "github:linyinfeng/angrr"; url = "github:linyinfeng/angrr";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
inputs.flake-parts.follows = "flake-parts";
inputs.treefmt-nix.follows = "treefmt";
}; };
darkly = { darkly = {
url = "github:Bali10050/Darkly"; url = "github:Bali10050/Darkly";
@@ -84,35 +78,14 @@
go-musicfox = { go-musicfox = {
url = "github:imxyy1soope1/go-musicfox"; url = "github:imxyy1soope1/go-musicfox";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-parts.follows = "flake-parts";
inputs.devenv.follows = "devenv";
inputs.nix2container.inputs.flake-utils.follows = "flake-utils";
};
llm-agents = {
url = "github:numtide/llm-agents.nix";
# Not followed intentionally (binary cache)
# inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-parts.follows = "flake-parts";
inputs.systems.follows = "systems";
inputs.treefmt-nix.follows = "treefmt";
};
niri = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs-stable";
}; };
niri.url = "github:sodiboo/niri-flake";
noctalia = { noctalia = {
url = "github:noctalia-dev/noctalia-shell/v4.7.5"; url = "github:noctalia-dev/noctalia-shell/v4.3.3";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.noctalia-qs.inputs.nixpkgs.follows = "nixpkgs";
inputs.noctalia-qs.inputs.systems.follows = "systems";
inputs.noctalia-qs.inputs.treefmt-nix.follows = "treefmt";
};
zen = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
}; };
zen.inputs.nixpkgs.follows = "nixpkgs";
zen.url = "github:0xc000022070/zen-browser-flake";
# keep-sorted end # keep-sorted end
# Misc # Misc
@@ -125,20 +98,6 @@
flake = false; flake = false;
}; };
my-templates.url = "git+https://git.imxyy.top/imxyy1soope1/flake-templates"; my-templates.url = "git+https://git.imxyy.top/imxyy1soope1/flake-templates";
# Flattened indirect dependencies
flake-compat.url = "github:edolstra/flake-compat";
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
systems.url = "github:nix-systems/default";
devenv = {
url = "github:cachix/devenv";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-parts.follows = "flake-parts";
inputs.flake-compat.follows = "flake-compat";
};
}; };
outputs = outputs =
+1
View File
@@ -126,6 +126,7 @@ in
# Upstream modules # Upstream modules
# keep-sorted start # keep-sorted start
inputs.angrr.nixosModules.angrr inputs.angrr.nixosModules.angrr
inputs.catppuccin.nixosModules.catppuccin
inputs.home-manager.nixosModules.default inputs.home-manager.nixosModules.default
inputs.impermanence.nixosModules.impermanence inputs.impermanence.nixosModules.impermanence
inputs.niri.nixosModules.niri inputs.niri.nixosModules.niri
+1 -1
View File
@@ -14,11 +14,11 @@
inputs.fenix.overlays.default inputs.fenix.overlays.default
inputs.angrr.overlays.default inputs.angrr.overlays.default
(final: prev: { (final: prev: {
darkly-qt5 = inputs.darkly.packages.${final.stdenv.hostPlatform.system}.darkly-qt5;
darkly-qt6 = inputs.darkly.packages.${final.stdenv.hostPlatform.system}.darkly-qt6; darkly-qt6 = inputs.darkly.packages.${final.stdenv.hostPlatform.system}.darkly-qt6;
noctalia-shell = inputs.noctalia.packages.${final.stdenv.hostPlatform.system}.default; noctalia-shell = inputs.noctalia.packages.${final.stdenv.hostPlatform.system}.default;
}) })
inputs.llm-agents.overlays.shared-nixpkgs
]; ];
config.allowUnfree = true; config.allowUnfree = true;
flake.setNixPath = false; flake.setNixPath = false;
+1 -2
View File
@@ -7,13 +7,12 @@
}; };
virtualisation.oci-containers.containers = { virtualisation.oci-containers.containers = {
tuwunel = { tuwunel = {
image = "ghcr.io/matrix-construct/tuwunel:latest"; image = "jevolk/tuwunel:latest";
volumes = [ volumes = [
"tuwunel_db:/var/lib/tuwunel" "tuwunel_db:/var/lib/tuwunel"
]; ];
ports = [ "6167:6167" ]; ports = [ "6167:6167" ];
networks = [ "podman" ]; networks = [ "podman" ];
extraOptions = [ "--pids-limit=-1" ];
environment = { environment = {
TUWUNEL_SERVER_NAME = "mtx.eflx.top"; TUWUNEL_SERVER_NAME = "mtx.eflx.top";
TUWUNEL_PORT = "6167"; TUWUNEL_PORT = "6167";
+43
View File
@@ -0,0 +1,43 @@
{
services.grafana = {
enable = true;
settings = {
server = {
http_addr = "0.0.0.0";
http_port = 8090;
domain = "grafana.imxyy.top";
};
};
};
services.prometheus = {
enable = true;
port = 8091;
exporters = {
node = {
enable = true;
port = 8092;
enabledCollectors = [
"systemd"
"zfs"
];
};
};
scrapeConfigs = [
{
job_name = "node";
static_configs = [
{
targets = [ "127.0.0.1:8092" ];
}
];
}
];
};
services.caddy.virtualHosts."grafana.imxyy.top" = {
extraConfig = ''
reverse_proxy :8090 {
header_up X-Real-IP {remote_host}
}
'';
};
}
+42 -5
View File
@@ -31,12 +31,13 @@ in
services.btrfs.autoScrub.enable = true; services.btrfs.autoScrub.enable = true;
networking.hostId = "10ca95b4"; networking.hostId = "10ca95b4";
my.persist.btrfs = { fileSystems."/" = {
device = btrfs; device = btrfs;
mountPoint = "/nix/persist"; fsType = "btrfs";
persistSubvol = "persist"; options = [
rootSubvol = "root"; "compress=zstd"
zstdCompress = true; "subvol=root"
];
}; };
fileSystems."/nix" = { fileSystems."/nix" = {
@@ -48,6 +49,42 @@ in
]; ];
}; };
my.persist.location = "/nix/persist";
fileSystems."/nix/persist" = {
device = btrfs;
fsType = "btrfs";
options = [
"compress=zstd"
"subvol=persist"
];
neededForBoot = true;
};
boot.initrd.postDeviceCommands = lib.mkAfter ''
mkdir /btrfs_tmp
mount ${btrfs} /btrfs_tmp
mkdir -p /btrfs_tmp/old_roots
if [[ -e /btrfs_tmp/root ]]; then
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
fi
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i"
done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +14); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp
'';
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-uuid/32AA-2998"; device = "/dev/disk/by-uuid/32AA-2998";
fsType = "vfat"; fsType = "vfat";
-1
View File
@@ -8,7 +8,6 @@
coding.langs.lua.enable = true; coding.langs.lua.enable = true;
coding.langs.rust.enable = true; coding.langs.rust.enable = true;
coding.langs.js.enable = true; coding.langs.js.enable = true;
coding.agents.enable = true;
fonts.enable = lib.mkForce false; fonts.enable = lib.mkForce false;
persist = { persist = {
enable = true; enable = true;
-36
View File
@@ -95,12 +95,7 @@
displayname_template = "{displayname} (Telegram)"; displayname_template = "{displayname} (Telegram)";
permissions = { permissions = {
"@imxyy_soope_:imxyy.top" = "admin"; "@imxyy_soope_:imxyy.top" = "admin";
"*" = "relaybot";
}; };
relaybot = {
whitelist = [ ];
};
relay_user_distinguishers = [ ];
}; };
telegram = { telegram = {
# borrowed from https://github.com/telegramdesktop/tdesktop/blob/9bdc19e2fd4d497c8f403891848383a88faadc25/snap/snapcraft.yaml#L134-L135 # borrowed from https://github.com/telegramdesktop/tdesktop/blob/9bdc19e2fd4d497c8f403891848383a88faadc25/snap/snapcraft.yaml#L134-L135
@@ -109,35 +104,4 @@
}; };
}; };
}; };
sops.secrets.mautrix-signal = {
sopsFile = secrets.mautrix-signal;
restartUnits = [ "mautrix-signal.service" ];
format = "dotenv";
owner = "mautrix-signal";
group = "mautrix-signal";
};
services.mautrix-signal = {
enable = true;
environmentFile = config.sops.secrets.mautrix-signal.path;
settings = {
homeserver = {
address = "http://127.0.0.1:8094";
domain = "imxyy.top";
};
appservice = {
address = "http://127.0.0.1:8102";
hostname = "127.0.0.1";
port = 8102;
bot_username = "signalbot";
};
bridge = {
username_template = "signal_{userid}";
alias_template = "signal_{groupname}";
displayname_template = "{displayname} (Signal)";
permissions = {
"@imxyy_soope_:imxyy.top" = "admin";
};
};
};
};
} }
+20
View File
@@ -0,0 +1,20 @@
{ config, secrets, ... }:
{
sops.secrets.minio-env = {
sopsFile = secrets.minio;
restartUnits = [ "minio.service" ];
format = "dotenv";
};
services.minio = {
enable = true;
listenAddress = ":9000";
consoleAddress = ":9001";
region = "cn-south-gz";
configDir = "/mnt/nas/minio/config";
dataDir = [
"/mnt/nas/minio/data"
];
rootCredentialsFile = config.sops.secrets.minio-env.path;
};
}
+16
View File
@@ -290,6 +290,21 @@
customDomains = [ "coder.imxyy.top" ]; customDomains = [ "coder.imxyy.top" ];
} }
{
name = "grafana-http";
type = "http";
localIP = "127.0.0.1";
localPort = 80;
customDomains = [ "grafana.imxyy.top" ];
}
{
name = "grafana-https";
type = "https";
localIP = "127.0.0.1";
localPort = 443;
customDomains = [ "grafana.imxyy.top" ];
}
{ {
name = "siyuan-http"; name = "siyuan-http";
type = "http"; type = "http";
@@ -484,6 +499,7 @@
"git" "git"
"vault" "vault"
"coder" "coder"
"grafana"
"matrix" "matrix"
"note" "note"
"oidc" "oidc"
+2 -8
View File
@@ -17,9 +17,9 @@ in
services.nextcloud = { services.nextcloud = {
enable = true; enable = true;
package = pkgs.nextcloud33; package = pkgs.nextcloud32;
extraApps = { extraApps = {
inherit (pkgs.nextcloud33.packages.apps) inherit (pkgs.nextcloud32.packages.apps)
bookmarks bookmarks
previewgenerator previewgenerator
spreed spreed
@@ -73,12 +73,6 @@ in
"pm.max_spare_servers" = "12"; "pm.max_spare_servers" = "12";
}; };
}; };
# Fixes `The following x-forwarded-for header was received by Nextcloud: "10.88.0.1"`
systemd.services.nextcloud-notify_push = {
environment = {
NEXTCLOUD_URL = lib.mkForce "http://127.0.0.1:8084";
};
};
services.nginx.virtualHosts."nextcloud.imxyy.top" = { services.nginx.virtualHosts."nextcloud.imxyy.top" = {
listen = [ listen = [
{ {
+42 -5
View File
@@ -30,12 +30,13 @@ in
}; };
}; };
my.persist.btrfs = { fileSystems."/" = {
device = btrfs; device = btrfs;
mountPoint = "/nix/persist"; fsType = "btrfs";
persistSubvol = "persist"; options = [
rootSubvol = "root"; "compress=zstd"
zstdCompress = true; "subvol=root"
];
}; };
fileSystems."/nix" = { fileSystems."/nix" = {
@@ -47,6 +48,42 @@ in
]; ];
}; };
my.persist.location = "/nix/persist";
fileSystems."/nix/persist" = {
device = btrfs;
fsType = "btrfs";
options = [
"compress=zstd"
"subvol=persist"
];
neededForBoot = true;
};
boot.initrd.postDeviceCommands = lib.mkAfter ''
mkdir /btrfs_tmp
mount ${btrfs} /btrfs_tmp
mkdir -p /btrfs_tmp/old_roots
if [[ -e /btrfs_tmp/root ]]; then
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
fi
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i"
done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +14); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp
'';
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-uuid/96D3-93B0"; device = "/dev/disk/by-uuid/96D3-93B0";
fsType = "vfat"; fsType = "vfat";
+9 -2
View File
@@ -17,10 +17,10 @@
anki anki
ayugram-desktop ayugram-desktop
signal-desktop-wayland signal-desktop
element-desktop element-desktop
fractal fractal
qq-wayland qq
wechat wechat
gnome-clocks gnome-clocks
@@ -131,6 +131,13 @@
".config/dconf" ".config/dconf"
".config/pip" ".config/pip"
".config/sunshine" ".config/sunshine"
".gemini"
".claude"
".claude-code-router"
];
homeFiles = [
".claude.json"
]; ];
}; };
}; };
+42 -5
View File
@@ -37,12 +37,13 @@ in
]; ];
}; };
my.persist.btrfs = { fileSystems."/" = {
device = btrfs; device = btrfs;
mountPoint = "/nix/persist"; fsType = "btrfs";
persistSubvol = "persistent"; options = [
rootSubvol = "root"; "compress=zstd"
zstdCompress = true; "subvol=root"
];
}; };
fileSystems."/nix" = { fileSystems."/nix" = {
@@ -51,6 +52,17 @@ in
options = [ "compress=zstd" ]; options = [ "compress=zstd" ];
}; };
my.persist.location = "/nix/persist";
fileSystems."/nix/persist" = {
device = btrfs;
fsType = "btrfs";
options = [
"compress=zstd"
"subvol=persistent"
];
neededForBoot = true;
};
fileSystems."/swap" = { fileSystems."/swap" = {
device = btrfs; device = btrfs;
fsType = "btrfs"; fsType = "btrfs";
@@ -61,6 +73,31 @@ in
neededForBoot = true; neededForBoot = true;
}; };
boot.initrd.postDeviceCommands = lib.mkAfter ''
mkdir /btrfs_tmp
mount ${btrfs} /btrfs_tmp
mkdir -p /btrfs_tmp/old_roots
if [[ -e /btrfs_tmp/root ]]; then
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
fi
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i"
done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +14); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp
'';
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-uuid/B7DC-E9AC"; device = "/dev/disk/by-uuid/B7DC-E9AC";
fsType = "vfat"; fsType = "vfat";
+15 -2
View File
@@ -17,10 +17,10 @@
anki anki
ayugram-desktop ayugram-desktop
signal-desktop-wayland signal-desktop
element-desktop element-desktop
fractal fractal
qq-wayland qq
wechat wechat
gnome-clocks gnome-clocks
@@ -78,6 +78,12 @@
}; };
my = { my = {
autologin = {
enable = true;
user = username;
ttys = [ 6 ];
};
gpg.enable = true; gpg.enable = true;
cli.all.enable = true; cli.all.enable = true;
coding.all.enable = true; coding.all.enable = true;
@@ -155,6 +161,13 @@
".config/dconf" ".config/dconf"
".config/pip" ".config/pip"
".config/sunshine" ".config/sunshine"
".gemini"
".claude"
".claude-code-router"
];
homeFiles = [
".claude.json"
]; ];
}; };
}; };
+2 -5
View File
@@ -35,9 +35,6 @@ in
pciutils pciutils
usbutils usbutils
dust
dysk
lsof lsof
nmap nmap
@@ -67,12 +64,12 @@ in
aria2 aria2
bat bat
comma comma
fastfetch.minimal fastfetch
fd fd
fzf fzf
jq
keep-sorted keep-sorted
lsd lsd
neofetch
ripgrep ripgrep
socat socat
typos typos
-1
View File
@@ -12,7 +12,6 @@ in
zsh.enable = true; zsh.enable = true;
fish.enable = true; fish.enable = true;
starship.enable = true; starship.enable = true;
carapace.enable = true;
}; };
}; };
} }
-17
View File
@@ -1,17 +0,0 @@
{ config, lib, ... }:
let
cfg = config.my.cli.shell.carapace;
in
{
options.my.cli.shell.carapace = {
enable = lib.mkEnableOption "carapace completer";
};
config = lib.mkIf cfg.enable {
my.hm = {
programs.carapace = {
enable = true;
};
};
};
}
+1 -1
View File
@@ -32,7 +32,7 @@ in
shellAliases = { shellAliases = {
la = "lsd -lah"; la = "lsd -lah";
ls = "lsd"; ls = "lsd";
svim = "sudoedit"; svim = "doasedit";
nf = "fastfetch"; nf = "fastfetch";
}; };
interactiveShellInit = lib.mkBefore '' interactiveShellInit = lib.mkBefore ''
+4 -31
View File
@@ -11,44 +11,17 @@ in
}; };
config = lib.mkMerge [ config = lib.mkMerge [
{
my.cli.shell.starship.format = lib.mkOrder 0 [ "$all" ];
}
(lib.mkIf cfg.enable { (lib.mkIf cfg.enable {
my.hm = { my.hm = {
programs.starship = { programs.starship = {
enable = true; enable = true;
settings = lib.recursiveUpdate (with builtins; fromTOML (readFile ./starship-preset.toml)) { settings = lib.recursiveUpdate (with builtins; fromTOML (readFile ./starship-preset.toml)) {
add_newline = false; add_newline = false;
command_timeout = 2000;
nix_shell.disabled = true; nix_shell.disabled = true;
format = format = lib.concatStringsSep "" cfg.format;
let
dedupDollar =
list:
let
result =
builtins.foldl'
(
acc: elem:
if lib.hasPrefix "$" elem then
if builtins.elem elem acc.seen then
acc
else
acc
// {
result = acc.result ++ [ elem ];
seen = acc.seen ++ [ elem ];
}
else
acc // { result = acc.result ++ [ elem ]; }
)
{
result = [ ];
seen = [ ];
}
(lib.reverseList list);
in
lib.reverseList result.result;
in
"$all" + lib.concatStrings (dedupDollar cfg.format);
}; };
}; };
}; };
+1 -1
View File
@@ -51,7 +51,7 @@ in
}; };
shellAliases = { shellAliases = {
ls = "lsd"; ls = "lsd";
svim = "sudoedit"; svim = "doasedit";
nf = "fastfetch"; nf = "fastfetch";
}; };
}; };
+14 -16
View File
@@ -22,22 +22,20 @@ in
forward_env = [ "PATH" ]; forward_env = [ "PATH" ];
}; };
}; };
programs.starship = { # https://github.com/starship/starship/discussions/7260
settings = { # programs.starship = {
custom.shpool = { # settings = {
description = "Display current shpool session name"; # custom.shpool = {
when = ''test -n "$SHPOOL_SESSION_NAME"''; # description = "Display current shpool session name";
command = "echo $SHPOOL_SESSION_NAME"; # when = ''test -n "$SHPOOL_SESSION_NAME"'';
symbol = " "; # command = "echo $SHPOOL_SESSION_NAME";
style = "fg:#dea584"; # symbol = " ";
format = "[$symbol \\[$output\\] ]($style)"; # style = "fg:#dea584";
# format = "[$symbol $output]($style)";
# };
# };
# };
}; };
}; # my.cli.shell.starship.format = [ "$starship$character" ];
};
};
my.cli.shell.starship.format = [
"\${custom.shpool}"
"$character"
];
}; };
} }
+14 -16
View File
@@ -34,22 +34,20 @@ in
}) })
]; ];
}; };
programs.starship = { # https://github.com/starship/starship/discussions/7260
settings = { # programs.starship = {
custom.tmux = { # settings = {
description = "Display current tmux session name"; # custom.tmux = {
when = ''test -n "$TMUX"''; # description = "Display current tmux session name";
command = "tmux display-message -p '#S'"; # when = ''test -n "$TMUX"'';
symbol = " "; # command = "tmux display-message -p '#S'";
style = "bold green"; # symbol = " ";
format = "[$symbol \\[$output\\] ]($style)"; # style = "bold green";
# format = "[$symbol $output]($style)";
# };
# };
# };
}; };
}; # my.cli.shell.starship.format = [ "$tmux$character" ];
};
};
my.cli.shell.starship.format = [
"\${custom.tmux}"
"$character"
];
}; };
} }
-37
View File
@@ -1,37 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.my.coding.agents;
in
{
options.my.coding.agents = {
enable = lib.mkEnableOption "LLM coding agents";
};
config = lib.mkIf cfg.enable {
my.hm = {
home.packages = with pkgs.llm-agents; [
codex
claude-code
opencode
];
};
my.persist = {
homeDirs = [
".claude"
".config/opencode"
".local/share/opencode"
".codex"
];
homeFiles = [
".claude.json"
];
};
};
}
-1
View File
@@ -11,7 +11,6 @@ in
my.coding = { my.coding = {
editor.all.enable = true; editor.all.enable = true;
langs.all.enable = true; langs.all.enable = true;
agents.enable = true;
misc.enable = true; misc.enable = true;
}; };
}; };
+1 -16
View File
@@ -14,8 +14,6 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
# workaround
environment.sessionVariables.EDITOR = "nvim";
my.hm = { my.hm = {
xdg.configFile."nvim".source = impure.mkImpureLink ./nvim; xdg.configFile."nvim".source = impure.mkImpureLink ./nvim;
programs.neovim = { programs.neovim = {
@@ -24,25 +22,12 @@ in
viAlias = true; viAlias = true;
vimAlias = true; vimAlias = true;
vimdiffAlias = true; vimdiffAlias = true;
withPython3 = false;
withRuby = false;
sideloadInitLua = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [
# treesitter gcc # treesitter
tree-sitter
gnutar
curl
gcc
ripgrep # telescope ripgrep # telescope
# language servers
vscode-json-languageserver
vscode-langservers-extracted
typos-lsp typos-lsp
# render-markdown.nvim
python3Packages.pylatexenc
]; ];
}; };
}; };
@@ -1,43 +1,43 @@
{ {
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" }, "LuaSnip": { "branch": "master", "commit": "dae4f5aaa3574bd0c2b9dd20fb9542a02c10471c" },
"blink.cmp": { "branch": "main", "commit": "3db7326f54b73df4789e0fd6274bedda33975fea" }, "blink.cmp": { "branch": "main", "commit": "f9e855c4d96e1264f7c818844f5a0166ad48c212" },
"blink.lib": { "branch": "main", "commit": "b127d48bf8e9ac9cf41f6e0fbead317503f76558" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
"gitsigns.nvim": { "branch": "main", "commit": "25050e4ed39e628282831d4cbecb1850454ce915" }, "gitsigns.nvim": { "branch": "main", "commit": "1ce96a464fdbc24208e24c117e2021794259005d" },
"glance.nvim": { "branch": "master", "commit": "bf86d8b79dce808e65fdb6e9269d0b4ed6d2eefc" }, "glance.nvim": { "branch": "master", "commit": "bf86d8b79dce808e65fdb6e9269d0b4ed6d2eefc" },
"guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" }, "guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" },
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"inlay-hints.nvim": { "branch": "master", "commit": "297a65ab9543eb0850c1a55df4bb89e22cfec504" }, "inlay-hints.nvim": { "branch": "master", "commit": "11be32be3761c6263df2311afb6baa0de0863967" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" }, "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
"leap.nvim": { "branch": "main", "commit": "d3641f9aa86e7460b14d9f4479e7454f88cc6b2d" }, "leap.nvim": { "branch": "main", "commit": "d7316deae68dc93d6957020cdda6d7bb399218fb" },
"lspkind.nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" }, "lspkind.nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" },
"lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, "mini.nvim": { "branch": "main", "commit": "8c40d95931cbe6138391af9180e59439ed2e69df" },
"mini.nvim": { "branch": "main", "commit": "b2ac6522f7a54b475d9fad711b938eefc6d3d0a6" }, "neo-tree.nvim": { "branch": "main", "commit": "f3df514fff2bdd4318127c40470984137f87b62e" },
"neo-tree.nvim": { "branch": "main", "commit": "83e7a2982fd12b9c3d35bc39dd5877cd91a02a61" },
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" }, "nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-lspconfig": { "branch": "master", "commit": "229b79051b380377664edc4cbd534930154921a1" }, "nvim-lspconfig": { "branch": "master", "commit": "66fd02ad1c7ea31616d3ca678fa04e6d0b360824" },
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
"nvim-osc52": { "branch": "main", "commit": "04cfaba1865ae5c53b6f887c3ca7304973824fb2" },
"nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" }, "nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" },
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, "nvim-tree.lua": { "branch": "master", "commit": "037d89e60fb01a6c11a48a19540253b8c72a3c32" },
"nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
"outline.nvim": { "branch": "main", "commit": "2a132953b944561d45b52e4541ebfff71934a742" }, "nvim-web-devicons": { "branch": "master", "commit": "746ffbb17975ebd6c40142362eee1b0249969c5c" },
"pest.vim": { "branch": "master", "commit": "60cae7ea1beb644ed40081a3ec213ea9061aba09" }, "outline.nvim": { "branch": "main", "commit": "ead1820d49c8e79ce89cab1c2c318981b695c9d2" },
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "pest.vim": { "branch": "master", "commit": "7cfcb43f824e74d13dfe631359fff2ec23836a77" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "a798325b7f36acc62741d1029930a7b96d4dd4bf" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"registers": { "branch": "main", "commit": "c217f8f369e0886776cda6c94eab839b30a8940d" }, "rainbow-delimiters.nvim": { "branch": "master", "commit": "d6b802552cbe7d643a3b6b31f419c248d1f1e220" },
"render-markdown.nvim": { "branch": "main", "commit": "5adf0895310c1904e5abfaad40a2baad7fe44a07" }, "render-markdown.nvim": { "branch": "main", "commit": "48b4175dbca8439d30c1f52231cbe5a712c8f9d9" },
"ripgrep": { "branch": "master", "commit": "82313cf95849bfe425109ad9506a52154879b1b1" }, "ripgrep": { "branch": "master", "commit": "0a88cccd5188074de96f54a4b6b44a63971ac157" },
"telescope.nvim": { "branch": "master", "commit": "7d324792b7943e4aa16ad007212e6acc6f9fe335" }, "telescope.nvim": { "branch": "master", "commit": "ad7d9580338354ccc136e5b8f0aa4f880434dcdc" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" }, "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
"tree-sitter-nu": { "branch": "main", "commit": "bb3f533e5792260291945e1f329e1f0a779def6e" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"vim-floaterm": { "branch": "master", "commit": "bb4ba7952e906408e1f83b215f55ffe57efcade6" }, "vim-floaterm": { "branch": "master", "commit": "a11b930f55324e9b05e2ef16511fe713f1b456a7" },
"vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" } "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" }
} }
@@ -24,6 +24,7 @@ keymap.set("i", "<pageup>", string.rep("<up>", 9), opt)
keymap.set("i", "<pagedown>", string.rep("<down>", 9), opt) keymap.set("i", "<pagedown>", string.rep("<down>", 9), opt)
keymap.set("n", "<leader>ww", ":w<CR>", opt) keymap.set("n", "<leader>ww", ":w<CR>", opt)
keymap.set("n", "<leader>so", ":so<CR>", opt)
keymap.set("n", "<leader>qq", ":q<CR>", opt) keymap.set("n", "<leader>qq", ":q<CR>", opt)
keymap.set("n", "<leader>qa", ":qa<CR>", opt) keymap.set("n", "<leader>qa", ":qa<CR>", opt)
keymap.set("n", "<leader>c", function() keymap.set("n", "<leader>c", function()
@@ -6,7 +6,6 @@ opt.shiftwidth = 4
opt.softtabstop = 4 opt.softtabstop = 4
opt.expandtab = true opt.expandtab = true
opt.autoindent = true opt.autoindent = true
opt.smartindent = true
-- Linenumber setting -- Linenumber setting
opt.number = true opt.number = true
@@ -23,7 +22,6 @@ opt.smartcase = true
opt.termguicolors = true opt.termguicolors = true
opt.signcolumn = "yes" opt.signcolumn = "yes"
opt.colorcolumn = "110" opt.colorcolumn = "110"
opt.textwidth = 110
opt.scrolloff = 8 opt.scrolloff = 8
opt.sidescrolloff = 8 opt.sidescrolloff = 8
@@ -1,7 +1,3 @@
-- rainbow-delimiters integration
local hooks = require("ibl.hooks")
hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark)
--- @type ibl.config --- @type ibl.config
M = { M = {
enabled = true, enabled = true,
@@ -11,7 +7,6 @@ M = {
scope = { scope = {
enabled = true, enabled = true,
show_start = false, show_start = false,
highlight = vim.g.rainbow_delimiters.highlight,
}, },
} }
@@ -75,14 +75,11 @@ local servers = {
biome = {}, biome = {},
clangd = {}, clangd = {},
cssls = {}, cssls = {},
eslint = {},
gopls = {}, gopls = {},
html = {}, html = {},
java_language_server = {}, java_language_server = {},
jsonls = {}, jsonls = {},
pyrefly = {}, pyright = {},
-- taplo = {},
tombi = {},
ts_ls = {}, ts_ls = {},
typos_lsp = {}, typos_lsp = {},
-- keep-sorted end -- keep-sorted end
@@ -0,0 +1,19 @@
M = {
bind = true, -- This is mandatory, otherwise border config won't get registered.
handler_opts = {
border = "rounded",
},
hint_prefix = "^ ",
toggle_key = "<C-k>",
}
vim.keymap.set(
{ "n" },
"<leader>k",
require("lsp_signature").toggle_float_win,
{ silent = true, noremap = true, desc = "toggle signature" }
)
vim.keymap.set({ "n" }, "K", vim.lsp.buf.signature_help, { silent = true, noremap = true, desc = "toggle signature" })
return M
@@ -1,30 +0,0 @@
M = {
options = {
theme = "tokyonight",
},
sections = {
lualine_y = {
"encoding",
"fileformat",
"filetype",
},
lualine_x = {
{
require("noice").api.status.message.get_hl,
cond = require("noice").api.status.message.has,
},
{
require("noice").api.status.command.get,
cond = require("noice").api.status.command.has,
color = { fg = "#ff9e64" },
},
{
require("noice").api.status.search.get,
cond = require("noice").api.status.search.has,
color = { fg = "#ff9e64" },
},
},
},
}
return M
@@ -14,52 +14,61 @@ package.path = package.path .. ";" .. vim.fn.stdpath("config") .. "/lua/"
local plugins = { local plugins = {
{ {
"folke/tokyonight.nvim", "folke/tokyonight.nvim",
lazy = false,
priority = 1000, priority = 1000,
config = function() config = function()
vim.cmd.colorscheme("tokyonight-storm") vim.cmd.colorscheme("tokyonight-storm")
end, end,
}, },
{ {
"nvim-lualine/lualine.nvim", 'echasnovski/mini.nvim',
dependencies = { { "nvim-tree/nvim-web-devicons", lazy = true } },
config = function()
require("lualine").setup(require("plugins.lualine"))
end,
},
{
"echasnovski/mini.nvim",
config = function() config = function()
-- Simple and easy statusline.
-- You could remove this setup call if you don't like it,
-- and try some other statusline plugin
local statusline = require 'mini.statusline'
-- set use_icons to true if you have a Nerd Font
statusline.setup { use_icons = vim.g.have_nerd_font }
-- You can configure sections in the statusline by overriding their
-- default behavior. For example, here we set the section for
-- cursor location to LINE:COLUMN
---@diagnostic disable-next-line: duplicate-set-field
statusline.section_location = function()
return '%2l:%-2v'
end
-- Better Around/Inside textobjects -- Better Around/Inside textobjects
-- --
-- Examples: -- Examples:
-- - va) - [V]isually select [A]round [)]paren -- - va) - [V]isually select [A]round [)]paren
-- - yinq - [Y]ank [I]nside [N]ext [Q]uote -- - yinq - [Y]ank [I]nside [N]ext [Q]uote
-- - ci' - [C]hange [I]nside [']quote -- - ci' - [C]hange [I]nside [']quote
require("mini.ai").setup({ n_lines = 500 }) require('mini.ai').setup { n_lines = 500 }
-- Add/delete/replace surroundings (brackets, quotes, etc.) -- Add/delete/replace surroundings (brackets, quotes, etc.)
-- --
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
-- - sd' - [S]urround [D]elete [']quotes -- - sd' - [S]urround [D]elete [']quotes
-- - sr)' - [S]urround [R]eplace [)] ['] -- - sr)' - [S]urround [R]eplace [)] [']
require("mini.surround").setup() require('mini.surround').setup()
-- ... and there is more! -- ... and there is more!
-- Check out: https://github.com/echasnovski/mini.nvim -- Check out: https://github.com/echasnovski/mini.nvim
end, end,
}, },
{ {
"nvim-neo-tree/neo-tree.nvim", 'nvim-neo-tree/neo-tree.nvim',
version = "*", version = '*',
dependencies = { dependencies = {
"nvim-lua/plenary.nvim", 'nvim-lua/plenary.nvim',
"nvim-tree/nvim-web-devicons", 'nvim-tree/nvim-web-devicons',
"MunifTanjim/nui.nvim", 'MunifTanjim/nui.nvim',
}, },
cmd = "Neotree", cmd = 'Neotree',
keys = { keys = {
{ "\\", ":Neotree reveal toggle<CR>", desc = "Toggle NeoTree", silent = true }, { '\\', ':Neotree reveal toggle<CR>', desc = 'Toggle NeoTree', silent = true },
{ "<leader>e", ":Neotree reveal toggle<CR>", desc = "Toggle NeoTree", silent = true }, { '<leader>e', ':Neotree reveal toggle<CR>', desc = 'Toggle NeoTree', silent = true },
}, },
--- @type neotree.Config --- @type neotree.Config
opts = { opts = {
@@ -71,7 +80,7 @@ local plugins = {
window = { window = {
width = 30, width = 30,
mappings = { mappings = {
["\\"] = "close_window", ['\\'] = 'close_window',
["<leader>e"] = "close_window", ["<leader>e"] = "close_window",
["<c-]>"] = "set_root", ["<c-]>"] = "set_root",
}, },
@@ -81,38 +90,39 @@ local plugins = {
}, },
{ {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
branch = "main", lazy = false,
dependencies = { dependencies = {
{
branch = "main",
"nvim-treesitter/nvim-treesitter-textobjects", "nvim-treesitter/nvim-treesitter-textobjects",
}, "nushell/tree-sitter-nu",
}, },
config = function() config = function()
require("nvim-treesitter").setup(require("plugins.treesitter")) require("nvim-treesitter.configs").setup(require("plugins.treesitter"))
end, end,
build = ":TSUpdate", build = ":TSUpdate",
}, },
{ {
url = "https://gitlab.com/HiPhish/rainbow-delimiters.nvim", url = "https://gitlab.com/HiPhish/rainbow-delimiters.nvim",
event = "VeryLazy",
config = function() config = function()
require("plugins.rainbow-delimiters") require("plugins.rainbow-delimiters")
end, end,
}, },
{ {
"lukas-reineke/indent-blankline.nvim", "lukas-reineke/indent-blankline.nvim",
dependencies = { "https://gitlab.com/HiPhish/rainbow-delimiters.nvim" }, event = "VeryLazy",
config = function() config = function()
require("ibl").setup(require("plugins.indent-blankline")) require("ibl").setup(require("plugins.indent-blankline"))
end, end,
}, },
{ {
"norcalli/nvim-colorizer.lua", "norcalli/nvim-colorizer.lua",
event = "VeryLazy",
opt = {}, opt = {},
}, },
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
dependencies = { "saghen/blink.cmp" }, dependencies = { "saghen/blink.cmp" },
event = "VeryLazy",
config = function() config = function()
require("plugins.lsp.lspconfig") require("plugins.lsp.lspconfig")
require("plugins.lsp.others") require("plugins.lsp.others")
@@ -174,6 +184,8 @@ local plugins = {
}, },
{ {
"saghen/blink.cmp", "saghen/blink.cmp",
event = "VeryLazy",
build = "cargo build --release",
dependencies = { dependencies = {
{ {
"L3MON4D3/LuaSnip", "L3MON4D3/LuaSnip",
@@ -193,7 +205,6 @@ local plugins = {
}, },
}, },
}, },
"saghen/blink.lib",
}, },
config = function() config = function()
require("blink.cmp").setup(require("plugins.cmp.cmp")) require("blink.cmp").setup(require("plugins.cmp.cmp"))
@@ -201,6 +212,7 @@ local plugins = {
}, },
{ {
"numToStr/Comment.nvim", "numToStr/Comment.nvim",
event = "VeryLazy",
opts = {}, opts = {},
}, },
{ {
@@ -216,6 +228,7 @@ local plugins = {
}, },
{ {
"lewis6991/gitsigns.nvim", "lewis6991/gitsigns.nvim",
event = "VeryLazy",
config = function() config = function()
require("gitsigns").setup(require("plugins.gitsigns")) require("gitsigns").setup(require("plugins.gitsigns"))
end, end,
@@ -254,7 +267,6 @@ local plugins = {
dependencies = { "tpope/vim-repeat" }, dependencies = { "tpope/vim-repeat" },
config = function() config = function()
vim.keymap.set({ "n", "x", "o" }, "s", "<Plug>(leap)") vim.keymap.set({ "n", "x", "o" }, "s", "<Plug>(leap)")
vim.keymap.set({ "n", "x", "o" }, "<leader>s", "<Plug>(leap)")
vim.keymap.set("n", "S", "<Plug>(leap-from-window)") vim.keymap.set("n", "S", "<Plug>(leap-from-window)")
-- Exclude whitespace and the middle of alphabetic words from preview: -- Exclude whitespace and the middle of alphabetic words from preview:
-- foobar[baaz] = quux -- foobar[baaz] = quux
@@ -267,31 +279,20 @@ local plugins = {
}, },
{ {
"alexghergh/nvim-tmux-navigation", "alexghergh/nvim-tmux-navigation",
event = "VeryLazy",
config = function() config = function()
require("nvim-tmux-navigation").setup(require("plugins.tmuxnav")) require("nvim-tmux-navigation").setup(require("plugins.tmuxnav"))
end, end,
}, },
{ {
"MeanderingProgrammer/render-markdown.nvim", "MeanderingProgrammer/render-markdown.nvim",
dependencies = { dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" },
"nvim-treesitter/nvim-treesitter",
"nvim-tree/nvim-web-devicons",
},
event = "BufEnter *.md", event = "BufEnter *.md",
--- @type render.md.UserConfig opts = {},
opts = {
completions = {
blink = {
enabled = true,
},
lsp = {
enabled = true,
},
},
},
}, },
{ {
"folke/noice.nvim", "folke/noice.nvim",
event = "VeryLazy",
dependencies = { dependencies = {
"MunifTanjim/nui.nvim", "MunifTanjim/nui.nvim",
"rcarriga/nvim-notify", "rcarriga/nvim-notify",
@@ -306,14 +307,31 @@ local plugins = {
}, },
{ {
"voldikss/vim-floaterm", "voldikss/vim-floaterm",
event = "VeryLazy",
config = function() config = function()
require("plugins.floaterm") require("plugins.floaterm")
end, end,
}, },
{ {
"folke/todo-comments.nvim", "folke/todo-comments.nvim",
event = "VeryLazy",
opts = {}, opts = {},
}, },
{
"ojroques/nvim-osc52",
event = "VeryLazy",
config = function()
require("osc52").setup({
tmux_passthrough = true,
})
local function copy()
if vim.v.event.operator == "y" and vim.v.event.regname == "+" then
require("osc52").copy_register("+")
end
end
vim.api.nvim_create_autocmd("TextYankPost", { callback = copy })
end,
},
{ {
"pest-parser/pest.vim", "pest-parser/pest.vim",
ft = "pest", ft = "pest",
@@ -322,19 +340,9 @@ local plugins = {
{ {
"nmac427/guess-indent.nvim", "nmac427/guess-indent.nvim",
event = "VeryLazy",
opts = {}, opts = {},
}, },
{
"https://codeberg.org/fosk/registers.nvim",
cmd = "Registers",
config = true,
keys = {
{ '"', mode = { "n", "v" } },
{ "<C-R>", mode = "i" },
},
name = "registers",
},
} }
require("lazy").setup(plugins, {}) require("lazy").setup(plugins, {})
@@ -1,15 +1,21 @@
--- @type TSConfig --- @type TSConfig
M = { M = {
install_dir = vim.fn.stdpath("data") .. "/site", auto_install = true,
parser_install_dir = "$HOME/.local/share/nvim/lazy/nvim-treesitter",
sync_install = true,
modules = {},
ignore_install = {},
ensure_installed = {},
highlight = { enable = true },
indent = { enable = true },
} }
vim.api.nvim_create_autocmd("FileType", { vim.filetype.add({
callback = function() pattern = {
-- Enable treesitter highlighting and disable regex syntax [".*/hypr/.*%.conf"] = "hyprlang",
pcall(vim.treesitter.start) [".*%.hl"] = "hyprlang",
-- Enable treesitter-based indentation },
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end,
}) })
return M return M
+4 -1
View File
@@ -13,8 +13,11 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
my.hm.programs.vscode.enable = true;
my.hm = { my.hm = {
programs.vscodium.enable = true; programs.vscode = {
package = pkgs.vscodium;
};
}; };
my.persist.homeDirs = [ my.persist.homeDirs = [
".config/VSCodium" ".config/VSCodium"
-1
View File
@@ -18,7 +18,6 @@ in
java.enable = true; java.enable = true;
qml.enable = true; qml.enable = true;
typst.enable = true; typst.enable = true;
toml.enable = true;
}; };
}; };
} }
+1 -1
View File
@@ -16,7 +16,7 @@ in
my.hm.home.packages = with pkgs; [ my.hm.home.packages = with pkgs; [
go go
gotools gotools
(lib.hiPrio gopls) gopls
]; ];
my.persist.homeDirs = [ my.persist.homeDirs = [
"go" "go"
+1 -1
View File
@@ -19,7 +19,7 @@ in
pnpm pnpm
typescript typescript
typescript-language-server nodePackages.typescript-language-server
vue-language-server vue-language-server
biome biome
+1 -1
View File
@@ -16,7 +16,7 @@ in
my.hm.home.packages = with pkgs; [ my.hm.home.packages = with pkgs; [
python3 python3
uv uv
pyrefly pyright
]; ];
}; };
} }
-20
View File
@@ -1,20 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.my.coding.langs.toml;
in
{
options.my.coding.langs.toml = {
enable = lib.mkEnableOption "TOML";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = with pkgs; [
tombi
];
};
}
-1
View File
@@ -21,7 +21,6 @@ in
]; ];
programs.direnv = { programs.direnv = {
enable = true; enable = true;
nix-direnv.enable = true;
config = { config = {
global = { global = {
warn_timeout = 0; warn_timeout = 0;
-1
View File
@@ -1 +0,0 @@
/target
-2105
View File
File diff suppressed because it is too large Load Diff
-13
View File
@@ -1,13 +0,0 @@
[package]
name = "nix-racer"
version = "0.1.0"
edition = "2024"
[dependencies]
axum = "0.8"
reqwest = { version = "0.13", features = ["rustls"] }
serde = { version = "1.0.228", features = ["derive"] }
tokio = { version = "1.52", features = ["full"] }
toml = "1.1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
-29
View File
@@ -1,29 +0,0 @@
{
lib,
rustPlatform,
}:
rustPlatform.buildRustPackage {
pname = "nix-racer";
version = "0.1.0";
src = lib.fileset.toSource {
root = ./.;
fileset = lib.fileset.unions [
./Cargo.toml
./Cargo.lock
./src
];
};
cargoLock = {
lockFile = ./Cargo.lock;
};
meta = {
description = "Nix substituter proxy with parallel cache queries and latency-aware selection";
mainProgram = "nix-racer";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
};
}
-64
View File
@@ -1,64 +0,0 @@
use reqwest::Url;
use serde::{Deserialize, Deserializer, de::Error};
use std::net::{SocketAddr, SocketAddrV4};
#[derive(Debug, Clone, Deserialize)]
pub struct AppConfig {
#[serde(default = "default_listen")]
pub listen: SocketAddr,
pub substituters: Vec<Substituter>,
}
impl Default for AppConfig {
fn default() -> Self {
Self {
listen: default_listen(),
substituters: vec![
Substituter {
url: "https://mirror.sjtu.edu.cn/nix-channels/store",
penalty: 0,
},
Substituter {
url: "https://mirrors.ustc.edu.cn/nix-channels/store",
penalty: 0,
},
Substituter {
url: "https://cache.nixos.org",
penalty: 100,
},
],
}
}
}
fn default_listen() -> SocketAddr {
SocketAddr::V4(SocketAddrV4::new([127, 0, 0, 1].into(), 2048))
}
#[derive(Debug, Clone)]
pub struct Substituter {
pub url: &'static str,
pub penalty: u32,
}
impl<'de> Deserialize<'de> for Substituter {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
#[derive(Debug, Clone, Deserialize)]
struct ShadowSubstituter {
url: String,
#[serde(default)]
penalty: u32,
}
let sub = <ShadowSubstituter as Deserialize>::deserialize(deserializer);
sub.and_then(|ShadowSubstituter { url, penalty }| {
let url = match Url::parse(&url) {
Ok(url) => Ok(Box::leak(url.to_string().into_boxed_str())),
Err(err) => Err(<D::Error as Error>::custom(err.to_string())),
}?;
Ok(Substituter { url, penalty })
})
}
}
-212
View File
@@ -1,212 +0,0 @@
use std::{
collections::HashMap,
sync::Arc,
time::{Duration, Instant},
};
use axum::{
Router,
extract::{Path, State},
http::{StatusCode, header},
response::{IntoResponse, Redirect},
routing::get,
};
use reqwest::Client;
use tokio::task::JoinSet;
use tracing_subscriber::{EnvFilter, layer::SubscriberExt as _, util::SubscriberInitExt as _};
mod config;
use config::*;
#[derive(Clone)]
struct AppState {
client: Client,
config: Arc<AppConfig>,
}
#[tokio::main]
async fn main() {
tracing_subscriber::registry()
.with(tracing_subscriber::fmt::layer())
.with(
EnvFilter::builder()
.with_env_var("NIX_RACER_LOG")
.with_default_directive("nix_racer=debug".parse().unwrap())
.from_env()
.unwrap(),
)
.init();
let config: Arc<AppConfig> = match std::fs::read_to_string("/etc/nix/nix-racer.toml") {
Ok(file) => toml::from_str::<AppConfig>(&file).unwrap_or_else(|x| {
tracing::warn!("Failed to parse config file ({x}), fallback to default configuration");
AppConfig::default()
}),
Err(err) if err.kind() == std::io::ErrorKind::NotFound => {
tracing::info!("Config file not found, fallback to default configuration");
AppConfig::default()
}
Err(err) => {
tracing::warn!("Failed to read config file ({err}), fallback to default configuration");
AppConfig::default()
}
}
.into();
if config.substituters.is_empty() {
tracing::error!("No substituters found");
std::process::exit(1);
}
let listen = config.listen;
let client = Client::builder()
.timeout(Duration::from_secs(5))
.pool_idle_timeout(Duration::from_secs(90))
.build()
.unwrap();
let state = AppState { client, config };
let listener = tokio::net::TcpListener::bind(listen).await.unwrap();
let app = Router::new()
.route("/nix-cache-info", get(nix_cache_info_handler))
.route("/{*path}", get(proxy_handler))
.with_state(state);
tracing::info!("Smart Nix Proxy listening on http://{listen}");
axum::serve(listener, app).await.unwrap();
}
async fn nix_cache_info_handler() -> impl IntoResponse {
let info = "StoreDir: /nix/store\nWantMassQuery: 1\nPriority: 30\n";
([(header::CONTENT_TYPE, "text/x-nix-cache-info")], info)
}
async fn proxy_handler(
Path(path): Path<String>,
State(state): State<AppState>,
) -> impl IntoResponse {
if !path.ends_with(".narinfo") {
let redirect_url = format!("{}/{}", state.config.substituters[0].url, path);
return Redirect::temporary(&redirect_url).into_response();
}
let start_time = Instant::now();
let mut set = JoinSet::new();
let mut penalties = HashMap::new();
for upstream in state.config.substituters.iter() {
let url = format!("{}/{}", upstream.url, path);
let client = state.client.clone();
let base_url = upstream.url;
let handle = set.spawn(async move {
let max_retries = 2;
let mut delay = Duration::from_millis(50);
for attempt in 0..=max_retries {
match client.get(&url).send().await {
Ok(resp) if resp.status().is_success() => {
let bytes = resp.bytes().await.map_err(|_| "Body error")?;
let text = String::from_utf8_lossy(&bytes);
let mut new_text = String::with_capacity(text.len() + 64);
for line in text.lines() {
if let Some(rel_url) = line.strip_prefix("URL: ") {
if rel_url.starts_with("http://") || rel_url.starts_with("https://")
{
new_text.push_str(line);
} else {
new_text.push_str(&format!("URL: {}/{}", base_url, rel_url));
}
} else {
new_text.push_str(line);
}
new_text.push('\n');
}
return Ok((new_text.into_bytes(), base_url));
}
Ok(resp) if resp.status() == StatusCode::NOT_FOUND => return Err("404"),
Err(_) => {
if attempt == max_retries {
return Err("Max retries");
}
tokio::time::sleep(delay).await;
delay *= 2;
}
_ => return Err("Other HTTP Error"),
}
}
Err("Unreachable")
});
penalties.insert(handle.id(), upstream.penalty);
}
struct ProxyResult {
score: Duration,
body: Vec<u8>,
url: &'static str,
}
let mut best_result: Option<ProxyResult> = None;
loop {
let min_active_penalty = penalties.values().min().copied();
if let Some(ProxyResult { score, .. }) = best_result {
if let Some(min_p) = min_active_penalty {
if start_time.elapsed() + Duration::from_millis(u64::from(min_p)) >= score {
break;
}
} else {
break;
}
} else if min_active_penalty.is_none() {
break;
}
let timeout_dur = if let Some(ProxyResult { score, .. }) = best_result {
score.saturating_sub(start_time.elapsed())
} else {
Duration::from_secs(86400)
};
if timeout_dur.is_zero() && best_result.is_some() {
break;
}
let res = tokio::time::timeout(timeout_dur, set.join_next_with_id()).await;
match res {
Ok(Some(Ok((task_id, task_res)))) => {
let penalty = penalties.remove(&task_id).unwrap();
if let Ok((body, url)) = task_res {
let score = start_time.elapsed() + Duration::from_millis(u64::from(penalty));
if best_result.as_ref().is_none_or(|best| score < best.score) {
best_result = Some(ProxyResult { score, body, url })
}
}
}
Ok(Some(Err(join_err))) => {
penalties.remove(&join_err.id());
}
Ok(None) => break,
Err(_) => break,
}
}
if let Some(ProxyResult { score, body, url }) = best_result {
tracing::debug!("Winner for {}: {} (Score: {:?})", path, url, score,);
(
StatusCode::OK,
[(header::CONTENT_TYPE, "text/x-nix-narinfo")],
body,
)
.into_response()
} else {
(StatusCode::NOT_FOUND, "Not Found").into_response()
}
}
+9 -115
View File
@@ -32,103 +32,23 @@ in
nh nh
]; ];
environment.etc = environment.etc = lib.mapAttrs' (name: value: {
(lib.mapAttrs' (name: value: {
name = "nix/path/${name}"; name = "nix/path/${name}";
value.source = value.flake; value.source = value.flake;
}) config.nix.registry) }) config.nix.registry;
// {
"nix/nix-racer.toml".source = (pkgs.formats.toml { }).generate "nix-racer.toml" {
listen = "127.0.0.1:2048";
substituters = [
# {
# penalty = 0;
# url = "https://mirror.sjtu.edu.cn/nix-channels/store";
# }
{
penalty = 0;
url = "https://mirrors.sjtug.sjtu.edu.cn/nix-channels/store";
}
{
penalty = 50;
url = "https://mirrors.ustc.edu.cn/nix-channels/store";
}
{
penalty = 0;
url = "https://nix-community.cachix.org";
}
{
penalty = 0;
url = "https://cache.numtide.com";
}
{
penalty = 100;
url = "https://cache.nixos.org";
}
];
};
};
systemd.services.nix-racer = {
description = "Nix substituter proxy with parallel cache queries and latency-aware selection";
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${lib.getExe (pkgs.callPackage ./nix-racer/_package.nix { })}";
Restart = "on-failure";
RestartSec = 5;
DynamicUser = true;
CapabilityBoundingSet = [ "" ];
DeviceAllow = "";
LockPersonality = true;
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateDevices = true;
PrivateTmp = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectSystem = "strict";
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = [
"@system-service"
"~@resources"
"~@privileged"
];
UMask = "0077";
};
};
nix.settings = { nix.settings = {
experimental-features = "nix-command flakes pipe-operators"; experimental-features = "nix-command flakes pipe-operators";
substituters = lib.mkForce [ substituters = [
"http://127.0.0.1:2048"
"https://mirrors.sjtug.sjtu.edu.cn/nix-channels/store" "https://mirrors.sjtug.sjtu.edu.cn/nix-channels/store"
"https://cache.numtide.com" "https://mirror.sjtu.edu.cn/nix-channels/store"
"https://cache.nixos.org" "https://mirrors.ustc.edu.cn/nix-channels/store"
"https://nix-community.cachix.org"
# "https://mirrors.ustc.edu.cn/nix-channels/store" "https://cache.garnix.io"
# "https://mirrors.sjtug.sjtu.edu.cn/nix-channels/store"
# "https://nix-community.cachix.org"
]; ];
trusted-public-keys = [ trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"niks3.numtide.com-1:DTx8wZduET09hRmMtKdQDxNNthLQETkc/yaX7M4qK0g=" "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
]; ];
download-buffer-size = 536870912; # 512 MiB download-buffer-size = 536870912; # 512 MiB
warn-dirty = false; warn-dirty = false;
@@ -172,33 +92,7 @@ in
services.angrr = { services.angrr = {
enable = true; enable = true;
settings = { settings = {
temporary-root-policies = { period = "1month";
direnv = {
path-regex = "/\\.direnv/";
period = "14d";
};
result = {
path-regex = "/result[^/]*$";
period = "3d";
};
};
profile-policies = {
system = {
profile-paths = [ "/nix/var/nix/profiles/system" ];
keep-since = "14d";
keep-latest-n = 5;
keep-booted-system = true;
keep-current-system = true;
};
user = {
profile-paths = [
"~/.local/state/nix/profiles/profile"
"/nix/var/nix/profiles/per-user/root/profile"
];
keep-since = "14d";
keep-latest-n = 5;
};
};
}; };
}; };
}; };
+5 -82
View File
@@ -10,35 +10,15 @@ in
{ {
options.my.persist = { options.my.persist = {
enable = lib.mkEnableOption "persist"; enable = lib.mkEnableOption "persist";
btrfs = lib.mkOption { location = lib.mkOption {
type = lib.types.submodule (
{ ... }:
{
options = {
device = lib.mkOption {
type = lib.types.str;
};
zstdCompress = lib.mkOption {
type = lib.types.bool;
default = true;
};
persistSubvol = lib.mkOption {
type = lib.types.str;
};
rootSubvol = lib.mkOption {
type = lib.types.str;
default = "root";
};
mountPoint = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "/nix/persist"; default = "/nix/persist";
example = lib.literalExpression '' example = lib.literalExpression ''
"/persistent" "/persistent"
''; '';
}; description = lib.mdDoc ''
}; Persistent location
} '';
);
}; };
homeDirs = lib.mkOption { homeDirs = lib.mkOption {
default = [ ]; default = [ ];
@@ -89,65 +69,8 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
fileSystems.${cfg.btrfs.mountPoint} = {
device = cfg.btrfs.device;
fsType = "btrfs";
options = [
"subvol=${cfg.btrfs.persistSubvol}"
]
++ lib.optionals cfg.btrfs.zstdCompress [
"compress=zstd"
];
neededForBoot = true;
};
fileSystems."/" = {
device = cfg.btrfs.device;
fsType = "btrfs";
options = [
"subvol=${cfg.btrfs.rootSubvol}"
]
++ lib.optionals cfg.btrfs.zstdCompress [
"compress=zstd"
];
};
boot.initrd.systemd.services.wipe-root = {
description = "Rollback BTRFS rootfs";
wantedBy = [ "initrd.target" ];
before = [ "sysroot.mount" ];
after = [ "initrd-root-device.target" ];
unitConfig.DefaultDependencies = "no";
serviceConfig.Type = "oneshot";
script = ''
mkdir -p /btrfs_tmp
mount ${cfg.btrfs.device} /btrfs_tmp
mkdir -p /btrfs_tmp/old_roots
if [ -e /btrfs_tmp/root ]; then
timestamp=$(date -d "@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%d_%H:%M:%S" 2>/dev/null || date "+%Y-%m-%d_%H:%M:%S")
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
fi
delete_subvolume_recursively() {
IFS=$(printf '\n')
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i"
done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +14); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create /btrfs_tmp/${cfg.btrfs.rootSubvol}
umount /btrfs_tmp
'';
};
programs.fuse.userAllowOther = true; programs.fuse.userAllowOther = true;
environment.persistence.${cfg.btrfs.mountPoint} = { environment.persistence.${cfg.location} = {
hideMounts = true; hideMounts = true;
directories = cfg.nixosDirs; directories = cfg.nixosDirs;
files = cfg.nixosFiles; files = cfg.nixosFiles;
+55 -7
View File
@@ -2,7 +2,6 @@
config, config,
lib, lib,
pkgs, pkgs,
hostname,
username, username,
userdesc, userdesc,
secrets, secrets,
@@ -39,18 +38,67 @@ in
}; };
users.users.root.hashedPasswordFile = lib.mkDefault config.sops.secrets.imxyy-nix-hashed-password.path; users.users.root.hashedPasswordFile = lib.mkDefault config.sops.secrets.imxyy-nix-hashed-password.path;
security.sudo = { security.sudo.enable = false;
security.doas = {
enable = true; enable = true;
extraRules = [ extraRules = [
{ {
users = [ "imxyy" ]; users = [ username ];
commands = lib.singleton { noPass = true;
command = "ALL"; keepEnv = true;
options = lib.optionals (hostname == "imxyy-nix") [ "NOPASSWD" ];
};
} }
]; ];
}; };
environment.shellAliases = {
sudoedit = "doasedit";
};
environment.systemPackages = [
(pkgs.writeShellScriptBin "sudo" ''exec doas "$@"'')
(pkgs.writeShellScriptBin "doasedit" ''
if [ -n "''${2}" ]; then
printf 'Expected only one argument\n'
exit 1
elif [ -z "''${1}" ]; then
printf 'No file path provided\n'
exit 1
elif [ "$(id -u)" -eq 0 ]; then
printf 'Cannot be run as root\n'
exit 1
fi
set -eu
tempdir="$(mktemp -d)"
trap 'rm -rf $tempdir' EXIT
srcfile="$(doas realpath "$1")"
if doas [ -f "$srcfile" ]; then
doas cp -a "$srcfile" "$tempdir"/file
doas cp -a "$tempdir"/file "$tempdir"/edit
# make sure that the file is editable by user
doas chown "$USER":"$USER" "$tempdir"/edit
chmod 600 "$tempdir"/edit
else
# create file with "regular" system permissions (root:root 644)
touch "$tempdir"/file
doas chown root:root "$tempdir"/file
fi
$EDITOR "$tempdir"/edit
doas tee "$tempdir"/file 1>/dev/null < "$tempdir"/edit
if doas cmp -s "$tempdir/file" "$srcfile"; then
printf 'Skipping write; no changes.\n'
exit 0
else
doas mv -f "$tempdir"/file "$srcfile"
exit 0
fi
'')
];
nix.settings.trusted-users = [ nix.settings.trusted-users = [
"root" "root"
+1 -4
View File
@@ -38,10 +38,7 @@ in
dataHome = "${homedir}/.local/share"; dataHome = "${homedir}/.local/share";
stateHome = "${homedir}/.local/state"; stateHome = "${homedir}/.local/state";
userDirs = { userDirs.enable = true;
enable = true;
setSessionVariables = true;
};
configFile."mimeapps.list".force = true; configFile."mimeapps.list".force = true;
+2 -2
View File
@@ -3,11 +3,11 @@
options.my.desktop.browser.default = { options.my.desktop.browser.default = {
command = lib.mkOption { command = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "zen-beta"; default = "chromium";
}; };
desktop = lib.mkOption { desktop = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "zen-beta.desktop"; default = "chromium-browser.desktop";
}; };
}; };
} }
+2 -5
View File
@@ -8,12 +8,9 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
my.hm.programs.firefox = { my.hm.programs.firefox.enable = true;
enable = true;
configPath = "${config.my.hm.xdg.configHome}/mozilla/firefox";
};
my.persist.homeDirs = [ my.persist.homeDirs = [
".config/mozilla" ".mozilla"
]; ];
}; };
} }
+2 -2
View File
@@ -15,7 +15,7 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
my.hm.programs.zen-browser = { my.hm.programs.zen-browser = {
enable = true; enable = true;
nativeMessagingHosts = [ pkgs.master.firefoxpwa ]; nativeMessagingHosts = [ pkgs.firefoxpwa ];
policies = { policies = {
# find more options here: https://mozilla.github.io/policy-templates/ # find more options here: https://mozilla.github.io/policy-templates/
DisableAppUpdate = true; DisableAppUpdate = true;
@@ -23,7 +23,7 @@ in
}; };
}; };
my.persist.homeDirs = [ my.persist.homeDirs = [
".config/zen" ".zen"
]; ];
}; };
} }
+5 -2
View File
@@ -14,13 +14,16 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
my.hm.home.packages = [ my.hm.home.packages = [
pkgs.hmcl (pkgs.hmcl.overrideAttrs {
postFixup = ''
substituteInPlace $out/share/applications/HMCL.desktop --replace-fail 'Exec=hmcl' 'Exec=sh -c "cd ~/.local/share/hmcl; hmcl"'
'';
})
]; ];
my.persist.homeDirs = [ my.persist.homeDirs = [
".minecraft" ".minecraft"
".local/share/hmcl" ".local/share/hmcl"
".hmcl"
]; ];
}; };
} }
-1
View File
@@ -9,7 +9,6 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
my.desktop.media = { my.desktop.media = {
cine.enable = true;
mpv.enable = true; mpv.enable = true;
loupe.enable = true; loupe.enable = true;
thunderbird.enable = true; thunderbird.enable = true;
-18
View File
@@ -1,18 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.my.desktop.media.cine;
in
{
options.my.desktop.media.cine = {
enable = lib.mkEnableOption "cine";
};
config = lib.mkIf cfg.enable {
my.hm.home.packages = [ pkgs.cine ];
};
}
+1 -17
View File
@@ -13,23 +13,7 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
nixpkgs.config.permittedInsecurePackages = ( my.hm.home.packages = [ pkgs.splayer ];
lib.warn
''
SPlayer still using pnpm 10.29.2. Check
https://github.com/NixOS/nixpkgs/issues/535580#issuecomment-4809489104
''
[
"pnpm-10.29.2"
]
);
my.hm.home.packages = [
# (pkgs.master.splayer.override {
# pnpm_10_29_2 = pkgs.pnpm_10;
# })
pkgs.splayer
];
my.persist.homeDirs = [ my.persist.homeDirs = [
".config/SPlayer" ".config/SPlayer"
]; ];
+22 -12
View File
@@ -2,7 +2,6 @@
config, config,
lib, lib,
pkgs, pkgs,
impure,
... ...
}: }:
let let
@@ -14,6 +13,19 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
catppuccin.sddm = {
enable = true;
font = "Jetbrains Mono";
fontSize = "18";
};
services.displayManager.sddm = {
package = pkgs.kdePackages.sddm;
settings.Theme = {
CursorTheme = "breeze-dark";
CursorSize = 24;
};
};
my.hm = { my.hm = {
stylix = { stylix = {
enable = true; enable = true;
@@ -58,7 +70,6 @@ in
}; };
}; };
gtk4 = { gtk4 = {
theme = null;
extraConfig = { extraConfig = {
gtk-decoration-layout = ":none"; gtk-decoration-layout = ":none";
gtk-application-prefer-dark-theme = 1; gtk-application-prefer-dark-theme = 1;
@@ -69,21 +80,20 @@ in
#QT #QT
qt = { qt = {
enable = true; enable = true;
platformTheme.name = "kde"; style.package = with pkgs; [
style = { darkly-qt5
package = with pkgs; [
darkly-qt6 darkly-qt6
]; ];
name = "Darkly"; platformTheme.name = "qtct";
};
}; };
xdg.configFile = { xdg.configFile = {
kdeglobals.source = impure.mkImpureLink ./kdeglobals; "qt5ct/qt5ct.conf".source = pkgs.replaceVars ./qtct/qt5ct.conf {
plasmarc.text = '' darker = pkgs.libsForQt5.qt5ct + /share/qt5ct/colors/darker.conf;
[Theme] };
name=darkly "qt6ct/qt6ct.conf".source = pkgs.replaceVars ./qtct/qt6ct.conf {
''; darker = pkgs.qt6Packages.qt6ct + /share/qt6ct/colors/darker.conf;
};
}; };
}; };
}; };
-140
View File
@@ -1,140 +0,0 @@
[ColorEffects:Disabled]
ChangeSelectionColor=
Color=36,36,36
ColorAmount=0.5
ColorEffect=3
ContrastAmount=0.5
ContrastEffect=0
Enable=
IntensityAmount=0
IntensityEffect=0
[ColorEffects:Inactive]
ChangeSelectionColor=true
Color=51,51,51
ColorAmount=0.4
ColorEffect=3
ContrastAmount=0.4
ContrastEffect=0
Enable=true
IntensityAmount=-0.2
IntensityEffect=0
[Colors:Button]
BackgroundAlternate=77,77,77
BackgroundNormal=50,50,50
DecorationFocus=52,120,218
DecorationHover=0,161,236
ForegroundActive=61,174,233
ForegroundInactive=199,199,199
ForegroundLink=0,100,255
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=241,241,241
ForegroundPositive=36,173,89
ForegroundVisited=115,115,158
[Colors:Complementary]
BackgroundAlternate=59,64,69
BackgroundNormal=49,54,59
DecorationFocus=30,146,255
DecorationHover=61,174,230
ForegroundActive=246,116,0
ForegroundInactive=175,176,179
ForegroundLink=61,174,230
ForegroundNegative=237,21,21
ForegroundNeutral=201,206,59
ForegroundNormal=239,240,241
ForegroundPositive=17,209,22
ForegroundVisited=61,174,230
[Colors:Selection]
BackgroundAlternate=29,153,243
BackgroundNormal=27,145,213
DecorationFocus=52,120,218
DecorationHover=0,161,236
ForegroundActive=252,252,252
ForegroundInactive=241,241,241
ForegroundLink=0,100,255
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=241,241,241
ForegroundPositive=36,173,89
ForegroundVisited=115,115,158
[Colors:Tooltip]
BackgroundAlternate=77,77,77
BackgroundNormal=59,59,59
DecorationFocus=52,120,218
DecorationHover=0,161,236
ForegroundActive=61,174,233
ForegroundInactive=199,199,199
ForegroundLink=0,100,255
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=239,240,241
ForegroundPositive=36,173,89
ForegroundVisited=115,115,158
[Colors:View]
BackgroundAlternate=54,54,54
BackgroundNormal=44,44,44
DecorationFocus=52,120,218
DecorationHover=0,161,236
ForegroundActive=61,174,233
ForegroundInactive=199,199,199
ForegroundLink=0,100,255
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=241,241,241
ForegroundPositive=36,173,89
ForegroundVisited=115,115,158
[Colors:Window]
BackgroundAlternate=77,77,77
BackgroundNormal=34,34,34
DecorationFocus=52,120,218
DecorationHover=0,161,236
ForegroundActive=61,174,233
ForegroundInactive=199,199,199
ForegroundLink=0,100,255
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=239,240,241
ForegroundPositive=36,173,89
ForegroundVisited=115,115,158
[General]
ColorScheme=Darkly
[Icons]
Theme=Papirus-Dark
[KDE]
contrast=0
frameContrast=0.2
[KFileDialog Settings]
Allow Expansion=false
Automatically select filename extension=true
Breadcrumb Navigation=true
Decoration position=2
Show Full Path=false
Show Inline Previews=true
Show Preview=false
Show Speedbar=true
Show hidden files=false
Sort by=Name
Sort directories first=true
Sort hidden files last=false
Sort reversed=false
Speedbar Width=154
View Style=DetailTree
[WM]
activeBackground=34,34,34
activeBlend=255,255,255
activeForeground=204,204,204
inactiveBackground=44,44,44
inactiveBlend=44,44,44
inactiveForeground=144,144,144
-41
View File
@@ -1,41 +0,0 @@
include "generated-config.kdl"
layout {
border {
on
}
}
blur {
passes 3
offset 4
noise 0.02
saturation 1.5
}
window-rule {
draw-border-with-background false
geometry-corner-radius 14.000000 14.000000 14.000000 14.000000
clip-to-geometry true
background-effect {
xray true
blur true
}
}
window-rule {
match is-floating=true
background-effect {
xray false
}
}
window-rule {
match app-id="kitty|foot|Alacritty|ghostty"
opacity 0.8
}
window-rule {
match app-id="org.gnome.Nautilus"
opacity 0.6
}
+40 -24
View File
@@ -3,7 +3,6 @@
lib, lib,
pkgs, pkgs,
assets, assets,
impure,
... ...
}: }:
let let
@@ -11,11 +10,7 @@ let
in in
{ {
config = lib.mkIf config.my.desktop.wm.niri.enable { config = lib.mkIf config.my.desktop.wm.niri.enable {
my.hm = { my.hm.programs.niri.settings = {
xdg.configFile.niri-config.target = lib.mkForce "niri/generated-config.kdl";
xdg.configFile."niri/config.kdl".source = impure.mkImpureLink ./config.kdl;
programs.niri.settings = {
input = { input = {
focus-follows-mouse = { focus-follows-mouse = {
enable = true; enable = true;
@@ -26,7 +21,7 @@ in
layout = { layout = {
gaps = 23; gaps = 23;
center-focused-column = "on-overflow"; center-focused-column = "always";
always-center-single-column = true; always-center-single-column = true;
focus-ring.enable = false; focus-ring.enable = false;
border = { border = {
@@ -55,10 +50,6 @@ in
]; ];
default-column-width.proportion = 0.8; default-column-width.proportion = 0.8;
background-color = "transparent"; background-color = "transparent";
tab-indicator = {
width = 10;
place-within-column = true;
};
}; };
animations = { animations = {
@@ -81,9 +72,34 @@ in
matches = [ { namespace = "^wallpaper$"; } ]; matches = [ { namespace = "^wallpaper$"; } ];
place-within-backdrop = true; place-within-backdrop = true;
} }
{
matches = [ { namespace = "^waybar$"; } ];
opacity = 0.99;
}
]; ];
overview.workspace-shadow.enable = false; overview.workspace-shadow.enable = false;
window-rules = [
{
geometry-corner-radius = {
bottom-left = 14.;
bottom-right = 14.;
top-left = 14.;
top-right = 14.;
};
clip-to-geometry = true;
draw-border-with-background = false;
}
{
matches = [ { app-id = "kitty|foot|Alacritty|ghostty|chromium-browser|zen-beta|wofi"; } ];
opacity = 0.8;
}
{
matches = [ { app-id = "org.gnome.Nautilus"; } ];
opacity = 0.6;
}
];
environment.NIXOS_OZONE_WL = "1"; environment.NIXOS_OZONE_WL = "1";
spawn-at-startup = lib.mkBefore ( spawn-at-startup = lib.mkBefore (
@@ -119,8 +135,12 @@ in
"cliphist" "cliphist"
"store" "store"
] ]
# TODO: Is there a better way?
[ [
"noctalia-shell" "systemctl"
"restart"
"--user"
"noctalia-shell.service"
] ]
] ]
); );
@@ -138,16 +158,19 @@ in
in in
with config.my.hm.lib.niri.actions; with config.my.hm.lib.niri.actions;
{ {
"Ctrl+Alt+T".action.spawn = [
"kitty"
];
"Mod+T".action.spawn = [
"kitty"
];
"Mod+Return".action.spawn = [ "Mod+Return".action.spawn = [
"kitty" "kitty"
"-1"
]; ];
"Mod+G".action.spawn = [ config.my.desktop.browser.default.command ]; "Mod+G".action.spawn = [ config.my.desktop.browser.default.command ];
"Mod+E".action.spawn = [ "nautilus" ]; "Mod+E".action.spawn = [ "nautilus" ];
"Mod+R".action.spawn = noctalia "launcher toggle"; "Mod+R".action.spawn = noctalia "launcher toggle";
"Mod+V".action.spawn = noctalia "launcher clipboard"; "Mod+V".action.spawn = noctalia "launcher clipboard";
"Mod+W".action.spawn = noctalia "launcher windows";
"Ctrl+Alt+Escape".action.spawn = [ "missioncenter" ];
"XF86AudioRaiseVolume" = { "XF86AudioRaiseVolume" = {
allow-when-locked = true; allow-when-locked = true;
@@ -254,20 +277,15 @@ in
"Mod+C".action = center-column; "Mod+C".action = center-column;
"Mod+F".action = toggle-window-floating; "Mod+F".action = toggle-window-floating;
"Mod+H".action = expand-column-to-available-width; "Mod+H".action = expand-column-to-available-width;
"Mod+T".action = toggle-column-tabbed-display;
"Mod+Minus".action.set-column-width = "-10%"; "Mod+Minus".action.set-column-width = "-10%";
"Mod+Equal".action.set-column-width = "+10%"; "Mod+Equal".action.set-column-width = "+10%";
"Mod+Shift+Minus".action.set-window-height = "-10%"; "Mod+Shift+Minus".action.set-window-height = "-10%";
"Mod+Shift+Equal".action.set-window-height = "+10%"; "Mod+Shift+Equal".action.set-window-height = "+10%";
"Ctrl+Alt+A".action.screenshot = { "Ctrl+Alt+A".action.screenshot = [ ];
show-pointer = false;
};
# "Ctrl+Alt+A".action = screenshot; # "Ctrl+Alt+A".action = screenshot;
"Print".action.screenshot-screen = { "Print".action.screenshot-screen = [ ];
show-pointer = false;
};
"Alt+Print".action.screenshot-window = [ ]; "Alt+Print".action.screenshot-window = [ ];
# "Alt+Print".action = screenshot-window; # "Alt+Print".action = screenshot-window;
@@ -334,7 +352,5 @@ in
}) (lib.range 0 9) }) (lib.range 0 9)
); );
}; };
};
}; };
} }
+8 -20
View File
@@ -15,19 +15,14 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
niri-flake.cache.enable = false;
programs.niri = { programs.niri = {
enable = true; enable = true;
package = pkg; package = pkg;
}; };
services.displayManager = { services.displayManager = {
ly = { sddm = {
enable = true; enable = true;
settings = { wayland.enable = true;
animation = "matrix";
session_log = ".local/state/ly-session.log";
shell = false;
};
}; };
}; };
@@ -72,7 +67,6 @@ in
brightnessctl brightnessctl
nautilus nautilus
mission-center
noctalia-shell noctalia-shell
xdg-terminal-exec xdg-terminal-exec
@@ -82,24 +76,25 @@ in
programs.noctalia-shell = { programs.noctalia-shell = {
enable = true; enable = true;
systemd.enable = true;
# modified from official Tokyo-Night theme # modified from official Tokyo-Night theme
colors = { colors = {
mError = "#f7768e"; mError = "#f7768e";
mHover = "#bb9af7";
mOnError = "#16161e"; mOnError = "#16161e";
mOnHover = "#16161e";
mOnPrimary = "#16161e"; mOnPrimary = "#16161e";
mOnSecondary = "#16161e"; mOnSecondary = "#16161e";
mOnSurface = "#c0caf5"; mOnSurface = "#c0caf5";
mOnSurfaceVariant = "#9aa5ce"; mOnSurfaceVariant = "#9aa5ce";
mOnTertiary = "#16161e"; mOnTertiary = "#16161e";
mOutline = "#353D57"; mOutline = "#565f89";
mPrimary = "#7aa2f7"; mPrimary = "#7aa2f7";
mSecondary = "#9a9ef7"; mSecondary = "#9a9ef7";
mTertiary = "#bb9af7";
# mSecondary = "#bb9af7";
# mTertiary = "#9ece6a";
mShadow = "#15161e"; mShadow = "#15161e";
mSurface = "#1a1b26"; mSurface = "#1a1b26";
mSurfaceVariant = "#24283b"; mSurfaceVariant = "#24283b";
mTertiary = "#bb9af7";
}; };
settings = { settings = {
appLauncher = { appLauncher = {
@@ -174,10 +169,6 @@ in
id = "Microphone"; id = "Microphone";
displayMode = "onhover"; displayMode = "onhover";
} }
{
id = "Battery";
hideIfNotDetected = true;
}
]; ];
}; };
}; };
@@ -206,10 +197,7 @@ in
]; ];
position = "top_left"; position = "top_left";
shortcuts = { shortcuts = {
left = [ left = [ { id = "Bluetooth"; } ];
{ id = "Bluetooth"; }
{ id = "Network"; }
];
right = [ { id = "Notifications"; } ]; right = [ { id = "Notifications"; } ];
}; };
}; };
+77
View File
@@ -0,0 +1,77 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.my.autologin;
gettycfg = config.services.getty;
baseArgs = [
"--login-program"
"${gettycfg.loginProgram}"
]
++ optionals (gettycfg.loginOptions != null) [
"--login-options"
gettycfg.loginOptions
]
++ gettycfg.extraArgs;
gettyCmd = args: "@${pkgs.util-linux}/sbin/agetty agetty ${escapeShellArgs baseArgs} ${args}";
forAllAutologinTTYs =
config:
attrsets.mergeAttrsList (map (ttynum: { "getty@tty${toString ttynum}" = config; }) cfg.ttys);
autologinModule = types.submodule {
options = {
enable = mkEnableOption "autologin";
user = mkOption {
type = types.str;
default = "";
example = "foo";
description = mdDoc ''
Username of the account that will be automatically logged in at the console.
'';
};
ttys = mkOption {
type = types.listOf types.int;
default = [ 6 ];
description = mdDoc ''
TTY numbers for autologin.user to login to.
'';
};
};
};
in
{
###### interface
options = {
my.autologin = mkOption {
type = autologinModule;
default = { };
};
};
###### implementation
config = mkIf cfg.enable {
systemd.services = forAllAutologinTTYs {
overrideStrategy = "asDropin"; # needed for templates to work
serviceConfig.ExecStart = [
""
(gettyCmd "--noclear --keep-baud %I 115200,38400,9600 -a ${cfg.user} $TERM")
];
};
};
}
+1 -1
View File
@@ -115,7 +115,7 @@ in
desktop, desktop,
}: }:
{ {
"${pkg}-wayland" = final.symlinkJoin { ${pkg} = final.symlinkJoin {
pname = prev.${pkg}.pname; pname = prev.${pkg}.pname;
version = prev.${pkg}.version; version = prev.${pkg}.version;
paths = [ prev.${pkg} ]; paths = [ prev.${pkg} ];
+1 -1
View File
@@ -17,7 +17,7 @@ in
sshKeyFile = lib.mkOption { sshKeyFile = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "${ default = "${
if config.my.persist.enable then config.my.persist.btrfs.mountPoint else "" if config.my.persist.enable then config.my.persist.location else ""
}/home/${username}/.ssh/id_ed25519"; }/home/${username}/.ssh/id_ed25519";
}; };
}; };
+1 -3
View File
@@ -10,9 +10,6 @@
grub.enable = false; grub.enable = false;
timeout = 0; timeout = 0;
}; };
boot.kernel.sysctl = {
"kernel.printk" = "3 4 1 3";
};
security.pam.loginLimits = [ security.pam.loginLimits = [
{ {
@@ -45,5 +42,6 @@
# Desktop persistence # Desktop persistence
my.persist = { my.persist = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
location = lib.mkDefault "/nix/persist";
}; };
} }
+1
View File
@@ -21,5 +21,6 @@
# Server persistence # Server persistence
my.persist = { my.persist = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
location = lib.mkDefault "/nix/persist";
}; };
} }
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -4
View File
@@ -1,5 +1,5 @@
{ {
"data": "ENC[AES256_GCM,data:RZyNbgY+zGJWxLDUaEIYYLOMkNiFvkVTBTqjzyP6M/iiQFEQKYarUFxgBXU71aVl00/J8ykP5F6d9am9BqcmH/m/mlrLSlXk9Uh9KcnAJl/qzV0q64hyrA3rPO0HS8ipsaWPQqeUMc5U7cfwViviW0HASRbT07ihC3JzgwVa9ReDHcbxzY8m7PN8D5KpIkxItppGnCfe54kqdEg4Fn8vlMSnWbvpdV2XZ9r9klqu09ZRQ3QSaUTLNIAK+IG/AtgmeerZpUbFu9oKPB9ztqUYMZWlNV7g4h0uaz9UkM7T6HSn83m7JawKSabdTiTNL1ePu9/nuAx7+2vRgtnXBO4YTXu8ZRtcB5OmNCVOyM75gM/+gzYJwLfwPTx8GUi6TdoHV90myoE+TNr6jYao8N0yR/YgKEkT3YH7AmV1NKPkJjMOFG2AbpDgsX19WBo1ySVLKMurLUbTjLSIXkjCuVcw3pRVI3iXNlidogEoBSsyRN0qFnQ1V1LAAL55pM7a/Jelmm2ZNGomX/LXR24X1eM6t12rO8FgpUGTP7bdFAL02CEcydw0HsDRQd30ZKfPS/vTIYvxgx4TlM/L2E5E5s53xJZJ79LnPUgyKGdvKJcUIZm91OblRD44RmtQcZBlMRoZcc8UR81rV3/v+BsOw6xv8b7C+zDGHB5pTzEy7cc24jZwoF8JBeaJC0KK0tb3kQ==,iv:BPbyZwghZ4t7VTkXkPP80fg/7SFIbBTXLmH23yeWr9Q=,tag:XE8w5BN5coSaOGvN0J0m1A==,type:str]", "data": "ENC[AES256_GCM,data:woTNsrZnU3IclRXuh41H82YHeFa6U8aT+ILtjUQ9P80Rz7sUwGinh7z+5bNJkhdTub4BZ+ySl8Ov0XfDKWClT4AmbcRCuwwN8BfOJ59v+fyzsBSu8Y7wXSPciY+T/4rn60HlnVCyjX23dMNWwuN08bS/4iDw+/Ur80/3li2Azl5+37y/S2ZbFU0FP3OCy/G5+rGI0IFTCzRMfB/wpDhesxGzi1epKWvFx0q1Qnv0SiaZlo8mpG+G997mltBMlVkmAiNq57VAVs1ZBDAOf56q1UUHMtExAQt0zad5YWZeBgXQYWG8AFgOhSBiqjpFkUkfysv1mYqWnA7Ej/fD/H8e1uckC6KT9m4w1l71JmIkuUMW8PN/66cGYwZ/gMrZTAwlaVqiYPE1ppmnvrQxukQMgj40y27sWauMK+biPRNTrkU7egjH0IHCHHE49vq3VDFa48SAYXiBCHV+e/Gy9Em1ImRn2lCzAoKUtI5ilccg6MyUbug+1aDWx5NBkhpVw751HyLiSjNyphzVZewo9hGun2F+Fl9NdhM5xpq4tM9bbnsm0y44Vt8FJU0dmY6lfq1qqI3MjLg14iET/WLTorxH0i1iJUYy8Z6FJ7ArGUv6qw7ECNH0ZeUiNk0vICniyRlr+9JGFiHesX5oajXVxOp6vA6FnA4j1jeUvOLViiRc8DxLZziyA7ZdKDXwPJ4JKA==,iv:Df76Q6DoA6lI6xv7nnN6bjsaMPK7dnM/WvVd/O4h6qs=,tag:Yi/inQbd1wCY+PPbq0By9w==,type:str]",
"sops": { "sops": {
"age": [ "age": [
{ {
@@ -15,9 +15,9 @@
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBSSEdH\nOGZDWDFhMzB2aVErTDU0Vk1WbnBSa0hmTGNMaXI3aTBuQWMvQkRJCnFpYkRFblZV\nRzF1eGdmTzFQcGhTWFZKdmhyNzRHdEFFSjh2Tnl1NXlpSkUKLS0tIHFLSVJiRkpw\nV2taUVdlS1h1V1Y4aE5JUWVmK1d5UjRleVY1Y0VvcmQrMnMKpD5nffC057mv+1wz\nXL8bOS3vBFoupi7IbKw56e0nGkRuMq+Hf2eCKZDRRlLbIi353xXFki7PKDk7ltu9\n2olKQQ==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBSSEdH\nOGZDWDFhMzB2aVErTDU0Vk1WbnBSa0hmTGNMaXI3aTBuQWMvQkRJCnFpYkRFblZV\nRzF1eGdmTzFQcGhTWFZKdmhyNzRHdEFFSjh2Tnl1NXlpSkUKLS0tIHFLSVJiRkpw\nV2taUVdlS1h1V1Y4aE5JUWVmK1d5UjRleVY1Y0VvcmQrMnMKpD5nffC057mv+1wz\nXL8bOS3vBFoupi7IbKw56e0nGkRuMq+Hf2eCKZDRRlLbIi353xXFki7PKDk7ltu9\n2olKQQ==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2026-04-11T11:27:59Z", "lastmodified": "2026-01-30T13:42:20Z",
"mac": "ENC[AES256_GCM,data:aDtrtC+ZD/XCaq9B0aW7btIdrHVthcJ68+MXIIAzejIbGXbqOkk/o7xOyYGsKsCHkiJP+ppjHKKt8ase5CSieCCsosdOUoPForLEaBhu0y7QTRKMBxKhD+xMlsCgR6djKx42Z4gs3/qjox836JJV8x72HllbtTu/WzwaCR9qt50=,iv:qy2JSu/dSZE2xWmxOtzvGBjcu0BjYNVDdOMm+UDV+CI=,tag:4CfF54eYLtQkeA8X5COyxA==,type:str]", "mac": "ENC[AES256_GCM,data:xZmGhEqVh5SIcIfaqOSs1YV23QHXachtBx40C+oyasFvUBhqcniuDHcuFQSmzteywC6jH3r91ilppPjWERz6ml5cfHzBdkbirpbWJg5Hqj+yLz3f98tGkAMmZyc/zc6XkM9BbWQI+R3R9bEaFZ95bnzNeno0EwneEM4aGW1ZsKI=,iv:oz197xm93q7aG3utudgMr3nVdS1IcmTxfnhy7Jc1N9o=,tag:Ar4s0Yjb/xApc0YgpikKtg==,type:str]",
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.12.2" "version": "3.11.0"
} }
} }
+4 -4
View File
@@ -1,5 +1,5 @@
{ {
"data": "ENC[AES256_GCM,data:EJjv/wFOznFk/cAv0CoOgHP0rT1ODGzDTF2X4m3rkoRuLMTnHioc6ne4FL2sbO0pVy796Yvi7CdILYo7yHFzw7Ea+1+Gqh4abbgMBDtgKturDEMotG+prYVq5pvx8POO8KDZ4E6EaZarGGTSLgzQnF3rxN4rSSxE/AbTdln6uITa8Q61UMOY9E8RCsWyO4wY+BwGI1FBPaEOKCqQmdq69h4db/m8pkAWdDczZwKht5GSLIQuEPmpONTPPRI6ny9y2I4lVIPaSoNYWSUKiOMRkSItSjk+Vo47iACFW40mSdeayXmilHQk1uBcUKaPqtbm9eSkZa9OAaTTaSzPiwbfiVmS4KN6oDO/3Vx14DBsaokfW8wl0uyq4hTgfyVUL8ArC5SPlAW4flHxgTt0HzK8+GBA4cGak9qf5vH9wloccV2UkX1e7YUkRj1p+rZl/HnvmVatfGlkgwcniORmSzYNcDmr8OneWVkTpUTwrT31ZLlkHftBpTuhP0NE5AIXGBDy1TIHrOkE9Q4BxDcKuTj2mM8AHKrkejl5nofHNw4NpKGRpvZjdN7A2H4tF7+e9x9VxX7kkPNrQ1MqaQjspOKztN5BL261nKPG/4jnxnyL5gB1xWMn/ifuUB4FM9meUDscN/xQQCnHU4uy5NEE5qO74vIywGmQiXDnAjLSi8nSGNHFhbg5B3vAqxpJH5m/Xa+phgP9aqkdYDP5,iv:4qLwVMpsCynVNJa4FeiIfwsGoBvCg0JgJl8oqoVA3U8=,tag:lIBZCdeR7LX/S0OyJ7KkYw==,type:str]", "data": "ENC[AES256_GCM,data:TroErAaIJCpWgVkxmoCgxCekphwh5x9oiFXnENXoiXiAaWnUWSB9y2sNbuGTxq8ngWt9pnZ4ZWWCiLaMvk1b/rjJCZzF3mJh/SuzqUkrayspTPcSTbQVHOHlrH7TKVSBJDQCZmAw0k4E0unSxoujEOorymzTY8ZxJTuSu3ugOez7Z48bDTgv4xMG9CvJku/HKakg/DgrAGaTXgfwal4hSB/9inNd9e1uq4clrkDhsN+zg6uJ+EHre/MUkf2MaIG5EI3y904+jm5Zvm5gTynPCjbVvVyjjXenGOwzS3fkxSVJjDvZItn3QZpKC/OqyrrX+c0zEiQMK880E1Ru4f13QphgWoMkthtdNSRoJqKHuK8UJ5onlfOmLkfQjKQ5cIYWgyI7dq5Rfx2yGbNMNEwAQodN3AC5NaLHdcFbs9Yi2VSAKbv5aEifizHYy3HgjxYcSW0EM53/Sn/CL8G2HK7ei7qeYbTT9bFbpgbPYiUeBuaN2Jfx13Mh5yWs98NhhIltjWtrtvvtBrBf7tPo2nAGVW781MaGF5uS44WVjxMMrFPq6WHRB9pwop5AS475h6ihmUIx4Pg/3JFV1uLXtvEeNuiBOULrwdkt1MXRxz6uiYux3WdWpljq1AIvRCLN3Ehi8VYEWyvEbP3gMp9EeOeJYXZ07hFV5dJCJTF7V1sP8GOCWmj0Ro61CEH13OA8V97M8Vi6ZdQg/o+Q,iv:1/HTU2AHTRSPun59Xa28yjlg312bTdDkiicQzO8515E=,tag:T/wEKWpWbhri1ZttG1JRwg==,type:str]",
"sops": { "sops": {
"age": [ "age": [
{ {
@@ -15,9 +15,9 @@
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBFZ1J2\nNk9yWUNaemVBOFRiVmdmWGdRWVN0UG5Hc1lZRTBiaHdnS0E2UlN3CitPUmdjdVdu\nS1FXbjVCRkxZUk5KdW0xRzNheWJ1TWVYcUJMK3k0TlRFSWsKLS0tIFJSTlN4a29x\nWG8zUlcvYmlZQkQwT3hlWFlOVUIwSkt3SE5RTzhQWVIxUkUKVSMJtNCEZ1KpcUgQ\nkuTFjaBHvizq980kkbNbD4FgeCAPZ3CwXA8/nKhN03iPeFqwX5AsO0n3+ge/qMnO\nkoRc/Q==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBFZ1J2\nNk9yWUNaemVBOFRiVmdmWGdRWVN0UG5Hc1lZRTBiaHdnS0E2UlN3CitPUmdjdVdu\nS1FXbjVCRkxZUk5KdW0xRzNheWJ1TWVYcUJMK3k0TlRFSWsKLS0tIFJSTlN4a29x\nWG8zUlcvYmlZQkQwT3hlWFlOVUIwSkt3SE5RTzhQWVIxUkUKVSMJtNCEZ1KpcUgQ\nkuTFjaBHvizq980kkbNbD4FgeCAPZ3CwXA8/nKhN03iPeFqwX5AsO0n3+ge/qMnO\nkoRc/Q==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2026-04-11T11:27:20Z", "lastmodified": "2026-01-30T13:42:30Z",
"mac": "ENC[AES256_GCM,data:ShLwbQvfJVDXyhu6Yf1m93BVQ8s39ATOAugtP3iO0dwqJSd1mR7njh+2emoFIIy3Bn7RkgJVcLuuj4oWWZ6v4nPemSrCwwj1hPSMU1EjqRFGjPaHGj8S7KmKldanHpUCXMuEKoCDT5B2ye9kmANAitn6X8GhoWb7NcCvkW4C7pw=,iv:tMv/P24PNioV9Ot8U1avbifGq1EJHkqIpyUX01Q+1uw=,tag:heOlnL+Abjbg8CGQmEmmsA==,type:str]", "mac": "ENC[AES256_GCM,data:KuB/Zdzy5gKDayUY0YhSNrKMnG1tdzRnxZvsTjj79lYoZzQ/9Tw1mAmn3vBjJx/aZtpXusxN12uxP1vzqFoAOpvbXGTDRv7fhCaq1CSayWSrhddwRlAIaQ6tUAOOu/fcoofTB6KWJNFhhDwn+o5lF48cgp1m7SL+op1NDkXBoK0=,iv:J0jUA9LfBoT1hBgoItqYdM6MmRhamTZCo9/TJKF18ck=,tag:SynvQk7+D83JAikLH4HNSg==,type:str]",
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.12.2" "version": "3.11.0"
} }
} }
+4 -4
View File
@@ -1,5 +1,5 @@
{ {
"data": "ENC[AES256_GCM,data:SyqN/4fc7lm3Ef3b2jQ/na5g8bkHq8hwJGMBrJwD4LsZpF3NHWhOpgnsd2BmxVrMEtVidyDEkEGH/xkb5eOgCmqzlkocVwwCwNRutFJxnPePtOGIvnBoIiLgMRl4XLhBMyNeGfLSZCpq8F2U2KuAnsSNV7ZaF/uGyrcykXw21w30HigDQsAbrRKpaz4TMtEdBPjsGhif7/r/HXDD+c6KOikcvVbAtsUJzplHUtSzP0KkjN7BeEfrLkLiMJwWOSn2hc8ITtY/uyUkUDR/7+l/GGCMmucHrnJHrTWkjI3okToC/fSOd0oPV5tOkI1GoAdz2eZ6bR1dq7xcQceKepqf7cC2oXowAG3xQcSGWUvyrbdhZ8NtLhpzFVcFlazdG80e59CjkvfUWv5YyAnwbSRjBanAnm/TjaP+UnhXqd03mzcqrrglvwcIFRnshu2GQCWXg0If+q2pbyafdqjAi1yPleJZa+QZ8OQkjfG/HUeLyZe6QPIpzJ4wDyA98piI8VAJsPfBsQiFdsT1dtNeroDesy6fypbHtZgkm8kWlJEdutcUzSm+sFVTeLjyifrehiTrGQJfRzFrDjStd43hkVCRuDjmCd6JVxKk1Eqg5isF9GPrpyAgLwQt01RaRnLB/m70pytW6prUmw==,iv:c5sJKTvsBEvV4x+o6LUjJzDGb2JiM4cHkz+IoDSygc0=,tag:3tdJnCQawrawd5jVrls8Qw==,type:str]", "data": "ENC[AES256_GCM,data:pOo8Rmhpw99QVkUKR/MHo1MoRfKzWgiqXxxX22g2ZzjvinCO9X/N6m63I1XlpiOMVmpEvzFtvQXfaZy7a4D4qLmpa48jsEgGLPm8QXbPFpXNCAVLKU10msKxw/m04dZbB6fJADvG5TM6wMFmsETLl0wMPXPffW2SI4CysSZsmSXUZKGAKjr4sPkUCDW9iiCKTo75r5eLVE3HH8j1OeIknzTDX4zJkoci70pVm7CnKi7bjt515cbq3V9aug7U34I79UlGOB0NWNEU10KodbjnZlY56+K0UBsz5ao+BwRIbxf40a5QUXd0bluqzHENpXlsUja0eSKG1kWFsB+ek5S48GA1SjRkXpStvZoHpUZ7YjeENdqvS1rjteUkrexSB0h3PntJmreERcZoO+MJYVsa5MpF8VkEz6oI9v+ECUA70YEZw7IszsHhq3NnR21aUTok/S23XpbEbxFuKdseQ+8VrBI6z+udIS8o579xcLBXSDhe9vvrdqjMw4enQI03/eKWMjUD8e5r6VbzSaNIQAeh+D9A0CR8EceyFcccY9/XfB2iPzVK1F/PaiAh6oMxWRnyj2wg3GWVoxNHsOKloWfPN68X30V5izvIWlmStRfjvC7yakEde8B6V3PabO8rQlezuasNCvqKIw==,iv:eKRT3L7YXMpJa+QGy7MuB73RsjVIZlaXbc2A2UKrZzw=,tag:7YZ2pqP0xUo9N2ByTEwW/g==,type:str]",
"sops": { "sops": {
"age": [ "age": [
{ {
@@ -15,9 +15,9 @@
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyB5RjZU\nR0RVcTg3L3RQSmZnQnJhNm5vaW5URkNySUNORVJTRzVyWVVHdHdvCkd6Y2tvV1Av\nSjF6NkVNNjdKWnZyNi96bU9sY2VkalJNdWpxQUcyT2R3MFkKLS0tIEpkeFpWUE9t\nY0ROMS84QmM2U3M5aUN3ZkdQZi9JYnZCRzl4eDg4NzlrUW8KcuCDvvHFl/oyjVAo\nDlH1OOwPELWVWqckshUkX1MCMW+Qcv5R52jICVlyBVsyb+eiX4Bxgo4KM352KhWB\n5hPnIg==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyB5RjZU\nR0RVcTg3L3RQSmZnQnJhNm5vaW5URkNySUNORVJTRzVyWVVHdHdvCkd6Y2tvV1Av\nSjF6NkVNNjdKWnZyNi96bU9sY2VkalJNdWpxQUcyT2R3MFkKLS0tIEpkeFpWUE9t\nY0ROMS84QmM2U3M5aUN3ZkdQZi9JYnZCRzl4eDg4NzlrUW8KcuCDvvHFl/oyjVAo\nDlH1OOwPELWVWqckshUkX1MCMW+Qcv5R52jICVlyBVsyb+eiX4Bxgo4KM352KhWB\n5hPnIg==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2026-04-11T11:27:37Z", "lastmodified": "2026-01-30T13:42:54Z",
"mac": "ENC[AES256_GCM,data:b0n/SPZj06qfPOiHvNPw6bmkpka5oqYUL+Hs2X0tLZUsE5QkXvRFq7VxJDakc76EAMBkwjOyHXAAjKx/memZXBwXhUvCpGUNt4lwNxPect5kl3+HHSVAHrmqIH5hccImXNLayBcr4VlRGiXAZwWiS26td1PHq6EzkR1nNCz9nfE=,iv:YO0TqCST3ZkP/2NaBbkAPkHbFCD2kXPMu6ms0ySzAIE=,tag:0BO+AnbEzCUGP2lNW7/31w==,type:str]", "mac": "ENC[AES256_GCM,data:dRhW2TK8VoeAAgxieq13N9DOpDebn23pzSGVOUR1CREv7xBlQNbbG5oZ8wtOMmVPtYYITsbrP+83Bvc3hAgF+TJ5Q+bUIc79YrpKE4JQpIkF54XWuQS+xr6CQViRu9IkNSAINSDBGC/h7TQJbU+VynUbwTTJWdDwFOZRDCWxlXY=,iv:33D22OwdZ/0p5PTy6iPjoiOOHqMA12NTCYSWSUMTQ6U=,tag:Kal99S7ufV+JsTspWaX7OQ==,type:str]",
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.12.2" "version": "3.11.0"
} }
} }
+4 -4
View File
@@ -1,5 +1,5 @@
{ {
"data": "ENC[AES256_GCM,data:xZFoibSkPakh2VMwyrj0+7Epgo3kcJ92TV5/xg8BE3k+cefghPQzXfkIJWsqwgWoDSaHBpb0L6R5TyzAtSrmPEmyM409jiI0I7TtzZDMi+tp4YgF7cC0kW8rU7GwfKwreRm5+B3B093EO0jVfL+Qd7uab8/DZY/Qw3Ys8Q5AFQI4vav8dHP4pLWqINEA9gpzzGWfuVBVX2v8GKr7o/2sYNhw76jDcpOrY0O91hPe85ybzG7Acn9Of5hGgSAz7J4NI0SZecTTDWec7GfdOYPlQnBJTSPRe0fT0aMpP8KfTmWmr1GttgK6HeqL/kPy1MiyfuMNfbse9oJZBIq8puM6UFj+cerG+86UbEFS09zO87p3/uCxmPaPYGEl53Y/LMtLNMy/m96hsQtvwiu7yJXLLco9K1i5sCRvQZ6gZ+YYEimCdJQBYu7E8sh2hNwyeV5O6O0fsVGmP0L1v1S5Ea+QrX+1OXG/hhP8pLgco5IVKo9nQ2SKVmHil6/ONz97KmYKbP247w9qWGCBRj1LQ6DTw5LlUcakHfG+M1BUCW7sl1kqIAvvUwDzQiQhxXTJQcBQoXI3aG41Plrn8RW0zjBdyFhpDuABtg1kmWiliNA3YXyu6sy42ARieYJ8I3L2FKgA91HMiWDK9g==,iv:gg3DqBfY/h6oGJy3BdG2AgwSx781daXRk8NADPUH1P4=,tag:6M49wP/dVh8fWoD+Ij9+5A==,type:str]", "data": "ENC[AES256_GCM,data:bNSkFEL7BCq7LJYzK1X0Fn8To+So2+QTSFUN1DZDFlvekywoebj7txSM7jSQKYC3+Henond0MRRsriVOHu61i/k/i7fjOHPi93of4ny5wcS+t3NrFvN3RufNjQqe8CD+y4mDaUge8GGrFBWhtQV+1uw5hbXFOIq8l9JqkfJ8y6bhBi/fznCdO847zvZ0hAesjmrE/tflWn/T7pkNnfrVFOJR0FnXsVavlAVbSxtsrppaZPOgJFNwJ4ch6rP5PxHSyCpsbkak9H2nJOWJdXKGobKG3g01YCjgYMOX9rIfOnFcCBNyZWPGLx9ZT0h4XsHWM++L9lCNHjy4Z40wyl7YMq797HlKEcGEv2RM2KsfO/66836v3JzT6ZAO32otCbSa8e5vaYSKBZVZM/wrzNcE/XTNDRAQij3a3+bZtZDnxhZSQ3FJQVGm4agCbbO8Dqx7buWHGhgMmxnR6ClC3Ilgm9GHAWKXPBCDT3IEgc6S2g5MVKurKcR2Abffl/mN6KQjNocbIXKMu+dvInuW+30Mit5dp/dYBmWIrRqKO/hQtwDFp6jLHo4O+7h7/2YJDlh07W+ejT7vJy1+C0K4eAXSoGTahSgo61Y2F8LKHGBwAxl8N4ri0jKKOH7wB4pkyU+ryjQaeFhB6g==,iv:8f9JchFynDlOnYjrJiK/9ltkykaw5J8rWDwt+QFwzOc=,tag:owaHraC+WUQKn7hMXHcCaQ==,type:str]",
"sops": { "sops": {
"age": [ "age": [
{ {
@@ -15,9 +15,9 @@
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyA4RjNs\nWlYvc0tEN2hOUTA5SEV6MUhTeFViRTBqVWJLcGVDZ0JROCtONlQ0CnU0Z2FWQUlw\nakt0dk1nbVFHaVlyMjBqS3hCSDdHZEYwT0pXaXhOclFvSjgKLS0tIG9ZZUQ2dTI5\nWFVJanhac0QxVHM2b04wNE1jcHdHa3JJYzBlTE1iS1ZPTHcKZPvA9MwYT4JfG3/F\nqSI09TWeEv7TAWGeZr6OS++egtpdVoM3hF8s1B1TZb3bf/BMqo49NEkvD56pOKvo\no0jjHw==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyA4RjNs\nWlYvc0tEN2hOUTA5SEV6MUhTeFViRTBqVWJLcGVDZ0JROCtONlQ0CnU0Z2FWQUlw\nakt0dk1nbVFHaVlyMjBqS3hCSDdHZEYwT0pXaXhOclFvSjgKLS0tIG9ZZUQ2dTI5\nWFVJanhac0QxVHM2b04wNE1jcHdHa3JJYzBlTE1iS1ZPTHcKZPvA9MwYT4JfG3/F\nqSI09TWeEv7TAWGeZr6OS++egtpdVoM3hF8s1B1TZb3bf/BMqo49NEkvD56pOKvo\no0jjHw==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2026-04-11T11:27:08Z", "lastmodified": "2026-01-30T13:42:41Z",
"mac": "ENC[AES256_GCM,data:2wToD3ihDP4FMMcqZk/DPRaZMdscsUKHxcObDKyr+ZV7Dz4/EuLU3gAZEjlqNXqBOjqh7sMf5U3QWSimQ5ZdVE4XAl7GCCbi2UITcTiyot2ZraU264wcQAxhNck2J32zJcAUSOK/3w8s6gCkb/u9HqORMPn/N89eAsO1ZvZ2ikY=,iv:1yw3lTrKRat5J0p1kSjBE64atrUz9XvKzcpZD/ffW2I=,tag:1TWz+U2IhNm9q0IHhUeWQg==,type:str]", "mac": "ENC[AES256_GCM,data:SRxuYiRBCgdYid5GlYDoPbhPWuNPq2A+ItvIuEg8H2RZPpovbdDaj1wO7Jkioy+s5bbf4d8eha3v7hXOmU8cMJ7VdTfQXbJlYMGvGoW14G3d13lT8pyb1goswatF4U9CkSBDVLyyCARloLQQD4jfrts7kvdif/Z8kikStpvsHw0=,iv:h7pf0aAVAEkw1b0W9aYIEYVdq43tByngFI0z1xw3lqE=,tag:/URMCOLxBWxLdXNDr5e0Ig==,type:str]",
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.12.2" "version": "3.11.0"
} }
} }
+3 -3
View File
@@ -1,4 +1,4 @@
FRP_SERVER_ADDR=ENC[AES256_GCM,data:sFBlvhOCWwSB/TpQMEJ6h75hLqI=,iv:D31p3jLjU33TRDxoolAxsTLxlPjm2tq0OesNqzNX3t0=,tag:TZGcOt8kGTFQqgHe6mO30g==,type:str] FRP_SERVER_ADDR=ENC[AES256_GCM,data:i2TPcziuDQaPbNP5Uc8=,iv:t89z80QRyhursVFslsWkCHKrPKTGs1gDin/PuP+UCmI=,tag:DvZdweQp1wckzbpLreOeBw==,type:str]
FRP_AUTH_TOKEN=ENC[AES256_GCM,data:CXFJwOOHEbtn1PI0TQc=,iv:yItYliwZGxZs8YAWksV7BqJP3TUBadxXpf99J5nXR3A=,tag:9earTQfuoLO132UZnTjlWQ==,type:str] FRP_AUTH_TOKEN=ENC[AES256_GCM,data:CXFJwOOHEbtn1PI0TQc=,iv:yItYliwZGxZs8YAWksV7BqJP3TUBadxXpf99J5nXR3A=,tag:9earTQfuoLO132UZnTjlWQ==,type:str]
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSA3MGVN\nU2NSR2F1R3g0dldCbGtaZGRtRCt3NGg2YnZQTGVDN3RtaEhUMkVzCnJrdzlRSTB4\nVG14KzNXUHlib1RGTy9DVnJwdDRaaTZ5ZGVoWWUvNm9KSncKLS0tIGVpMlQzQ24v\nRVhVVTVSTWNlUVN3L0x0dFJMN3JxODZBTHdIUFJxZEViWjQKv+64wRf+a0Ci4XXp\nesM8zaQXeFPIstdsOJCj8yD5ARZi4kUnhRjRK1/xmjyLmh9h8rZ3QQyUF4uh+Jhi\nQJ0Qkw==\n-----END AGE ENCRYPTED FILE-----\n sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSA3MGVN\nU2NSR2F1R3g0dldCbGtaZGRtRCt3NGg2YnZQTGVDN3RtaEhUMkVzCnJrdzlRSTB4\nVG14KzNXUHlib1RGTy9DVnJwdDRaaTZ5ZGVoWWUvNm9KSncKLS0tIGVpMlQzQ24v\nRVhVVTVSTWNlUVN3L0x0dFJMN3JxODZBTHdIUFJxZEViWjQKv+64wRf+a0Ci4XXp\nesM8zaQXeFPIstdsOJCj8yD5ARZi4kUnhRjRK1/xmjyLmh9h8rZ3QQyUF4uh+Jhi\nQJ0Qkw==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_0__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO sops_age__list_0__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO
@@ -6,7 +6,7 @@ sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb2
sops_age__list_1__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire sops_age__list_1__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyAwZFFW\ncERDSnRiL0dMbmVQMGhDMWNSbXpUVVhXeXJreEVzN2dmNlJpWG5nCmV2OGVUMmZ3\nQjRqdGlnc3FtWVpxbHhnMk9xeW9BVUdoTlFud3RKRHNKcVUKLS0tIHZpbTltYnNk\nZEVqUWlhdmloRGVQU05YMkF5aUdmNExPVysxZm55czdZVEEKWo3hFbF1007tSgYq\nzVK1ycmeQglKDNPS1yVedBoF/gj1L69EmjhiOLMMwAetMINufQQpcFRR88VQlqQp\nMPaXMQ==\n-----END AGE ENCRYPTED FILE-----\n sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyAwZFFW\ncERDSnRiL0dMbmVQMGhDMWNSbXpUVVhXeXJreEVzN2dmNlJpWG5nCmV2OGVUMmZ3\nQjRqdGlnc3FtWVpxbHhnMk9xeW9BVUdoTlFud3RKRHNKcVUKLS0tIHZpbTltYnNk\nZEVqUWlhdmloRGVQU05YMkF5aUdmNExPVysxZm55czdZVEEKWo3hFbF1007tSgYq\nzVK1ycmeQglKDNPS1yVedBoF/gj1L69EmjhiOLMMwAetMINufQQpcFRR88VQlqQp\nMPaXMQ==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_2__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ sops_age__list_2__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
sops_lastmodified=2026-02-09T12:55:51Z sops_lastmodified=2026-01-12T13:27:33Z
sops_mac=ENC[AES256_GCM,data:QrjmzfIEQJ0jLF1+yTAqeY3xvgTVT9KDpK1ZoAaYwbUf3GHC2jjZOqWdLtteZuHQZ3Dy+hO550cbiAYVnUUCjdDTPz0apmT+dIH0JtEjOeA7SEwpt/bSwbAFLEDPeXdPAInWsWyOLB2MY5SjDCOP54+rhb2CDnwkgTH7iBPw5l8=,iv:5568pH2EZ7xwB3m8O4GrJ8j+/fNrOwhwCqN3qwj1DQ4=,tag:DAyqFr2PJnUP20+IZ54obQ==,type:str] sops_mac=ENC[AES256_GCM,data:XaYuGlogD+XTZn/S9smZhiEQ1zwIyFjvIpTvbGq6mDNEAETlyqrpPO7mfHVLkWW2ad4p8KswvCpi5RIXv8a7LbZwZgAfR+nUmtVWUyWEYkH50/aRxV+MnZY0r5W9Z2lzqOeecOMCb2IQqYa19lCwewezjGFM7/xkQdRn5GA6FgA=,iv:GvKdzKejgZGJc9JTGM3pogvKvLmQdYe6RlBz7eulYcI=,tag:wPFDLKA2fZA4CYzN9w/mGA==,type:str]
sops_unencrypted_suffix=_unencrypted sops_unencrypted_suffix=_unencrypted
sops_version=3.11.0 sops_version=3.11.0
+4 -4
View File
@@ -1,5 +1,5 @@
{ {
"data": "ENC[AES256_GCM,data:CtcwM7SbH8DqXR7j4m/AebSeet2L0xg50Clycil4p+xS3b1ALroOyYHvY6+audpQmH01yvlYLQNCwtTGQ4rpnsnQPKxb8mmQg8yMpeBEIeqPFxkmsG202lvBBoICMTetm2QwQGhzmwDypYGNbLibOuaem/aUrr5B+OaEisusmUw9vuSXU0miriMm7jBnodCGGAYh38QnwCsJpUuNnzZchFofwGWXMuVfWZMWsH1hoCkCuA6nRVCb43TNpl5Nz15++g60KKgTZsjLhizrMe4pnZ8MzIU6tYTtYUYlzz2QRWmbqvGsXw6WXYnSj78AqUY5qKRXSTuO7ncw9N+qtUBqxZ/aC6ysn/FmdJ20NcJpgGFfM52MfY2lw+OQwNTPyFu8axfJQ0xhcaWFJL8rIJj3mqX6mVwuBDwdblRq/4dEO97gaU9UsfeRtIt+i1bc7Lng2m0vzp+mVeVchQ+X3E4aO5AJBeUsea1dN2+DbDutc83LXl6zzCoEfaDQBYvY3L4cl796hM3Bg/bUdOkwggntMN62DB41C3u6KTUhOahuLiFQc84paKv5gQlRAfQlAuh/bweDYSre4B7crop6xoTcFCaQ/A1qp0nhjDPZwxtFVHM20Ggt0bpawPnvXjkO9HYdm9OuOFuwkwKfkETSlTmHFBEoUJZECu60Rpsz4vla/UQJB83zDvTDxYY5JUYmcv3IzqhGn+fWwbK1DBlKaFMF1IWKhYS4FWKLNdYaJ7Xhlg8fG9C4OHdcyccrxwV0lxo7OhQf+rxpdJccw0Go9paCSaTZUGpxtvhV49mhGQf/ZefyE4SCPtYEa5a86Jt46BGSUSt94uCsUHLVows1hZr8Ck5tKXaMgtDdlIXcpsPWnbgXK5ZOhL4gpLcnoYI/LwVNrF3z8rxeB1DqqDXTpqPhp3V8iYSZE8JDYIfkwvWaiNVT8nPhlMj/vE9ZPsHPXvdSoRW/Jq4GHv/o3I7iAEEu0ZWbCxpYZ1MR8aC5ph52Q38qNKVbwGQOtuTU10dF0PJdak7RcJIdxDpyCgOT/SUw72P59OwnQFPsiWSmgrNvRR7OTF8owSLk4Z4sBK8+Cr1ME7wggac7+DoYf+vGvC+6HYGrRRsArebNb39iPUJgzz5wA1EJIzoKaV59NOSOQdNV/VC0iZWPpZ4zgRGUJJmLFPmO0IZpoRoajW2LQiMh+Ha2kuqEzit5QkrdpMt+heg44e8OdlIijimp7IfqKuedY7xAQhB9a0FP3+fkjv8pZifgDUh8SByTH4o6G0y9HGhivqoYN5K6qvTeXBJzSSi5ra7FbVkLDIMmG79XIqM+YYd1V/hgErsjPTpjP+rXECa8LZSXuT2Ay3T7r1lBkcuj3o3JAHvYNdank2KKCWCnKjZToxHUOv9lNWPIwGp4cfIcDnyPJrEXGzgw0gvKtsHPsJVBl6gBAuYMU4IfqUWAjmPsL1PYpDFlURzn6oBSn4KGPHfRMneWjNGB/8lwgb1x18WvjylPZUPnGUoxz+Es7VvRHtVCWW/LSTMau1LLeXbNeVudnz8DicQj1kiGxxrUblZmSqEciBuzoKU1ZsqONXoK29PXAj+KDSHOBa4EhsZmJGaFX7DBD667RmvtHUTRC8hR4E3n2UmvYTUDEw9aI+9pHPk/ksT7Haxdr4av6Gv0rn7AJaPX4bER8lv5Upqof/067ySI34sSTVs33hzkrp5r/P3e6i28zV4Y6Fm6XGsDwKuNQqm6sv1OlFfoz5xBACtgsRGT+hVpF/OAKcp9etHCnXG0STPD3AN5p/0tIrPqiqZz+isk43gL04mCRaamRBOxSmW41/t6CwDvhcDZjDz2Ygb00H+cHpCWR466KYcbDnDzn43Vtv22Cw5pAdXD5IKlX4RQAOoCpt7D+tV78FIvdOBtuhjayABnxcfJRHVTpzfitLpQ77fpXhJWyryCSOxb2k2lqIAjsYPQtZ57K/69meaRF/8k/9xlBn2/mExn/4uwFa1PWtmjUVI6tE1S6kn3zmXwn/tDjW4MZmDtO7j/QljJEy40+gsh6NXZD+uyojcXZsjRrdHm7vZUgzqRtw7w7Ua0jowSMVKVipwHjBlVKQcpi5IrnuYnp1oGcx2aJYd1IHmQFNYEKRND9XftTttMWP6LoiAMD0FBLjd6iM/3OCirZfjz1qTH4bRjGirtmE5m+9xIadD9AKS0DLWie6+pxSlUxJa+dXU6VjvIrMx53x2TrasGvV5bEiQBHKwNqQes8GfASZukyylNSkHQ6Exrv31GJKmzWohl5rGvyX2d4RZPEQzMEQ+4c/cZ1GIl1P/otO0dEL2lP5XCKLTxmZzC1LRPipt3rJBZe6P8ffxdNpOXR6XIMTIzXKIR/yro25Neh3zyytj7I8u+UQBaZWkxXKNoppYN5WytYXQ7MRpah4ZFTctLB6fxKJnC756oincSAGiDoFTVcdK0urfS9pWCzS2Jj2zalPWItdw39vEmVWIOveLxLzQ5P0EYptJMPA9WtlfWelcLDwVyosFWvgsTMSFsYLd5HRTqM3QDOsNMpfBdH1BcZwJ1J1S4p9qS8+UO4VV7weVDKYpgWgTUtbnTHv/tY9YZClNTNRh1b7IbdX48B8F1PGaeyWuj/lbo438/AjyTisxvph4gxTULk0+iX224fYf5eVY6zizTTryXDW1DwspEa7nQH3KFYI8n1niXHI5nOELzO2htWg8NSpOdRCxyD2FdnsmiD8HstwYJA0tdaDxLM2D18PP3kRQVXB1xFJFhTaYeTfWGn/eWBG4yy+5oLI1fZ1wzKU5VUkuYp+7BBql1K+39WaNPf0IppTHmAIHTJSjub7rCLKJlyf1zKzo7JCeVdCp5QA2Krbue7/ZKWzfGkrIAKT1EDIl0rC/8ALPL2yscmLx176NMKpihxm+8t21QZ4+aLHMXk0jiLbzftNl0pO9USdDudLA9CUynPwpmnC/pOp8EmeihtjIOYykRGqC+uo+pbas9sCOsKIz6I/iSzxEHQIaN/qg9GzEtyPuYVoMsRcZHpkQ0kG/EaehpQHdD8hFJad8Eb0fHZdpANXDT9wnrK2RZkPvcVlanskGO5jM43GIgWE3xKd+jvxkp8FFzfxAYKeWnjB5+YOrb+N89Q6Wxzu2P889tD0sDhXJeWsbByoUnDHtdjnVERDlxMHO4zp3nrq1XSPTv/nvKLRDYEowKulHrBnDy50+512ctLEmDhki9lw6XAbGK5XaiN6OkJmQhTChThxXAfL54w8PxWM7EOb7AFfxeMV9DDySs7vVP4elfeYhj3/SsOzLpT/iqjv2zrdeBF8nRGJVPwZIg4xsjxg/m/vMB2bsooWH3fPu9x5kW4ymXskoS0u17cUUc406oZsttbGAsoRZlLgiRHoQsj6unxahtDnO9cBG8fxKbj8DuPV8Qku2OOA8oFZie6BCfiWzJ7jDVQBwXLbpdqbQ3jC7Z0Shy5eh+Mygj2f8NkCOj4zSwQQsGkXBlVLN4RhlV3fgfx9h0rvkHXHZjaHmNDRuA/fBEfMA+qHr9L6FszG9tiO3HQ3L474nEJInfbI3BwaEog3RTZ/Z+Ptb/XoQPl3tG77qQIafDLByplU5ZQMer3I3So6xNNlRHaCy3wbSlCgHuXfys61TdoiUUhVaDe5fsfM5SIgf8uDRi+tCKQ4ULtylL2v2jKSlQWtGwxbNKm1b62GEw8t97kUC5yuCiC73+6YwDUyfEBmAmqt9bH60W8KXf3LIeRyFia3O+gJuVhbYLEqYXSGZ53ktWQ12Adz49pPTxe1TUgUJim4GcAA3nnRlJ0C+HcY0+60aFn513z1zn3qrKF8QbdEj5ajRGe2Vnnj0OpvDYe/P2Y8Hg+0iT4A6QhEy6CDqOpaTkipetjvEBYZkRh3bwNrmWjDYpWRH6JpT+o6QBT0Of2oGntgMQIkLmcBKQipTVVvCisnw098E074bZiaSrJpPc1Q==,iv:ave43tGCaJ+YZZ5oep3fMncNGGPI+DySnsIJwSNGgDI=,tag:LMyLH3+gWzlsupvOoMmGeA==,type:str]", "data": "ENC[AES256_GCM,data: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,iv:9OV/jdLMu4tsJTRj6Zc/6ZBOzrHM5mi8hf/waddDqTs=,tag:Zl+ZuT7QAXrktWby6kuWUQ==,type:str]",
"sops": { "sops": {
"age": [ "age": [
{ {
@@ -15,9 +15,9 @@
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyB4Tmcz\ncE5NNVJPMW5od1VRR1lMSXp5TDZKV2FnejRscFIrSG9UcVVJbFZRCnBWeGxoMExj\nYW9vQk9IS2I1enFkbFBGYStHN3FxV1o5dXNWODgyUnhQc28KLS0tIHlwdFp3Y2da\nV2N5T0IweS9zTyt6eVZiMXpLRzJDTGI0THQrK3RLWGZEeFEK6LFnlO0/opMCSn+n\ntBfc2IFgtk3lje0BVcfLxpU/DedhDqF0HpXYu1CKZhyP6NQ++AKoz//BGCDDiQ+Q\n9x5hFw==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyB4Tmcz\ncE5NNVJPMW5od1VRR1lMSXp5TDZKV2FnejRscFIrSG9UcVVJbFZRCnBWeGxoMExj\nYW9vQk9IS2I1enFkbFBGYStHN3FxV1o5dXNWODgyUnhQc28KLS0tIHlwdFp3Y2da\nV2N5T0IweS9zTyt6eVZiMXpLRzJDTGI0THQrK3RLWGZEeFEK6LFnlO0/opMCSn+n\ntBfc2IFgtk3lje0BVcfLxpU/DedhDqF0HpXYu1CKZhyP6NQ++AKoz//BGCDDiQ+Q\n9x5hFw==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2026-03-28T07:34:37Z", "lastmodified": "2025-11-16T02:29:44Z",
"mac": "ENC[AES256_GCM,data:1nPYVk49OM0568l2/8/FiR9B2wy3y1HidpGeXulJwxFrT7DBMv34LP1je1ntsSKWvKdP9+JOPCKjXbSQnBq+RaX0RuU3WtNlQ2rMw/Uehf6hWEZCxzsRX1rA7nKKKzxe/QTf9ovUxe61j4flEjDQ2yT4PxHTehVIbhhiyfocDGg=,iv:FuSmFLs/ZhjhI/zfxjVUK6Nc7x8GHQcDRk8B9/7TQR0=,tag:VgTS38vfMcJjjJXRM0j0dA==,type:str]", "mac": "ENC[AES256_GCM,data:gWqTwS7NrwChAL1MfZ/AIQyMqfvZ08jiu0irb4L8bvs2ya0imWrK5ZoNfEPFgcnByKphNP8+njZWcIQ48uwQirPX+Nepofdba+GuNLR9S9sd5aW2JM4IyLbDivViKujEdWk1+m+IB4w03QiFQQMDBPSaMDfmJQO+8k+PoopFzWI=,iv:mHt6F5qyqZTRdmoHRgkL8WIWG4gsQWv8wBWtjz6fHmM=,tag:hLr8pIhOK2yIIAMZIHkT7Q==,type:str]",
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.12.2" "version": "3.11.0"
} }
} }
-11
View File
@@ -1,11 +0,0 @@
MAUTRIX_SIGNAL_BRIDGE_LOGIN_SHARED_SECRET=ENC[AES256_GCM,data:1ruOcaLzDndGuCed9yhlBJb6kxpkBvSDl8uPZNsIa7EHVN7xLrquo5hCW7pMneTmJbulvVM5wm321WAaeTOj0jx/gkkCnh0duja2,iv:IVtdYE67ArlQN94q/TlY3oFzoYHBQxuPLu8ClDu0798=,tag:zjnFtvBdryZSiL6Y3J4g1A==,type:str]
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSAyUGVr\neFhRVERqUy9pRkFNRUVvQ3NMNFlnZEtQVnNhaWZJbzJUUWN4cG1ZCkduU2NJYnIz\nWm9vWHpGS2hPL1ZNdlhHRWJDaGJYOVFucXA3QktLV1VOdDAKLS0tIDROd2dtMm4v\nN1ZETmxkemk5RFNsU3AzTEphYlVKMTVzajFQNytRRGNBUmMKEwwN7MnPNP0ze0XJ\nm7QTQJhnd9QihXpGVYWKneL2Ef2YU1FZGUPOez9syDRepY/tl8jSFo77+aCLJ2/H\nPzM/4Q==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_0__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyA0S0VJ\nTlVpOStxVU1rZ0E2MVVNWmI0d0VxMStSeFJ3dnpONTR3N044dWg0CnZBOFpDbkw3\nWjJ6ZHRQaDNaV2JDNHRYWkdSOVFBSDF5M0kvOExaSnBCeGcKLS0tIGJOSCtHRlNt\ncmpYTmN4dklYWEp1WjR0Uk16VkJjRFNqb2hQNEZHSkdSa1EKpO1hMZr1NTzrEbCr\nycIvP4J3U9X1iTAL2/R98lOhUVPWlu7QN1GWvQIyB3TInTIpKNVV1Q8nkrq8GSFG\n6QHTCA==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_1__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBWbk1h\ndVhCL2kyczUvR09YY3lvYXlmeExjdHYvd1dNQktHcUFVeWdYeFQ4CmJQSTVjY1Bq\nLzh1ZnpEWVJvaUZCeU0rMk5UWXBmMmNDMi9xTERlSlIyd1kKLS0tIHJaYlpaQmtE\nd21nQThCTXBVU0RJRnV0OHFTcWZYeSt4eWlmQVVyUWNSdGsKaPXqoSWS87MOHETx\nl7dbIo4maAV+eXbAbEYF2dZzw+Fea5vTrfsg1QQ4YVNGib7o8nvG2vouMyqq6vI3\n37HGfg==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_2__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
sops_lastmodified=2026-04-15T09:41:45Z
sops_mac=ENC[AES256_GCM,data:yh+dEf2fPHMBLppZ7/oMk7iBZnKJ3Jsiq7H6Kla5/r3/ERHZl1d1TPWwIOAwcc4yOiVKCAgXxN+mY/w9Nn0AbfpXUDYgQPoWMZPuAC97eXsCutzOM6GXdmxuIL3Glah4dAYP6Bj34nuKpp4+G6m08Eni65wQJUYRyY6JQHnc5Kc=,iv:Xmnm2VjIVxtIH5TSnWnHQUq22DbubdrZshWZzX+NeF0=,tag:LD8HBRa/vWERhrA3DzMzIg==,type:str]
sops_unencrypted_suffix=_unencrypted
sops_version=3.12.2
+3 -4
View File
@@ -1,14 +1,13 @@
MAUTRIX_TELEGRAM_APPSERVICE_AS_TOKEN=ENC[AES256_GCM,data:B+gL1Ai045XiEcBkFcaEwByEdHgCrbc00Efd/WEb/s1l3rhIqdEmdyhnpqYJQojDQ8cQfYb1gMOW38sZ0GL4zA==,iv:F3Y92S3rM1qUrRN0cR5SFep+ExeP90l/oiWmrDk4yfc=,tag:CZrujwoVdGFiDKMxgM1tCg==,type:str] MAUTRIX_TELEGRAM_APPSERVICE_AS_TOKEN=ENC[AES256_GCM,data:B+gL1Ai045XiEcBkFcaEwByEdHgCrbc00Efd/WEb/s1l3rhIqdEmdyhnpqYJQojDQ8cQfYb1gMOW38sZ0GL4zA==,iv:F3Y92S3rM1qUrRN0cR5SFep+ExeP90l/oiWmrDk4yfc=,tag:CZrujwoVdGFiDKMxgM1tCg==,type:str]
MAUTRIX_TELEGRAM_APPSERVICE_HS_TOKEN=ENC[AES256_GCM,data:LDNVwG4cOqgb7stZFCAbzBpqTvt+kcuItaVGrM6Zd1wpxTZJ+sHQTf7acCh1obxdw1S13j8Kw2FsmBk4ojkWtQ==,iv:WJrt9G6BhZTuCxxC9A2AlRvon/MlCa9Y5dGNZ2DO7Mw=,tag:H0SLY4E/G1eJ0Tua+/zxww==,type:str] MAUTRIX_TELEGRAM_APPSERVICE_HS_TOKEN=ENC[AES256_GCM,data:LDNVwG4cOqgb7stZFCAbzBpqTvt+kcuItaVGrM6Zd1wpxTZJ+sHQTf7acCh1obxdw1S13j8Kw2FsmBk4ojkWtQ==,iv:WJrt9G6BhZTuCxxC9A2AlRvon/MlCa9Y5dGNZ2DO7Mw=,tag:H0SLY4E/G1eJ0Tua+/zxww==,type:str]
MAUTRIX_TELEGRAM_BRIDGE_LOGIN_SHARED_SECRET_MAP=ENC[AES256_GCM,data:UcpnOqYwa3fFvU6/A+qUMfB784FuX/wBoilS3lZs3HHLazr9a12m9xivVs+9Kd7l+5xi5VqtQf9ZyF6EjGIeAFc4BFpADx2uvL7HP5kZ2WLGky/un1w=,iv:9ZtTU/iPhOX30uSbx7h3IMUcnCh127lE18Z3gkiydzo=,tag:DzHPBeKl9C28shR6c6t6mA==,type:str] MAUTRIX_TELEGRAM_BRIDGE_LOGIN_SHARED_SECRET_MAP=ENC[AES256_GCM,data:UcpnOqYwa3fFvU6/A+qUMfB784FuX/wBoilS3lZs3HHLazr9a12m9xivVs+9Kd7l+5xi5VqtQf9ZyF6EjGIeAFc4BFpADx2uvL7HP5kZ2WLGky/un1w=,iv:9ZtTU/iPhOX30uSbx7h3IMUcnCh127lE18Z3gkiydzo=,tag:DzHPBeKl9C28shR6c6t6mA==,type:str]
MAUTRIX_TELEGRAM_TELEGRAM_BOT_TOKEN=ENC[AES256_GCM,data:Gurr78m30j5bhutgJxGCZL4EC5Il0dOCiKnqTG+JskULiwn+82ejo4W+iygvkA==,iv:0DmEq8HmS3S1pKHb47gsZ6/m2Gr2jP6dlw3ytDPfRhE=,tag:8QmMUgv6KigJT4jA4caLFQ==,type:str]
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSAyUGVr\neFhRVERqUy9pRkFNRUVvQ3NMNFlnZEtQVnNhaWZJbzJUUWN4cG1ZCkduU2NJYnIz\nWm9vWHpGS2hPL1ZNdlhHRWJDaGJYOVFucXA3QktLV1VOdDAKLS0tIDROd2dtMm4v\nN1ZETmxkemk5RFNsU3AzTEphYlVKMTVzajFQNytRRGNBUmMKEwwN7MnPNP0ze0XJ\nm7QTQJhnd9QihXpGVYWKneL2Ef2YU1FZGUPOez9syDRepY/tl8jSFo77+aCLJ2/H\nPzM/4Q==\n-----END AGE ENCRYPTED FILE-----\n sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSAyUGVr\neFhRVERqUy9pRkFNRUVvQ3NMNFlnZEtQVnNhaWZJbzJUUWN4cG1ZCkduU2NJYnIz\nWm9vWHpGS2hPL1ZNdlhHRWJDaGJYOVFucXA3QktLV1VOdDAKLS0tIDROd2dtMm4v\nN1ZETmxkemk5RFNsU3AzTEphYlVKMTVzajFQNytRRGNBUmMKEwwN7MnPNP0ze0XJ\nm7QTQJhnd9QihXpGVYWKneL2Ef2YU1FZGUPOez9syDRepY/tl8jSFo77+aCLJ2/H\nPzM/4Q==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_0__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO sops_age__list_0__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyA0S0VJ\nTlVpOStxVU1rZ0E2MVVNWmI0d0VxMStSeFJ3dnpONTR3N044dWg0CnZBOFpDbkw3\nWjJ6ZHRQaDNaV2JDNHRYWkdSOVFBSDF5M0kvOExaSnBCeGcKLS0tIGJOSCtHRlNt\ncmpYTmN4dklYWEp1WjR0Uk16VkJjRFNqb2hQNEZHSkdSa1EKpO1hMZr1NTzrEbCr\nycIvP4J3U9X1iTAL2/R98lOhUVPWlu7QN1GWvQIyB3TInTIpKNVV1Q8nkrq8GSFG\n6QHTCA==\n-----END AGE ENCRYPTED FILE-----\n sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyA0S0VJ\nTlVpOStxVU1rZ0E2MVVNWmI0d0VxMStSeFJ3dnpONTR3N044dWg0CnZBOFpDbkw3\nWjJ6ZHRQaDNaV2JDNHRYWkdSOVFBSDF5M0kvOExaSnBCeGcKLS0tIGJOSCtHRlNt\ncmpYTmN4dklYWEp1WjR0Uk16VkJjRFNqb2hQNEZHSkdSa1EKpO1hMZr1NTzrEbCr\nycIvP4J3U9X1iTAL2/R98lOhUVPWlu7QN1GWvQIyB3TInTIpKNVV1Q8nkrq8GSFG\n6QHTCA==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_1__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire sops_age__list_1__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBWbk1h\ndVhCL2kyczUvR09YY3lvYXlmeExjdHYvd1dNQktHcUFVeWdYeFQ4CmJQSTVjY1Bq\nLzh1ZnpEWVJvaUZCeU0rMk5UWXBmMmNDMi9xTERlSlIyd1kKLS0tIHJaYlpaQmtE\nd21nQThCTXBVU0RJRnV0OHFTcWZYeSt4eWlmQVVyUWNSdGsKaPXqoSWS87MOHETx\nl7dbIo4maAV+eXbAbEYF2dZzw+Fea5vTrfsg1QQ4YVNGib7o8nvG2vouMyqq6vI3\n37HGfg==\n-----END AGE ENCRYPTED FILE-----\n sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBWbk1h\ndVhCL2kyczUvR09YY3lvYXlmeExjdHYvd1dNQktHcUFVeWdYeFQ4CmJQSTVjY1Bq\nLzh1ZnpEWVJvaUZCeU0rMk5UWXBmMmNDMi9xTERlSlIyd1kKLS0tIHJaYlpaQmtE\nd21nQThCTXBVU0RJRnV0OHFTcWZYeSt4eWlmQVVyUWNSdGsKaPXqoSWS87MOHETx\nl7dbIo4maAV+eXbAbEYF2dZzw+Fea5vTrfsg1QQ4YVNGib7o8nvG2vouMyqq6vI3\n37HGfg==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_2__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ sops_age__list_2__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
sops_lastmodified=2026-04-13T07:43:39Z sops_lastmodified=2025-08-22T02:52:07Z
sops_mac=ENC[AES256_GCM,data:xZVKnXOP27j7fiFaiTQbKDCYKg2ywPfzqY0TSJK6C28MAANXYqTBSvDKBmrw64bNQrf1hcUNV3nqqVGMjCPDg2NkY4bWYPYpGKMKZEQ0WmMeR5Dudlryi2+ga9f9fG9vs0u8YJGJvMnob2EvfpPKI5tPBiCLc8AC5vCVlxrRvTM=,iv:PqI752mqSn7oZV4vwS/t/whRTUG1GTnYwmLP2GOqHdg=,tag:C4cso3fEjmX9jqEFDWrDIQ==,type:str] sops_mac=ENC[AES256_GCM,data:ahjIUwIKPUfqTSl704AekBIVTTe8n0YUbMyVKxFSZb5ZoaQ3KRVgWPWCAn9n/Qwpa1oHWvVcqqbTd+wrxqmkpOgFCfg72ZWdPsSbzg6RGcUVHlg5r2b9DE7Pq+qDtgNBVkmdmlCAY2+mQTepXv8fGbWltu6tzdqOvsOBwfSw694=,iv:OJ2M6X23k5LokCrx4Ekz2a5+hUGV66YNjlFBQZdrkSA=,tag:2xjX3CX45kkpYt+skEgKOw==,type:str]
sops_unencrypted_suffix=_unencrypted sops_unencrypted_suffix=_unencrypted
sops_version=3.12.2 sops_version=3.10.2
+43 -33
View File
@@ -9,50 +9,61 @@ external-controller-cors:
allow-origins: allow-origins:
- ENC[AES256_GCM,data:Ow==,iv:C2R4gooPGj4lranMXP6Uu+nCbGhVk1S37dBKbYgdsRU=,tag:onXhjT4c/qMoayForPKwEQ==,type:str] - ENC[AES256_GCM,data:Ow==,iv:C2R4gooPGj4lranMXP6Uu+nCbGhVk1S37dBKbYgdsRU=,tag:onXhjT4c/qMoayForPKwEQ==,type:str]
allow-private-network: ENC[AES256_GCM,data:mxDrog==,iv:L4hT2zLieK7nQnp5GvdHTsnSkeTz61v77nr281lAcag=,tag:jCQgs+0aDrl7BSZYxI7qUw==,type:bool] allow-private-network: ENC[AES256_GCM,data:mxDrog==,iv:L4hT2zLieK7nQnp5GvdHTsnSkeTz61v77nr281lAcag=,tag:jCQgs+0aDrl7BSZYxI7qUw==,type:bool]
dns:
enable: ENC[AES256_GCM,data:Rp3LZg==,iv:NHk64bGDFmimNmXDk9n9ZqLFVbO8cyWVqivRSDxUowk=,tag:Y5IhMI7n2JtcXfFnEY77PQ==,type:bool]
default-nameserver:
- ENC[AES256_GCM,data:eEwdzhx+ysGj,iv:FZ6vsFPP5dnfcImydU46J8vA9GYbejP3zEXHA6D+6J0=,tag:lmG+OzJwFtBKHraF4PsCjQ==,type:str]
proxy-server-nameserver:
- ENC[AES256_GCM,data:n3PMmscYUm2eXFe3/uNsKPF0rwyQBtGTsA==,iv:FMOP4qohNNqfLIo7U6mk5qxBm0eXVFCbI0KD7kfw1/Y=,tag:N6H/gESlK1Cr5J2T3Mxldg==,type:str]
- ENC[AES256_GCM,data:G5eodgYoIwtWDMnuEg2srdwCJqQi+OAsyPtp4OvT,iv:5maumIhsmc/QE1ey4rufm6Y8G4OqG3qyY0Ybv/24LoI=,tag:heYvV2IVsIMRBEwQwlJlWg==,type:str]
- ENC[AES256_GCM,data:3CbO5pelMlvJxgoawFkEmARs8Xwgw87eKg==,iv:A21aiwBT98NT0VQ2vaepx/F8AG8rWawNWdch+yVDYCM=,tag:OkTMbH5QnXbxf8NQyer8pA==,type:str]
proxies: proxies:
- type: ENC[AES256_GCM,data:82CKWRU=,iv:MmoXN4hqcC2BE93Tfex3swEj50XK6jmjLIWAyRs8WRI=,tag:faiVNIHjq0fRMLiiJoWamg==,type:str] - name: ENC[AES256_GCM,data:524kL2VUV/Zr,iv:up5Map4oTAPmalvdpiZAob4wrxMAPu9w3Nk8VclDPOI=,tag:9FKxdoiHzUI9LBpt9QOy4g==,type:str]
name: ENC[AES256_GCM,data:mLelhl+5dSLY5TIjoTw=,iv:cJtCH/fMib1KapWVQGsRgy5yRCUC5EZq4RdahEb7NyQ=,tag:ree+OgPt6ixLigZVo06dwQ==,type:str] type: ENC[AES256_GCM,data:C7hjfARP,iv:r+5/qimlashka+qMjrtlsOEMBFuN8/4SDrzzW/WM+KE=,tag:VVpvomQxVFxh/GTRW59p6g==,type:str]
server: ENC[AES256_GCM,data:Y5fvB0IJTMLASoZTxGKK47Vy,iv:O7OXDcbN7MlZvXYMgUiaPAUEi+L71kkjNmjuA3yeVp4=,tag:3V0w5k2K247W0VLHP3NG0Q==,type:str] server: ENC[AES256_GCM,data:UlqxHe1H1J1OH4Ld,iv:um1xP8HAqMTv8sqZewFBFaIoKq5MaVqultx7q9A9v4A=,tag:gGR1Uxwcap2gZYBmPuG76A==,type:str]
port: ENC[AES256_GCM,data:wX7PiQ0=,iv:TjP+EpALTY1JvJ3A3D+Y3+2e4WfXCEU1TW0c5Jm5iLs=,tag:MK6Of14YD8286wZMaiU/uw==,type:int] port: ENC[AES256_GCM,data:x46frQ==,iv:y3ZtVJQP3q08duFGUXSH5xLo9Q6GZmGvhmCKzNiztfE=,tag:2k6WGrK1wGa4QwOYJHnwkw==,type:int]
uuid: ENC[AES256_GCM,data:ctolvO2CZR0rBmygCZ5xJT9z+CXr4tBhPXK/XeZLUQG+B0l4,iv:2kpDYwMRDgOgZZDlT/ubbNGgwziIx66qgQr7AKb1X7M=,tag:lPr7yX309LKCXPXhr9XgCA==,type:str] password: ENC[AES256_GCM,data:SoxJyZJLwxRQoErQ1ZHObnM=,iv:YVDRtTb0P15vA67ZUQgCBX1s16iqjrtG0oodE9RPDMI=,tag:zsKj2mwEWwDtJ9QGtbix2g==,type:str]
tls: ENC[AES256_GCM,data:bzKiJg==,iv:gQCofh2q5oB1gjNPgRfCALO04ELEvzRCwQYjzMzSQEM=,tag:QEqyUd5uYS4QzbG0tL89vw==,type:bool] sni: ENC[AES256_GCM,data:rkDSKvEwqgNZE4Yh,iv:Nfi9j5/IKygbSDgBAvAzHrqEYFMQPXjdI3aKHNiFdFs=,tag:N7MZw4nUOGlo4RIo08DAmA==,type:str]
servername: ENC[AES256_GCM,data:+qhHvM8+7o8dS5l0hdA=,iv:NE+Il3P11fhhLQ8OT5ExCwWBQROrN/h2iEkVoHGBwh8=,tag:j/M3aX61J0KMWmf7CGt52g==,type:str] skip-cert-verify: ENC[AES256_GCM,data:uea1ExU=,iv:z7oRGpeLjzXA1RB5E3ucJu/bPo110v81AFR+4dDQYwA=,tag:AsorLzyJfwJNsJShlXQBtw==,type:bool]
alpn:
- ENC[AES256_GCM,data:bG8=,iv:7UIRMQ7KGnZUPvfFMGLcworWFQFdd9toCasEeg/IEco=,tag:QwkRWsGXBGxODKIasUqXuA==,type:str]
- name: ENC[AES256_GCM,data:xaDTRcazw8v4yIfIXg==,iv:oH0Rq1OBLYY32EipIUv0mjIKjq/ybJergz/BIHknJDk=,tag:Qk8LoifCjYvaYWEWytfZAg==,type:str]
type: ENC[AES256_GCM,data:82CKWRU=,iv:MmoXN4hqcC2BE93Tfex3swEj50XK6jmjLIWAyRs8WRI=,tag:faiVNIHjq0fRMLiiJoWamg==,type:str]
server: ENC[AES256_GCM,data:xPCnWkVYwD2Ty0IzUJPvY6U=,iv:Vz2QPfHSsVc3jVWj4hPNkMl2zCAvQgb9UdmMTEjdLHM=,tag:Ym1vSk7J5Zfi5UAVoCNq7Q==,type:str]
port: ENC[AES256_GCM,data:x46frQ==,iv:y3ZtVJQP3q08duFGUXSH5xLo9Q6GZmGvhmCKzNiztfE=,tag:2k6WGrK1wGa4QwOYJHnwkw==,type:int]
udp: ENC[AES256_GCM,data:8iM4vQ==,iv:5nefyZ4vsEhp1/XwUbmXKnIIcxEtd5SohSQ873OgOkQ=,tag:iz+362f4UOcJyphLB5tSww==,type:bool]
uuid: ENC[AES256_GCM,data:VetgP1G1uk96GkbkSfjxSEm95IInxRqntOBiwF0CmMXMpIzY,iv:Kzh8gb6Lu3yiy5wXIUBOy/U2m4apjeFbLu5sKBwGWUc=,tag:y4LGosvnP8ndmyUQ/MMHTg==,type:str]
flow: ENC[AES256_GCM,data:vHCtuVUj2yIKxyizOXTuyQ==,iv:+shc6Vge0B6xo4+2vW7QdO7k/Jh9w8Fu1zMSusgbiEs=,tag:2KSP/SBjp8ytO2pfBAKVVg==,type:str] flow: ENC[AES256_GCM,data:vHCtuVUj2yIKxyizOXTuyQ==,iv:+shc6Vge0B6xo4+2vW7QdO7k/Jh9w8Fu1zMSusgbiEs=,tag:2KSP/SBjp8ytO2pfBAKVVg==,type:str]
client-fingerprint: ENC[AES256_GCM,data:88kICBNA,iv:i3h8X0hpUeezcEiRd2nbrjVGZ6NLHH7Ka50bRFoIwEo=,tag:OFkRfXxPWYX+eXoVnCLGpQ==,type:str] tls: ENC[AES256_GCM,data:bzKiJg==,iv:gQCofh2q5oB1gjNPgRfCALO04ELEvzRCwQYjzMzSQEM=,tag:QEqyUd5uYS4QzbG0tL89vw==,type:bool]
skip-cert-verify: ENC[AES256_GCM,data:SKLBC3I=,iv:3YVYwUL1TkF1Q2jP8POxTXj9P32snbnQKU9QNdQRNOE=,tag:vtelcGHAUrMqNttYVk8JZA==,type:bool] servername: ENC[AES256_GCM,data:MnvMN8il4yFs0w==,iv:LXpx+PWbHboJebeW/9fWg1Pcbqbwli47AsKM6+3BYKE=,tag:jZxyCkjpospSIM/6nXfmMA==,type:str]
alpn:
- ENC[AES256_GCM,data:bG8=,iv:7UIRMQ7KGnZUPvfFMGLcworWFQFdd9toCasEeg/IEco=,tag:QwkRWsGXBGxODKIasUqXuA==,type:str]
- ENC[AES256_GCM,data:pOVgMomF7xs=,iv:KfTzpFOCBb6TLGs3ONHKbN7xSroiiqNYxgh+OLc2+OA=,tag:c54xKm85/lQC6MYUiYmz5A==,type:str]
reality-opts: reality-opts:
public-key: ENC[AES256_GCM,data:njlpWUGKonBXtEo7KiNKsjiwmq9ia3MulDG2HCCtcBrGtHO1w1OzRoI07A==,iv:kXR0X8BEYSU3O8vSJ2d12Ckl+kD6c1tI7UHCAIyfTto=,tag:4Pwk3MEKu7yJf1LKl1C9oA==,type:str] public-key: ENC[AES256_GCM,data:msJSCf4irU8nGMZqSNU9sbZXD8bvJKvGXgPNGbGWZr1Ss3p1FWT7EuDwNg==,iv:EZzHRBuAni9/CYD1pBhq7xmjCG3bsH+MvaYtv63UYnA=,tag:+3AM644/OO3sIDMXQMypyg==,type:str]
ws-opts: {} short-id: ENC[AES256_GCM,data:ERSoFfp8UlRBJr/6CRUgWQ==,iv:sWuK6zVbT2gNGDuhl981aXmg/IUenLH9Xk+EUsGbL6o=,tag:qTNB3XYJudknkQUgJA/mow==,type:str]
http-opts: {} - name: ENC[AES256_GCM,data:zKRNc9xfDgCx8Yxpp0I=,iv:plmHDReDGfVCz1i7QlN/Oo+5hhME2mw0il+LdgE+pN4=,tag:BtXj8qG5UeAYMAbcWSRnaQ==,type:str]
grpc-opts: {} type: ENC[AES256_GCM,data:C7hjfARP,iv:r+5/qimlashka+qMjrtlsOEMBFuN8/4SDrzzW/WM+KE=,tag:VVpvomQxVFxh/GTRW59p6g==,type:str]
network: ENC[AES256_GCM,data:8I3g,iv:mspjQ+Py5SRWATFhMFJ/f4gfWi1eN4564vdExupMUPo=,tag:9kUBTuI7A14GgJvDJHXK9Q==,type:str] server: ENC[AES256_GCM,data:xPCnWkVYwD2Ty0IzUJPvY6U=,iv:Vz2QPfHSsVc3jVWj4hPNkMl2zCAvQgb9UdmMTEjdLHM=,tag:Ym1vSk7J5Zfi5UAVoCNq7Q==,type:str]
port: ENC[AES256_GCM,data:x46frQ==,iv:y3ZtVJQP3q08duFGUXSH5xLo9Q6GZmGvhmCKzNiztfE=,tag:2k6WGrK1wGa4QwOYJHnwkw==,type:int]
password: ENC[AES256_GCM,data:SoxJyZJLwxRQoErQ1ZHObnM=,iv:YVDRtTb0P15vA67ZUQgCBX1s16iqjrtG0oodE9RPDMI=,tag:zsKj2mwEWwDtJ9QGtbix2g==,type:str]
sni: ENC[AES256_GCM,data:+PlKKl8N73CiANmWYnMLQDI=,iv:NizAQl+xLuvJHVpGfzrJLNa1b+B7q2SbIHpLjdoUjfY=,tag:tdNPsIgMO1s3CRggRm+gpA==,type:str]
skip-cert-verify: ENC[AES256_GCM,data:uea1ExU=,iv:z7oRGpeLjzXA1RB5E3ucJu/bPo110v81AFR+4dDQYwA=,tag:AsorLzyJfwJNsJShlXQBtw==,type:bool]
alpn:
- ENC[AES256_GCM,data:bG8=,iv:7UIRMQ7KGnZUPvfFMGLcworWFQFdd9toCasEeg/IEco=,tag:QwkRWsGXBGxODKIasUqXuA==,type:str]
proxy-providers: proxy-providers:
ykk: ykk:
type: ENC[AES256_GCM,data:QFH7Kw==,iv:uBwdbVdfQuoJ4wIxT9lAS/b0C167IwJbD2KhrB1VzkM=,tag:8ogC9VITAOfeMtceq20Wtw==,type:str] type: ENC[AES256_GCM,data:QFH7Kw==,iv:uBwdbVdfQuoJ4wIxT9lAS/b0C167IwJbD2KhrB1VzkM=,tag:8ogC9VITAOfeMtceq20Wtw==,type:str]
url: ENC[AES256_GCM,data:aTVsXCfaCkdZes1CW8SJVQFiTZ/KbYky6ei0FKSmeCF8/TbaLIKKR46FX2yQ8682fdcLGcAB8ekblQ==,iv:7OQ69sjVWNyOrPVlA8DWTAbw/LIVzFFm5dK4FBcwvyk=,tag:gLVzTM5PypNLpaIOiPYc/Q==,type:str] url: ENC[AES256_GCM,data:aTVsXCfaCkdZes1CW8SJVQFiTZ/KbYky6ei0FKSmeCF8/TbaLIKKR46FX2yQ8682fdcLGcAB8ekblQ==,iv:7OQ69sjVWNyOrPVlA8DWTAbw/LIVzFFm5dK4FBcwvyk=,tag:gLVzTM5PypNLpaIOiPYc/Q==,type:str]
proxy: ENC[AES256_GCM,data:BIEXrZQ=,iv:ZzEEJmLgbOhBTcZEgPfsL0AC72GpydlFTKhJ4+fgTec=,tag:v8URxwAU5wSHD5GPr/sTfw==,type:str] proxy: ENC[AES256_GCM,data:BIEXrZQ=,iv:ZzEEJmLgbOhBTcZEgPfsL0AC72GpydlFTKhJ4+fgTec=,tag:v8URxwAU5wSHD5GPr/sTfw==,type:str]
exclude-filter: ENC[AES256_GCM,data:Uc9L0zm7TWGAgIQq6thwK4evIuYoEJyRJ2M=,iv:CbJp7BcobOfkxyY7/fvaECif57yhPZ1/IuPjLwYUwUQ=,tag:xtGissYFtBX3OVinstWRug==,type:str] exclude-filter: ENC[AES256_GCM,data:Uc9L0zm7TWGAgIQq6thwK4evIuYoEJyRJ2M=,iv:CbJp7BcobOfkxyY7/fvaECif57yhPZ1/IuPjLwYUwUQ=,tag:xtGissYFtBX3OVinstWRug==,type:str]
interval: ENC[AES256_GCM,data:fNfSoA==,iv:wYzKqRsdez6gUGQJOgRnqjOzKtNidMKHYNBBrYtPWfk=,tag:woWqs7uC2nSEkvnROTVFRA==,type:int]
proxy-groups: proxy-groups:
- name: ENC[AES256_GCM,data:O6LAzFQ=,iv:a+dfdy14adLlYbJQ5wAQLsD5hxuEXKW8Y/erhBVAREE=,tag:79++dpg2E2Mtc8y63nRcHw==,type:str] - name: ENC[AES256_GCM,data:O6LAzFQ=,iv:a+dfdy14adLlYbJQ5wAQLsD5hxuEXKW8Y/erhBVAREE=,tag:79++dpg2E2Mtc8y63nRcHw==,type:str]
type: ENC[AES256_GCM,data:JR3d3D1p,iv:n0u8vayA0PVDM7yvh2pk36S8EeqMnZRN8TZlwNnEC3U=,tag:ZmxXOralviL2xyd8+hN3ZA==,type:str] type: ENC[AES256_GCM,data:JR3d3D1p,iv:n0u8vayA0PVDM7yvh2pk36S8EeqMnZRN8TZlwNnEC3U=,tag:ZmxXOralviL2xyd8+hN3ZA==,type:str]
proxies: proxies:
- ENC[AES256_GCM,data:iRhpnZDi+EB1zehjdNo=,iv:t0Q6014Ho/bFORPEFI4HT6gKb7h6U7jC1V9rMWh493s=,tag:ePnnKndYJ2UYZ9LtkdOjlg==,type:str] - ENC[AES256_GCM,data:fDVLR0770KUF,iv:prsxi6lcvMg6I+2o4rlAYuepUdjAPHpFfzCf6LyXj3M=,tag:rXMVs9EBOq5oCWHYtesZXQ==,type:str]
- ENC[AES256_GCM,data:BRdw54Oq5sR2SaFXg/U=,iv:yS1MyVh0MjxctPFE1D3wrbVqztJJM8JP0gtkqgu6zdY=,tag:rJtHptplT8ZiPOXiQqvr8w==,type:str]
- ENC[AES256_GCM,data:TW/0H4P69iT9PGWLWw==,iv:5yDS6O1IAY9XGc/uKF25tcWxYZ1AWTd525W2bOCN0Ko=,tag:SMb3TVPjADtYCMtDzlfibA==,type:str]
use: use:
- ENC[AES256_GCM,data:hGy4,iv:LS9vHmdXUMuy0Na1z5YMpB+vEwKFLfezsftdWcWjTv0=,tag:lueXcksvaPC1yKpHT2zUag==,type:str] - ENC[AES256_GCM,data:hGy4,iv:LS9vHmdXUMuy0Na1z5YMpB+vEwKFLfezsftdWcWjTv0=,tag:lueXcksvaPC1yKpHT2zUag==,type:str]
rules: rules:
- ENC[AES256_GCM,data:S6yGMmG4UUUWE04=,iv:FWz0kNu0hhQ+PyIMSxl6NPX/INluS7jAO9loX+E+jlE=,tag:tXK35hMiYDU8X0yl+0PRuQ==,type:str] - ENC[AES256_GCM,data:S6yGMmG4UUUWE04=,iv:FWz0kNu0hhQ+PyIMSxl6NPX/INluS7jAO9loX+E+jlE=,tag:tXK35hMiYDU8X0yl+0PRuQ==,type:str]
sops: sops:
age: age:
- enc: | - recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO
enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSA2Zkxs YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSA2Zkxs
SGh4Ulp1UklKeDU4M2xtcWZPRGxNUGt4eGVQQ29LcjB2YXJGRVVnClZLSmRra0Qx SGh4Ulp1UklKeDU4M2xtcWZPRGxNUGt4eGVQQ29LcjB2YXJGRVVnClZLSmRra0Qx
@@ -61,8 +72,8 @@ sops:
sF/MYEjihktzyngzTLyuwHYYb1xqTbpmjFNzJfbW7+LJJSPQ9cu6W7DcZGIsSe0e sF/MYEjihktzyngzTLyuwHYYb1xqTbpmjFNzJfbW7+LJJSPQ9cu6W7DcZGIsSe0e
VNycmg== VNycmg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO - recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire
- enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyBXVDk0 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyBXVDk0
bjZhMnRabGVLSHorWmRhd0NjTVF2VTZQVzZSeEkzK3c5WDBoM0FVCjB3cTB6NTYy bjZhMnRabGVLSHorWmRhd0NjTVF2VTZQVzZSeEkzK3c5WDBoM0FVCjB3cTB6NTYy
@@ -71,8 +82,8 @@ sops:
dQxXWnexmkLryDtddH1sdCdQh8e9D1IJFjuOD8JzsyWToWFuo01Cw27VLWGAGnFD dQxXWnexmkLryDtddH1sdCdQh8e9D1IJFjuOD8JzsyWToWFuo01Cw27VLWGAGnFD
GZpp+A== GZpp+A==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire - recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
- enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBzVFdr YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBzVFdr
TTNiK1VIRUk4N2l6TDcyMmw5U3ZRMzR2QlMrcy9XL1RLOCtzNUdnCnkvRmdmZ2gz TTNiK1VIRUk4N2l6TDcyMmw5U3ZRMzR2QlMrcy9XL1RLOCtzNUdnCnkvRmdmZ2gz
@@ -81,8 +92,7 @@ sops:
FY9SvbPWXVTcJiLwjpcD8tSMdqcTHTJXcLAWSCjyFF91ihBUanQ7TcdXvZTGfdY0 FY9SvbPWXVTcJiLwjpcD8tSMdqcTHTJXcLAWSCjyFF91ihBUanQ7TcdXvZTGfdY0
pOoJmg== pOoJmg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ lastmodified: "2025-11-22T14:17:52Z"
lastmodified: "2026-06-13T04:02:11Z" mac: ENC[AES256_GCM,data:QM1+5nj2tr9jv7gzFtH5eccn0UC0kMPK+mPu57E3UbPdyQoewFyBIbtkDddmr31VQmZjU9RB0vwtvY/lOgZuxRGQckckgj0ZZhdPAT7lKaUxLatnzOs8U3JWGWsc3vUM22yB5L5kuJSc/dx8XoXnSvL2gTwcygpxts4dLoj4Te8=,iv:B96/ZkxnaiwhQrSqUUsVHyzZ7tW6mDTeF0/tCCRdSUs=,tag:RVMKX8pOfpgVt/7Qn2smhg==,type:str]
mac: ENC[AES256_GCM,data:VWXa9HdGyPBkLQH5lgqioYbd3VxvL7PjuwiHrX353W+G4Lu/VaMHAz9AFN495cLyCm1dB4VwC773JmLNYKbCzHswQr4tpkp7AlIhvCbt+S0L5ZXLxOlVMd0vONGxQOQHhxQnRONXg9K2i7rTfTjGBdY1o/alswfsNrhaL7g/+OY=,iv:Z3MNOcTU9AQ8yEQgYxXKmv+09cXbF1RalrNXqJYTGUs=,tag:K1kps0EPAKYbQradY02yOQ==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.13.1 version: 3.11.0
+12
View File
@@ -0,0 +1,12 @@
MINIO_ROOT_USER=ENC[AES256_GCM,data:sBnNpnA=,iv:Z2K8Cg/4DW+MxcKIFVMRWlFj2/qqFLCDnzJF6Uq8eLE=,tag:Y+A/FZm/3k35+bNgl89xPQ==,type:str]
MINIO_ROOT_PASSWORD=ENC[AES256_GCM,data:sgYwUxp2Ao6nlUJ8RE7V9Bz1ZG4=,iv:LJJg62vCiguOp8aHCSYOTMtW3vjvXy+RnwghKJmaTR4=,tag:TnyxLzshfe53e2vav1QblQ==,type:str]
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSA3SWtI\nTHVINjFPbkRMa0ZhNkxYRjBHQm5xcERGUjRJT0NsRk1kSWViNEhjClk0UlhvL2N4\nTERoQXBMSENUTEF2U2ZBRzI0QnM2dnFuVlVaVWJZRVNGL0UKLS0tIGkwVW1xc2lF\nUHFCekRuMDEwNW1jWmFLT3BUeS8rQ2FLSnBoamRjc045UzQKfaFKjKVUX15FN6MO\nti9ZpA7+uJpt04cblGutAEdttXdLRbiJe67nJCOkCC8U7czP1X1G2Yi1IeVxqrx+\ngdBDaQ==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_0__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyB5RGM1\nWndtcTVNaHdqakw1NThLTFZFRjdkaERiNXVIVkdxRDdiWTZZcFVjCkd5QWFBUFVt\nOWJucThyWVlhZjNvZnVHTTYzYlRjMFRiMFBrTXp3ZjJXSkUKLS0tIE41RUFOZ0Vx\nMWpkcWc0Rk11bTlaKzlmdVBteTRaVHlkTkpiS2d1YzF6Z28KT/QaHJyhhd9g77vo\n7XwkaHN8CJq8IxwMId7rJuAKi56zTXOoDfBlIYwssVN4FRdCSF4HzIR8ztBJ/MgH\nJIafKA==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_1__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBic292\naStPcmRoeko3ei81THdDay9iUUUycVpxbmUwNmJhNW55SG0rbkVrCngxS0YrSzNF\nMlhpcHU1OGJBOThiZHdYZWZ4YjhicGViL1pzZElUdnhWNXMKLS0tIHlVRnhsUEhy\nV3JoRjM0SGl2dGdaWkIxNGJLS29CVXhTcGd3bm45NDBpRlUKmp9EuXD/iU7yxkFs\nLDk/NN1VvLKSU3RqtuAxbXPIzizNCxaBs/1MQtLIxRkEQvOno+MNyN7JHLFmb+lQ\nmwqPBA==\n-----END AGE ENCRYPTED FILE-----\n
sops_age__list_2__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
sops_lastmodified=2025-03-09T02:24:31Z
sops_mac=ENC[AES256_GCM,data:ium37/C2+zybZDnSlhr6RmB3RiGmjVx4BbHXsfdZ6T+5/DFtkvduhuu0QxLReVBIZ/yYJgttTJq4wIqbUWMvsy2OafCB2piqISe0FAk2KfcM8kqfKFbLFghjkn6Nu1l331MKt/PMLy47ilS5i0Sh3QyD28/pe/tw4vpF3Vz8VjQ=,iv:vLoax3u4RCsisoSUIxy0EA+d2P/WfcPxfXM27QqmVpU=,tag:oCiXH1E9a9NBNbUikNvuBg==,type:str]
sops_unencrypted_suffix=_unencrypted
sops_version=3.9.4
-2
View File
@@ -1,5 +1,3 @@
#:schema https://raw.githubusercontent.com/crate-ci/typos/refs/heads/master/config.schema.json
[files] [files]
extend-exclude = [ extend-exclude = [
"secrets" "secrets"