13 Commits

Author SHA1 Message Date
DerGrumpf 8e6df3bc7b Added remote rebuild option
CI / check (push) Successful in 4m14s
2026-06-23 09:53:26 +02:00
DerGrumpf 1d2ac46eea Fixed release workflow
CI / check (push) Successful in 4m24s
2026-06-23 09:32:50 +02:00
DerGrumpf d122263dfa Added workflow for automatic iso builds
CI / check (push) Successful in 3m55s
2026-06-22 22:56:47 +02:00
DerGrumpf 86e020936c Changed Workflow for not including darwin build due to catppuccin evaluation
CI / check (push) Successful in 4m1s
2026-06-22 22:48:08 +02:00
DerGrumpf c00b9dc204 Fixed workflow; removed unnecessary stuff; add iso builder
CI / check (push) Successful in 5m51s
2026-06-22 22:33:33 +02:00
DerGrumpf 2505485996 Aligned flake with workflow
CI / check (push) Failing after 2m41s
2026-06-22 22:16:53 +02:00
DerGrumpf f41ef34361 Nonsense on top of Nonsense!
CI / check (push) Failing after 57s
2026-06-22 21:16:47 +02:00
DerGrumpf 4cacb69c9c Nonsense on top of Nonsense!
CI / check (push) Failing after 24s
2026-06-22 21:14:33 +02:00
DerGrumpf 9880ba23aa Fixed gitea-runner user
CI / check (push) Failing after 0s
2026-06-22 21:03:17 +02:00
DerGrumpf 628dfaba31 Fixed gitea-runner user
CI / check (push) Failing after 0s
2026-06-22 21:01:28 +02:00
DerGrumpf 9a93834dbb Fixed activation ids
CI / check (push) Failing after 1s
2026-06-22 20:49:38 +02:00
DerGrumpf 81cfe4ff2b Merged
CI / check (push) Failing after 1s
2026-06-22 20:44:45 +02:00
DerGrumpf 7f3b6be59b Fixed CI Workflow 2026-06-22 20:43:56 +02:00
24 changed files with 260 additions and 283 deletions
+9 -10
View File
@@ -8,17 +8,18 @@ on:
jobs:
check:
runs-on: nix
env:
PATH: "/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin"
NIXPKGS_ALLOW_UNFREE: "1"
steps:
- uses: actions/checkout@v4
- name: Setup PATH
run: echo "/nix/var/nix/profiles/default/bin" >> $GITHUB_PATH
- name: Nix flake check
run: nix flake check --no-build
- name: Checkout
run: git clone https://git.cyperpunk.de/DerGrumpf/cyper-nix.git .
- name: Format check
run: nix fmt -- --check .
run: nix fmt -- --ci
- name: Nix flake check
run: nix flake check --impure
- name: Build NixOS configs (dry-run)
run: |
@@ -28,5 +29,3 @@ jobs:
nix build .#nixosConfigurations.cyper-node-1.config.system.build.toplevel --dry-run
nix build .#nixosConfigurations.cyper-node-2.config.system.build.toplevel --dry-run
- name: Eval darwin config (Linux-safe)
run: nix eval .#darwinConfigurations.cyper-mac.system
+46
View File
@@ -0,0 +1,46 @@
name: Release ISOs
on:
workflow_dispatch:
workflows: ["CI"]
types:
- completed
branches: ["main"]
jobs:
build-isos:
runs-on: nix
env:
NIXPKGS_ALLOW_UNFREE: "1"
steps:
- name: Checkout
run: git clone https://git.cyperpunk.de/DerGrumpf/cyper-nix.git .
- name: Build ISOs
run: |
nix build .#packages.x86_64-linux.cyper-desktop-iso --out-link result-desktop
nix build .#packages.x86_64-linux.cyper-controller-iso --out-link result-controller
nix build .#packages.x86_64-linux.cyper-proxy-iso --out-link result-proxy
nix build .#packages.x86_64-linux.cyper-node-1-iso --out-link result-node-1
nix build .#packages.x86_64-linux.cyper-node-2-iso --out-link result-node-2
- name: Create release and upload ISOs
run: |
TAG="iso-$(date +%Y%m%d-%H%M%S)"
COMMIT=$(git -C . rev-parse --short HEAD)
RELEASE=$(curl -s -X POST \
-H "Authorization: token ${{ secrets.CI_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"${TAG}\",\"name\":\"ISOs ${TAG}\",\"body\":\"Automated ISO build from commit ${COMMIT}\"}" \
"https://git.cyperpunk.de/api/v1/repos/DerGrumpf/cyper-nix/releases")
RELEASE_ID=$(echo $RELEASE | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
for result in result-desktop result-controller result-proxy result-node-1 result-node-2; do
iso=$(find $result/iso -name "*.iso" | head -1)
curl -s -X POST \
-H "Authorization: token ${{ secrets.CI_TOKEN }}" \
-F "attachment=@${iso};filename=${result}.iso" \
"https://git.cyperpunk.de/api/v1/repos/DerGrumpf/cyper-nix/releases/${RELEASE_ID}/assets"
done
+68 -25
View File
@@ -95,6 +95,61 @@
}@inputs:
let
primaryUser = "phil";
mkIso =
{
hostName,
isDarwin ? false,
isServer ? false,
}:
nixos-generators.nixosGenerate {
system = "x86_64-linux";
format = "iso";
specialArgs = {
inherit
inputs
primaryUser
self
hostName
isDarwin
isServer
;
};
modules = [
{
nixpkgs.overlays = [
inputs.nur.overlays.default
(import ./overlays { inherit (inputs) nur; })
];
}
{ nixpkgs.config.allowUnfree = true; }
{ nixpkgs.hostPlatform = "x86_64-linux"; }
{ networking.hostName = hostName; }
./hosts/${hostName}/configuration.nix
./nixos
inputs.sops-nix.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
{
home-manager = {
extraSpecialArgs = {
inherit
inputs
primaryUser
self
hostName
isDarwin
isServer
;
};
users.${primaryUser} = import ./home;
backupFileExtension = "backup";
useGlobalPkgs = true;
useUserPackages = true;
};
}
];
};
mkSystem =
{
hostName,
@@ -196,38 +251,26 @@
isDarwin = true;
};
# NEW: flashable image for cyper-controller
packages.x86_64-linux.cyper-controller-image = nixos-generators.nixosGenerate {
system = "x86_64-linux";
format = "raw-efi";
specialArgs = {
inherit inputs primaryUser self;
packages.x86_64-linux = {
cyper-desktop-iso = mkIso { hostName = "cyper-desktop"; };
cyper-controller-iso = mkIso {
hostName = "cyper-controller";
isDarwin = false;
isServer = true;
};
modules = [
{ nixpkgs.hostPlatform = "x86_64-linux"; }
{ networking.hostName = "cyper-controller"; }
./hosts/cyper-controller/configuration.nix
./nixos
inputs.sops-nix.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
{
home-manager = {
extraSpecialArgs = {
inherit inputs primaryUser self;
hostName = "cyper-controller";
isDarwin = false;
cyper-proxy-iso = mkIso {
hostName = "cyper-proxy";
isServer = true;
};
users.${primaryUser} = import ./home;
backupFileExtension = "backup";
cyper-node-1-iso = mkIso {
hostName = "cyper-node-1";
isServer = true;
};
cyper-node-2-iso = mkIso {
hostName = "cyper-node-2";
isServer = true;
};
}
];
};
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree;
};
}
View File
View File
View File
-110
View File
@@ -1,110 +0,0 @@
{ ... }:
{
services.swaync = {
enable = true;
settings = {
positionX = "center";
positionY = "center";
layer = "overlay";
control-center-layer = "top";
layer-shell = true;
cssPriority = "user";
control-center-margin-top = 100;
control-center-margin-bottom = 200;
control-center-margin-right = 0;
control-center-margin-left = 0;
notification-2fa-action = true;
notification-inline-replies = false;
notification-icon-size = 64;
notification-body-image-height = 100;
notification-body-image-width = 200;
widgets = [
"mpris"
"volume"
"inhibitors"
"title"
"dnd"
"notifications"
];
widget-config = {
mpris = {
blacklist = [ ];
autohide = false;
show-album-art = "always";
loop-carousel = false;
image-size = 96;
image-radius = 12;
};
volume = {
label = "gain";
show-per-app = false;
empty-list-label = "Nothin' is playin'";
expand-button-label = "";
collaps-button-label = "";
};
title = {
text = "Hollerin'";
clear-all-button = true;
button-text = "Sheriff's Pardon";
};
dnd = {
text = "Let'er rest";
};
menubar = {
"menu#power" = {
label = "Power";
position = "right";
animation-type = "slide_down";
animation-duration = 250;
actions = [
{
label = "Bolt It";
command = "hyprlock";
}
{
label = "Ride Out";
command = "hyprctl dispatch exit";
}
{
label = "Circle Back";
command = "systemctl reboot";
}
{
label = "Bet Down the Horses";
command = "systemctl poweroff";
}
];
};
"buttons#media" = {
position = "left";
actions = [
{
label = "Play/Pause";
command = "playerctl play-pause";
}
{
label = "Next";
command = "playerctl next";
}
{
label = "Previous";
command = "playerctl previous";
}
];
};
};
notifications = {
vexpand = true;
};
};
};
};
}
+7 -2
View File
@@ -1,6 +1,11 @@
{ pkgs, lib, ... }: {
home.packages =
lib.mkIf (!pkgs.stdenv.isDarwin) (with pkgs; [ rofi-power-menu rofi-calc ]);
home.packages = lib.mkIf (!pkgs.stdenv.isDarwin) (
with pkgs;
[
rofi-power-menu
rofi-calc
]
);
programs.rofi = lib.mkIf (!pkgs.stdenv.isDarwin) {
enable = true;
+7 -1
View File
@@ -1,4 +1,10 @@
{ pkgs, lib, isDarwin, ... }: {
{
pkgs,
lib,
isDarwin,
...
}:
{
programs.sketchybar = lib.mkIf isDarwin {
enable = true;
configType = "lua";
+12 -3
View File
@@ -1,8 +1,17 @@
{ pkgs, lib, compositor ? "hyprland", ... }: {
programs.waybar = lib.mkIf (!pkgs.stdenv.isDarwin) ({
{
pkgs,
lib,
compositor ? "hyprland",
...
}:
{
programs.waybar = lib.mkIf (!pkgs.stdenv.isDarwin) (
{
enable = true;
package = pkgs.waybar;
} // (import ./dual.nix { inherit compositor; }));
}
// (import ./dual.nix { inherit compositor; })
);
home.packages = lib.mkIf (!pkgs.stdenv.isDarwin) (with pkgs; [ cava ]);
+37 -8
View File
@@ -46,10 +46,14 @@
{
type = "button";
val = "[+] New file";
on_press.__raw =
"function() vim.cmd[[ene]] vim.cmd[[startinsert]] end";
on_press.__raw = "function() vim.cmd[[ene]] vim.cmd[[startinsert]] end";
opts = {
keymap = [ "n" "e" ":ene <BAR> startinsert <CR>" { } ];
keymap = [
"n"
"e"
":ene <BAR> startinsert <CR>"
{ }
];
shortcut = "e";
position = "center";
cursor = 3;
@@ -63,7 +67,12 @@
val = "[?] Find file";
on_press.__raw = "function() vim.cmd[[Telescope find_files]] end";
opts = {
keymap = [ "n" "f" ":Telescope find_files <CR>" { } ];
keymap = [
"n"
"f"
":Telescope find_files <CR>"
{ }
];
shortcut = "f";
position = "center";
cursor = 3;
@@ -77,7 +86,12 @@
val = "[~] Recent files";
on_press.__raw = "function() vim.cmd[[Telescope oldfiles]] end";
opts = {
keymap = [ "n" "r" ":Telescope oldfiles <CR>" { } ];
keymap = [
"n"
"r"
":Telescope oldfiles <CR>"
{ }
];
shortcut = "r";
position = "center";
cursor = 3;
@@ -91,7 +105,12 @@
val = "[Y] Yazi";
on_press.__raw = "function() require('yazi').yazi() end";
opts = {
keymap = [ "n" "y" ":Yazi<CR>" { } ];
keymap = [
"n"
"y"
":Yazi<CR>"
{ }
];
shortcut = "y";
position = "center";
cursor = 3;
@@ -105,7 +124,12 @@
val = "[A] Open Prompt";
#on_press.__raw = "function() require('yazi').yazi() end";
opts = {
keymap = [ "n" "a" ":AvanteChatNew<CR>" { } ];
keymap = [
"n"
"a"
":AvanteChatNew<CR>"
{ }
];
shortcut = "a";
position = "center";
cursor = 3;
@@ -119,7 +143,12 @@
val = "[X] Quit";
on_press.__raw = "function() vim.cmd[[qa]] end";
opts = {
keymap = [ "n" "q" ":qa<CR>" { } ];
keymap = [
"n"
"q"
":qa<CR>"
{ }
];
shortcut = "q";
position = "center";
cursor = 3;
+2 -2
View File
@@ -2,8 +2,8 @@
programs.nixvim = lib.mkIf (!isDarwin) {
plugins.molten = {
enable = true;
python3Dependencies = p:
with p; [
python3Dependencies =
p: with p; [
pynvim
jupyter-client
cairosvg
+1 -2
View File
@@ -1,4 +1,3 @@
{ pkgs, ... }: {
programs.onlyoffice =
pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; };
programs.onlyoffice = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; };
}
-51
View File
@@ -74,57 +74,6 @@
};
};
# Doenst work
iamb = {
enable = false;
settings = {
default_profile = "personal";
settings = {
notifications.enabled = true;
image_preview.protocol = {
type = "kitty";
size = {
height = 10;
width = 66;
};
};
};
};
};
newsboat = {
enable = true;
autoReload = true;
browser = if isDarwin then "open" else "xdg-open";
urls = [
{
url = "https://www.tagesschau.de/xml/rss2";
tags = [
"news"
"de"
];
}
{
url = "https://www.spiegel.de/schlagzeilen/index.rss";
tags = [
"news"
"de"
];
}
{
url = "https://www.focus.de/rss";
tags = [
"news"
"de"
];
}
{
url = "https://feeds.feedburner.com/blogspot/rkEL";
tags = [ "blog" ];
}
];
};
cava = lib.mkIf (!isDarwin) { enable = true; };
yazi = {
-5
View File
@@ -1,11 +1,6 @@
{
imports = [
./hardware-configuration.nix
../../nixos/roles/monitoring.nix
../../nixos/roles/matrix.nix
../../nixos/roles/postgresql.nix
../../nixos/roles/wyl.nix
../../nixos/roles/adguard.nix
];
networking = {
-2
View File
@@ -1,8 +1,6 @@
{
imports = [
./hardware-configuration.nix
../../nixos/roles/gitea.nix
../../nixos/roles/filebrowser.nix
];
networking = {
+5 -2
View File
@@ -34,9 +34,12 @@
"/boot" = {
device = "/dev/disk/by-label/NIXBOOT";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
options = [
"fmask=0022"
"dmask=0022"
];
};
};
};
swapDevices = [ ];
-4
View File
@@ -12,9 +12,5 @@
enable = true;
accent = "sapphire";
};
fcitx5.enable = false;
forgejo.enable = false;
gitea.enable = false;
sddm.enable = false;
};
}
+14
View File
@@ -22,6 +22,11 @@
./catppuccin.nix
];
sops.secrets."nix_cache_priv_key" = {
mode = "0400";
};
nix = {
settings = {
trusted-users = [
@@ -42,11 +47,13 @@
"https://nix-community.cachix.org"
"https://cyper-cache.cachix.org"
];
secret-key-files = [ config.sops.secrets."nix_cache_priv_key".path ];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"cyper-cache.cachix.org-1:pOpeWFEjGHg9XvqRg+DQpYnGRQNp+z+QEF8Ev2mbSoM="
"cyper-nix:+YuG586UwrtNkXeGiivcr5GTCbZK70ILU2YqOxUoIWw="
];
auto-optimise-store = true;
};
@@ -57,6 +64,11 @@
};
};
nixpkgs.config = {
allowUnfree = true;
permittedInsecurePackages = [ "olm-3.2.16" ];
};
documentation = {
enable = true;
doc.enable = false;
@@ -80,6 +92,8 @@
};
};
environment.systemPackages = with pkgs; [ git ];
security = lib.mkIf (!isServer) {
pam.services.swaylock = { };
polkit.enable = true;
+2 -2
View File
@@ -1,4 +1,4 @@
{ ... }:
{ lib, ... }:
{
boot = {
plymouth = {
@@ -15,6 +15,6 @@
"udev.log_priority=3"
"rd.systemd.show_status=auto"
];
loader.timeout = 0;
loader.timeout = lib.mkDefault 0;
};
}
+17 -18
View File
@@ -209,24 +209,20 @@ in
url = "https://git.cyperpunk.de";
tokenFile = config.sops.secrets."gitea/runnerToken".path;
name = "cyper-controller";
labels = [
"nix:host"
];
settings = {
runner.env_vars = {
PATH = "/run/current-system/sw/bin:/nix/var/nix/profiles/default/bin:$PATH";
};
};
};
};
labels = [ "nix:host" ];
system.activationScripts.gitea-runner-age-key = {
text = ''
mkdir -p /var/lib/gitea-runner/.config/sops/age
cp /home/${primaryUser}/.config/nix/secrets/keys.txt /var/lib/gitea-runner/.config/sops/age/keys.txt
chmod 600 /var/lib/gitea-runner/.config/sops/age/keys.txt
chown -R gitea-runner:gitea-runner /var/lib/gitea-runner/.config
'';
hostPackages = with pkgs; [
bash
coreutils
curl
gawk
gitMinimal
gnused
nodejs
wget
nix
];
};
};
users = {
@@ -237,9 +233,12 @@ in
home = "/var/lib/gitea";
createHome = true;
};
postgres.extraGroups = [ "gitea" ];
};
groups.gitea = { };
groups = {
gitea = { };
};
};
networking.firewall.allowedTCPPorts = [
-2
View File
@@ -1,7 +1,5 @@
{ config, lib, ... }:
{
nixpkgs.config.permittedInsecurePackages = [ "olm-3.2.16" ];
sops.secrets = {
discord_bot_token = {
owner = "mautrix-discord";
-2
View File
@@ -1,8 +1,6 @@
{ pkgs, ... }:
{
nixpkgs.config.allowUnfree = true;
services.unifi = {
enable = true;
unifiPackage = pkgs.unifi;
+3 -2
View File
@@ -33,6 +33,7 @@ gitea:
runnerToken: ENC[AES256_GCM,data:giY3e3oHqWytgIWfnuKxOfrp8R+u7I0lMzEGnLWXnZWL9aQkVsM1kiF1FNKn/A==,iv:YsQrAKU8pncPeSSosOFn9BjU676KCh956FGC2hnCuac=,tag:+eZ1y6P/85XNPD9gVVNMgA==,type:str]
ssh_private_key: ENC[AES256_GCM,data:R511mVFVk1ogAd5CKk/2P6rtT4NnHIFfKyqeCen545QgcvDqDFmW0rFBmPJyipaya2srJNoWvKJbnvxWtTYeJh2tPAybRMoUicStIFMUn3FPNfjx/WuQFLhKLoU3UOHHPJnkFqkQ9MBqLq2k5K7MVsNNFTxIDCKS1jPgkTmAWjRZ0EFiRXLa+Gvnz3GP5ltgfjDwdPeb5xp0/AqKPD8jea9w5ClR6ckrRHCLsfXhL2e9IaF4B96JlIv4rICLX3HmeIgM2PKl2MnSt8we5z39bBoLSA0yWG6BvpiMBaFqbo7jeHf1SxI6R404/emHhwW3pwSCDrq2ZE1ATG2UmA5NssFcVuaBPBoQer+n5haVYMNpNUp6rtKZeAIbf5JEOXJ6CJqiInfnnzOMNGhGFkGUYkhsy3p6Ti/lmNMPX/xtY+8ZqMwXf5drssm5KgnQ5nDbVqnTWAhoT/D3t+cJVAaXGTGw88fU0X95dZr8vaL/5nBCj1uUdv5cRBJ8PGhqbBX8PoiXrtGooBGhxf6nHbxIneSzG1++MZGo3e1G,iv:D1lgCnZKm3Gyv6cZpQ7zGW7JXN5RCwoaas+LroTkhPc=,tag:WI6Nr1cX8gm5pjFpu/Ok0w==,type:str]
ssh_github_key: ENC[AES256_GCM,data:vZAH4cRDsgGXLAppQKOyUPOvmBJZ27bujMGz4hQ8tt0xhGFUP28llwGZz/VRuU02Yv4alLgVWBAIPuyhZT9f35KnjIR1Mmb7HXk/6oaNM59/lBiISLrnOpC10WmJ9O5krKdxwP8ZDvHA34B0s+oYNkTNXiU0S8AVg3icploax7ylKH5Dorj53kjdYSTjd8KN6ZsgCKmcz97+GnP0IgdmauyNL7e+kv9WIfE8Xx1kGvC8WVnidX2YhSxm6vt8l60eUj9etRigU88oFYTDZ+mIf4lucSpzaLZutz2fM/16D/o9SS7mmTrEllj2S+IXc9ZZTRKKDLbW+yv0XUi0XZi+OHAdZScjS54NZKyT9uWrc/IDJHammGsoHRQpHZtbGhkeFi/KdJsYBsWItslXjM0xJVtFIM2tMnd10kv9UGuXsSl9J4NC0rpz3aXnQqG4ZAhMjN9D/DTJpB4K0pcFyd2FDWdrbKq5iPfnU/V6ecnHPML6wCt6gua/LdK1MWoG3l2SqwMLYj1r7UW5fQZqSw1EK0BAtp9cQMLBL/2w8ykMfWpLekE=,iv:gcinU7xOoXQkFVkLNB3sQYHAcZy3pZN+bDRIq4sspys=,tag:yawgAHBKIkGpnKPHsRId4g==,type:str]
nix_cache_priv_key: ENC[AES256_GCM,data:FbRHM4n7BDMDgZYtTOdpS0SQx80afxMC3uw6PtdKb1zcAjyQRYwJe0esTDLklLDh8Kx6dgZOJbrf2sYIzF5xVv09U1Uz0C1UnF4M6yhbg+Nqg0HfVj55L3Z6ulrxNlgq7gY=,iv:F9DZUsyzZocKoB0yByeBcrCw9Ytcp+Xk6y8+ZH4OV7k=,tag:mSf1zVciPkifzr3kVFAt0g==,type:str]
sops:
age:
- enc: |
@@ -44,7 +45,7 @@ sops:
6fuez+zApathZfl14w41kAUojPWBznnxDqYtNvzVVLXwnpp3BMx+7w==
-----END AGE ENCRYPTED FILE-----
recipient: age10pyhca0jy75wtqv5hrn0gf0jcam5272zx9h73a8xwwaxyfq89c0qs5dr9t
lastmodified: "2026-06-22T18:17:22Z"
mac: ENC[AES256_GCM,data:nIGjfBCia9y1+f0dE6TRK6pBLo3B+vqmK88t5xrCY9j+SIzPvCc2Iv6h8AXSfunvIZpxODhn+PmX2FBwa9TtNVePi/Iywu43fRGHz67gSVYTyTBoLRAxqW/7hEvRMXu0ECUfAPzQCq3rd4iWjMXyIYU/FsX9g4NlIno0zcCV5cs=,iv:M4FBoxzojH01hScrRoET3AwmG3qevhkxiET+W94drh0=,tag:rHf7wbkp64FKybjZL0EDDQ==,type:str]
lastmodified: "2026-06-23T07:50:18Z"
mac: ENC[AES256_GCM,data:KlPMGQNnGdXGfUhuGviQ/lvDBOfjy9IiTFhLaJEwafJfAQmyYe+VclRV2kKK1A98rvZqhey/pvXyrpU1FQNbrvTVCgPMKiX8ggSmF62Ocz2ljj/tQqQhyZbtPM229k69FXdoDFjl0vg9T8nrYtNh+S8Xy17yw5CA1gI7GYILCF0=,iv:Km4NRYjTsZO3NYoWCUdQrmeXUPdbN+cI4CqJFkH70ww=,tag:TTCA8X2jAO1x20NILNyngg==,type:str]
unencrypted_suffix: _unencrypted
version: 3.13.1