use branch based modules instead of relative repo for better pinning per machine

This commit is contained in:
RingOfStorms (Joshua Bell) 2025-01-01 23:54:53 -06:00
parent bef2414885
commit a59289cfd1
121 changed files with 67 additions and 2987 deletions

86
hosts/lio/flake.lock generated
View file

@ -194,14 +194,18 @@
"ragenix": "ragenix"
},
"locked": {
"lastModified": 1,
"lastModified": 1735795919,
"narHash": "sha256-vreq5NKH6dCj9nAsR59KTHfT+i9SLDbtGbsEcv0Heuw=",
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/common",
"type": "path"
"ref": "mod_common",
"rev": "b693858091a4a1e1135393b941ad16cbf21fa5fe",
"revCount": 1,
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
},
"original": {
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/common",
"type": "path"
"ref": "mod_common",
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
}
},
"mods_de_cosmic": {
@ -215,14 +219,18 @@
]
},
"locked": {
"lastModified": 1,
"lastModified": 1735796142,
"narHash": "sha256-/qhLqE1/LkXS+OS0r+iJnzyke23cLPIEGPmDymFMsKA=",
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/de_cosmic",
"type": "path"
"ref": "mod_de_cosmic",
"rev": "8392467e87a95012cba37144418b6ebd072ab5ce",
"revCount": 1,
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
},
"original": {
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/de_cosmic",
"type": "path"
"ref": "mod_de_cosmic",
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
}
},
"mods_home-manager": {
@ -233,26 +241,34 @@
]
},
"locked": {
"lastModified": 1,
"lastModified": 1735796212,
"narHash": "sha256-8aN/3ioMsr8IhBvo/Ym98bkFbHQ/4ODrww15W9b0i2g=",
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/home_manager",
"type": "path"
"ref": "mod_home_manager",
"rev": "c3bcacb4ff5697c2f186c8d645c135356f68bc11",
"revCount": 1,
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
},
"original": {
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/home_manager",
"type": "path"
"ref": "mod_home_manager",
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
}
},
"mods_nebula": {
"locked": {
"lastModified": 1,
"lastModified": 1735796291,
"narHash": "sha256-WfYwWhjnePj5MYb9d84AAH7DT4W77eXV7DE1HV5nWbk=",
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/nebula",
"type": "path"
"ref": "mod_nebula",
"rev": "139046b747f147d4ff068a549f304f71cbb763a6",
"revCount": 1,
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
},
"original": {
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/nebula",
"type": "path"
"ref": "mod_nebula",
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
}
},
"mods_ros_neovim": {
@ -260,14 +276,18 @@
"ringofstorms-nvim": "ringofstorms-nvim"
},
"locked": {
"lastModified": 1,
"narHash": "sha256-Do761YmlKOOr9+9vKUJnA2n5WQANXKPR2aesvsi/6VQ=",
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/neovim",
"type": "path"
"lastModified": 1735796481,
"narHash": "sha256-DvenriWxmFoh/hJ0nxpTKEr4lzgD+exLPboN4CK8Zyk=",
"ref": "mod_neovim",
"rev": "311a994ebb87242d55b9f00eed0232aa5b4c51d8",
"revCount": 1,
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
},
"original": {
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/neovim",
"type": "path"
"ref": "mod_neovim",
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
}
},
"mods_ros_stormd": {
@ -275,14 +295,18 @@
"ringofstorms-stormd": "ringofstorms-stormd"
},
"locked": {
"lastModified": 1,
"lastModified": 1735796563,
"narHash": "sha256-YjXJu/5Hcl7YpcpiHLd5wqCFUlJp39MM9CfQKhdpkk8=",
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/stormd",
"type": "path"
"ref": "mod_stormd",
"rev": "a184895fd3f32051499dfad8eb2cb18faaec4188",
"revCount": 1,
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
},
"original": {
"path": "/nix/store/yyn760v331snh441bn7ix8cmillddawg-source/modules/stormd",
"type": "path"
"ref": "mod_stormd",
"type": "git",
"url": "https://git.joshuabell.xyz/dotfiles"
}
},
"nix-filter": {

View file

@ -4,16 +4,16 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
mods_common.url = "../../modules/common";
mods_common.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_common";
mods_common.inputs.nixpkgs.follows = "nixpkgs";
mods_boot_systemd.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_boot_systemd";
mods_de_cosmic.url = "../../modules/de_cosmic";
mods_de_cosmic.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_de_cosmic";
mods_de_cosmic.inputs.nixpkgs-stable.follows = "nixpkgs";
mods_de_cosmic.inputs.nixpkgs.follows = "nixpkgs";
mods_ros_neovim.url = "../../modules/neovim";
mods_ros_stormd.url = "../../modules/stormd";
mods_nebula.url = "../../modules/nebula";
mods_home-manager.url = "../../modules/home_manager";
mods_ros_neovim.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_neovim";
mods_ros_stormd.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_stormd";
mods_nebula.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_nebula";
mods_home-manager.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_home_manager";
mods_home-manager.inputs.home-manager.url = "github:rycee/home-manager/release-24.11";
mods_home-manager.inputs.nixpkgs.follows = "nixpkgs";
};

View file

@ -4,16 +4,16 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
mods_common.url = "../../modules/common";
mods_common.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_common";
mods_common.inputs.nixpkgs.follows = "nixpkgs";
mods_boot_systemd.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_boot_systemd";
mods_de_cosmic.url = "../../modules/de_cosmic";
mods_de_cosmic.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_de_cosmic";
mods_de_cosmic.inputs.nixpkgs-stable.follows = "nixpkgs";
mods_de_cosmic.inputs.nixpkgs.follows = "nixpkgs";
mods_ros_neovim.url = "../../modules/neovim";
mods_ros_stormd.url = "../../modules/stormd";
mods_nebula.url = "../../modules/nebula";
mods_home-manager.url = "../../modules/home_manager";
mods_ros_neovim.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_neovim";
mods_ros_stormd.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_stormd";
mods_nebula.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_nebula";
mods_home-manager.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_home_manager";
mods_home-manager.inputs.home-manager.url = "github:rycee/home-manager/release-24.11";
mods_home-manager.inputs.nixpkgs.follows = "nixpkgs";
};

View file

@ -1,20 +0,0 @@
{
config,
lib,
...
}:
with lib;
let
cfg = config.mods.common;
in
{
config = mkIf cfg.docker {
virtualisation.docker.enable = true;
users.extraGroups.docker.members = [ config.mods.common.primaryUser ];
environment.shellAliases = {
dockerv = "docker volume";
dockeri = "docker image";
dockerc = "docker container";
};
};
}

View file

@ -1,201 +0,0 @@
{
description = "Common flake for all of my systems. ANy logic that I do on all my ssystems I put here so that I don't need to put it into sepratate nix flakes. This includes some basic nix[helper] settings, ragenix secrets, and ssh (ssh keys are used for ragenix)";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
# Secrets management for nix
ragenix = {
url = "github:yaxitech/ragenix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ ragenix, ... }:
{
nixosModules = {
default =
{ config, lib, ... }:
let
cfg = config.mods.common;
in
with lib;
{
options.mods.common = {
systemName = mkOption {
type = types.str;
description = "The name of the system.";
};
allowUnfree = mkOption {
type = types.bool;
default = false;
description = "Allow unfree software.";
};
primaryUser = mkOption {
type = types.str;
# default = "josh";
description = "The primary user of the system.";
};
primaryAuthorizedKeys = mkOption {
type = types.listOf types.str;
default = [ ];
description = "The primary user's authorized keys.";
};
defaultLocal = mkOption {
type = types.str;
default = "en_US.UTF-8";
description = "The default locale.";
};
sshPortOpen = mkOption {
type = types.bool;
default = true;
description = "Open the ssh port.";
};
docker = mkEnableOption (lib.mdDoc "Enable docker");
zsh = mkEnableOption (lib.mdDoc "Enable zsh");
enableSleep = mkEnableOption (lib.mdDoc "Enable auto sleeping");
users = mkOption {
type = types.attrsOf types.attrs;
default = { };
description = "Users to configure. Should match nix options of users.userser.<name>.*";
};
};
imports = [
# Secrets management
ragenix.nixosModules.age
# NOTE: Ragenix requires services.openssh.enable to be true otherwise it would require manually setting public keys, so ssh is enabled in the common module as well
./ssh.nix
./ragenix.nix
./shell/common.nix
./tty_caps_esc.nix
./docker.nix
./zsh.nix
./fonts.nix
./users.nix
];
config = {
_module.args = {
inherit ragenix;
};
# Enable flakes
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# name this computer
networking = {
hostName = cfg.systemName;
};
# allow mounting ntfs filesystems
boot.supportedFilesystems = [ "ntfs" ];
nix.settings = {
max-jobs = "auto";
# Fallback quickly if substituters are not available.
connect-timeout = 5;
download-attempts = 3;
# The default at 10 is rarely enough.
log-lines = 50;
# Avoid disk full issues
max-free = (3000 * 1024 * 1024);
min-free = (1000 * 1024 * 1024);
# Avoid copying unnecessary stuff over SSH
builders-use-substitutes = true;
# Slower but more robust during crash TODO enable once we upgrade nix
# fsync-store-paths = true;
# fsync-metadata = true;
auto-optimise-store = true;
# TODO should I have this set for my user...
trusted-users = [
"root"
cfg.primaryUser
];
};
# rate limiting for github
nix.extraOptions = ''
keep-outputs = true
keep-derivations = true
!include ${config.age.secrets.github_read_token.path}
'';
# nix helper
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep 10";
# TODO this may need to be defined higher up if it is ever different for a machine...
flake = "/home/${cfg.primaryUser}/.config/nixos-config/hosts/${cfg.systemName}";
};
# Remote build off home lio computer
programs.ssh.extraConfig = ''
Host lio_
PubkeyAcceptedKeyTypes ssh-ed25519
ServerAliveInterval 60
IPQoS throughput
IdentityFile ${config.age.secrets.nix2lio.path}
'';
nix = {
distributedBuilds = true;
buildMachines = [
{
hostName = "lio";
system = "x86_64-linux";
protocol = "ssh-ng";
maxJobs = 32;
speedFactor = 2;
supportedFeatures = [
"nixos-test"
"benchmark"
"big-parallel"
"kvm"
"uid-range" # Often helpful
];
mandatoryFeatures = [ ];
}
];
};
# TODO do I want this dynamic at all? Roaming?
time.timeZone = "America/Chicago";
# Select internationalization properties.
i18n.defaultLocale = cfg.defaultLocal;
i18n.extraLocaleSettings = {
LC_ADDRESS = cfg.defaultLocal;
LC_IDENTIFICATION = cfg.defaultLocal;
LC_MEASUREMENT = cfg.defaultLocal;
LC_MONETARY = cfg.defaultLocal;
LC_NAME = cfg.defaultLocal;
LC_NUMERIC = cfg.defaultLocal;
LC_PAPER = cfg.defaultLocal;
LC_TELEPHONE = cfg.defaultLocal;
LC_TIME = cfg.defaultLocal;
};
# make shutdown faster for waiting
systemd.extraConfig = ''
DefaultTimeoutStopSec=8s
'';
# Turn off sleep
systemd.sleep.extraConfig = mkIf (!cfg.enableSleep) ''
[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no
'';
# Some basics
nixpkgs.config.allowUnfree = cfg.allowUnfree;
nixpkgs.config.allowUnfreePredicate = (pkg: true);
};
};
};
};
}

View file

@ -1,11 +0,0 @@
{
pkgs,
...
}:
{
config = {
fonts.packages = with pkgs; [
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
];
};
}

View file

@ -1,78 +0,0 @@
{
config,
ragenix,
pkgs,
...
}:
# TODO auto import secret files here
# secretsFile = (settings.secretsDir + /secrets.nix);
{
environment.systemPackages = [
ragenix.packages.${pkgs.system}.default
pkgs.rage
];
age = {
secrets =
# builtins.mapAttrs
# (name: _value: lib.nameValuePair (lib.removeSuffix ".age" name) {
# file = (settings.secretsDir + "/${name}");
# owner = lib.mkDefault config.mods.common.primaryUser;
# })
# (import secretsFile);
{
nix2github = {
file = ./secrets/nix2github.age;
owner = config.mods.common.primaryUser;
};
nix2bitbucket = {
file = ./secrets/nix2bitbucket.age;
owner = config.mods.common.primaryUser;
};
nix2gitjosh = {
file = ./secrets/nix2gitjosh.age;
owner = config.mods.common.primaryUser;
};
nix2h001 = {
file = ./secrets/nix2h001.age;
owner = config.mods.common.primaryUser;
};
nix2h002 = {
file = ./secrets/nix2h002.age;
owner = config.mods.common.primaryUser;
};
nix2joe = {
file = ./secrets/nix2joe.age;
owner = config.mods.common.primaryUser;
};
nix2gpdPocket3 = {
file = ./secrets/nix2gpdPocket3.age;
owner = config.mods.common.primaryUser;
};
nix2t = {
file = ./secrets/nix2t.age;
owner = config.mods.common.primaryUser;
};
nix2l001 = {
file = ./secrets/nix2l001.age;
owner = config.mods.common.primaryUser;
};
nix2l002 = {
file = ./secrets/nix2l002.age;
owner = config.mods.common.primaryUser;
};
nix2lio = {
file = ./secrets/nix2lio.age;
owner = config.mods.common.primaryUser;
};
nix2oren = {
file = ./secrets/nix2oren.age;
owner = config.mods.common.primaryUser;
};
github_read_token = {
file = ./secrets/github_read_token.age;
owner = config.mods.common.primaryUser;
};
};
};
}

View file

@ -1,35 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USBvUXpV
T1BVTDlKcUxjNmwzVWpPM3VtcUVrRWZJVXk3Vm81UHJMSGpMNlJ3Cld5NlV2Z25M
cmZvZWNrRjJOU2dkVmVCRDQzMWowZnhyTHZrT1dhbDdnOU0KLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIDRicG5Pa2FXVERYdGVyVTZoYkcyWkJjbGRNSHJDeUJjRjVjUlI0
RjdOMTAKdVN4SWI0L2dibVpxVy9hOGJTSEpxcEoxbSthTEZiQjB2WDUyT2VNdGI1
WQotPiBzc2gtZWQyNTUxOSBTcENqQlEgdFFzK055WkFPYXIxbzZxT3YwZDdWd3hN
eU9XRXN1L2NKL2hTL0RVbnJTWQpveUcwanNRaHU2ZTVOQzBvcHY5NXhVZEU1a0Vr
K2hnOFU3RnJSWEZvWElnCi0+IHNzaC1lZDI1NTE5IEJZS0crdyBqb1YzcnQrQlhS
eklJTlgrVmRuc0JCTDBZK2VKdGRUTW90djNVeCtya0FRCkc2VStHa1AxRTd0M3c2
dHR4NXZJWXp3MVNqai96Z21pT09OT3dqZ09BSFkKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIGhneFBKSlNhN1V6NFpRaDlOd2hmWnNjWUkrTDEzSVRsTkxCT1FadDdCVE0K
dU40YlFjR0cyWjdBQXJDbGJYY0xsSmw0VGM3ZlZwVlpyT3hNeG1YL0IrcwotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgQ0FkQzl5T2J0UHBFaXpuc0xuaXdndmcrNDJKNGFV
NHFqcy9Uay9GdUNIdwp4WTBrUkN0SkFuKzZxRUt5aVJ4VTQxUmthQjFEL2NQcTVx
STg3SkdlK0hFCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSBTcjRsUi9xb3g0TjRuUEQ1
WVVrVEZsMlRHeklKdG1wVVgvR3pwS0JwWFJNCjF3RTF0WHB2cUxJc2FvM3g2ZG1H
Um0wRHBNaWdpaEhPZ3dIMnBsbURGd3MKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIG1a
T0loVjRjTGF3S0NzZm5LUC9UZG9pMmhQQ2kzV2E2SFdTM2hXMUtCZzgKMCtDeUk5
Tk1RZjhMc2dBZ0IydmZSWm5kcFFIQXAyUHI5MHFCSzZKM0RkUQotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgZlAvRWJUaDRQQW44QkM0Q1BjTWNuOVJ1MEU3K1VkeDZRanB4
RlR6Sk9nbwpkOWlPS1J4SE81M0dwS0Q5RHZ6cURSOWFBcEFUQWo5a3ZFekJZWXA2
eDlrCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyBrbGNsWWRyL2dzMzJucHJia0JzTWl4
TkhIWjF6N2tIcit3eUpMWjMvYW00CmxZNFo4NG9Tb2dDOE1yNTFsSVd3TFlCMTB1
bEUzOUM2M0c4VlhRbG9JRzQKLT4gc3NoLWVkMjU1MTkgWmUxTXdRIGlQUWlrbjZn
NGF2QUsybU9WckJNZ05xTnVMZ25aM3RBYmViMW1hVE5UekUKY1Q2VGF6WUVacW4v
SXY5NjAwaUFkLzhYSktzdmV4SHRjMGY3WVhMckthTQotPiBpQDZ7azFMKC1ncmVh
c2UgO3sgdwphUEphdmhoTVRTSGJubjBOdmlLQ2JITUoxTTdUMlBEMVJXQTAvaGlI
U1IvdUFsZ3hVQlZ4RTYzZGNGTE10KytwCnVybzhzeUxRVmNuQW9RCi0tLSBLU3hj
ck90ZnVRTlViOW9MSStaOXk1S3VQblFjZTUrU1cyVnMxYjBmeDRFCsP4KaZlgIzG
0xW6BPaEq//3Yi31/ZUZP1ebdyomMaR9SY6ejwG0xLKAGdE12M+g0+YaVJnvHr46
R4f4rdxeexGMqs+8X2LE4jb4Z1MMKb4mRFlUWSg8g3ejFld59ZDP8MXCNf16Fvek
Sz1fbg5fycapU5WBfpKkNq3d3j7YCWd4oSe/pgfZQZv7lBeEmyLeFmdmUZ9yLPgs
Tw==
-----END AGE ENCRYPTED FILE-----

View file

@ -1,41 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USB1VGtY
MEdOWlZaSC9LMU82aWU4RkVQUEtmNXNtRE5jakhJOXRYelNNN3d3CnBBb1FQZ1Bm
ZU9WWSszT1FUL0F1RDZ2anZRUU56d0lMeEhWN3Y3VjJjTWcKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIEI4dzI2U1FkM0I5a3FjbWc5MEs5aEFPVWhCODcwaFpNZ1RYZnZQ
bm15aVkKSUNYNjJjOHoreUJ0WUZEVjU0MTd3WXJ6VnNRM2ZlTE5UczdJQXRZN3p2
OAotPiBzc2gtZWQyNTUxOSBTcENqQlEgNzFnd0JvbWxjSjJRYTR5REQweThRNjcy
NldVeWVsTHRkempzRHJnRWczZwpHTENSd01zejhkdWFIVlNvVTc0UWVwY3ROMFR0
VktXSDRCOG54R0d6WE9vCi0+IHNzaC1lZDI1NTE5IEJZS0crdyBWZmdhZmpSaEVR
d2tFbzhlOEVBdEIvM3pYWDczR1dRMWZrY2ZDVGx4bnlvCnk2Q0JGcUl6bnl5VlMy
RjBIODI3dXdtb2JtSjJkT2huaFAvM20vM3VJOVUKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIFdleE1tMHNKVWVvTzMzTzV1R1lUeDB6VW9LTE43SEVLelJENXUvZHp0VkEK
a1ZUTnQ5dEZHZGFuWnlJeHpKNHZ4SlFoaGgzakcvU24xNzZoRW5Xbk9DNAotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgUGhOV0dwNnl2SjdSb3RiZnNRYnFTa1lVN21XMEhV
RU95QUkxZWRhajNWNApFZFd6OUpXREE2cnlGNmpLMlMzbVZYWFYwVzBBUlduOVcw
OXpoZ3g0L2x3Ci0+IHNzaC1lZDI1NTE5IFJvWDVQUSBDcmQ2bVhhTkQ5OUIxMTZZ
OUQzMG5senZoUWo0Yll2enpVcU1LVS9mRFhnClE4K3RLUVlQbk9lMkh4R1B6U2w4
ajVFODBKUUhqdjlOdENubzNLNmg3RUEKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIEgw
dVViclNkMEhibHlQOE4waGdjdE9TaTByOE1jTkdlZ05Jc0FvWUUxaWcKVnd5WVY2
RzBGZ3RMY2xUWlFsMVdVTnYrQXBlbHVmMXpOaVlCU3JkQm5FMAotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgcWRmSndkbm5VUXZhanZ2ZTZpU1NIT1cxbE9LcjVJOEh4Ymhy
aU5TYjN5dwpWNXRJQnEzOXdEOTQvM0U1WDhtMmY0NlArYzcvNTIyS1FRa3dOSGQ4
Nmc4Ci0+IHNzaC1lZDI1NTE5IDVhZHFNZyBsV09IOGc2QWEyUm9ZL2tMTkRvTVdj
NEhIeVptanRYNlV6WC9kTzh1aERnClN3cHFiTnlQOU15QUNkTWwwdGUwTDR1V29J
VnNUV29MblRMUVNYaG1oYW8KLT4gc3NoLWVkMjU1MTkgWmUxTXdRIE5OSmxxWnd0
Q25LdnBIa00yQ0twTmRUVnJDdUxnWGJNS2xYYUQyeDByZ2sKTEhlbEpaVEVsaUlW
L3NSdXRwZkVHQVE3a1VZYU5pbi9TN1VSUGRGU0hFSQotPiAmLWdyZWFzZSA2dmVb
T2I7WiBpIFYvIEBSTgpkTFNQUmxZMUFlcDRBUm9EaDhXU0V6emRtN1ljelZLUnVj
SDVUM2ttU0l3UFh0VnJrdnlkVmRCKzJJV2ExalZOCjhDMWFkUEVjcmRSV0xRemdJ
Y2xFUTJMaWZhTkYwSlhuMURlSGorZnBDMndWRGZqZG1xS3NSeDAKLS0tIFJScFFC
OXRBK3NZbFRiZ2RmVTlhWTBaRWh0Q210VjdpZmlvY25VKzl5eWMK0R3SnMZjeShA
rJ3mEOEIdaz5zvTnRkVvRaMOeSVBERJjm2pP3onTdwWPtr3hYUXWOBiaGJm3UVgt
XV5rymdIWgDFPJQimxlsOQYWS2DAP08fa70OHNake1DGcnAShZbndv5XO+cM1WKS
Fjy+/chkTJQAg7Il2NwheMV1m4zST3J0M2b2lTrIPqo/y1zH08OJAEWYRZrGmpDh
4cqLt3B5aF7hmgFwS1EHg0gygjtg2GbL33XgjONPmL02TbLYMH+lCTTGfrH7NTQx
06ixXsd+dkMu0SmUX3mKit5/ghNFpCNBOL/ptMJ/T10ryvjeZWHmYe+HlJhC9ncY
rjjRwFXGGbU6RnzHoZ2I8C70/h3Tu0KXOHhxHG37EJ7PX7MnAWISAugNwGof/0kB
DbAEw8FRCerrNdcCcTKXIIKCn5xNe3lCDZMtz1axUnN/POQ3uoynGy5LOtG6mwZr
dIKFY0DLW6Vo2cdr4g/+fCcTXWAhE///kNaL6kUDJemf+L8hH7ZOmGW+udkvl6vq
2Hc09/FWczLSfEaM+idz5D53gx7ehd/98EPs95AQiraBiB0aaDw=
-----END AGE ENCRYPTED FILE-----

View file

@ -1,42 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USA3Sjdp
bmxNOUlJbU14cWc1eU53dGQxQjhjbElZVEhKQVUwYVhXVy9QckJnCldnV2tiVnZx
UUdRQ1FsN1FuOVRHRDB2WUpvRUM2ZHRWbGtGeXJRdUZ4cDQKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIDBLc0ZZR3RvczVHUzY2bklhWnhqWnJVbkp2bFVLM2hQQXg5V3I3
Z2Vpd0kKYlNMcnNweVlIYjk1U3lBelo1WmxWaFRRMVlRNkswcEZBQTVlTzVFaFVK
WQotPiBzc2gtZWQyNTUxOSBTcENqQlEgRDNzeGsrTU1FckJJeFFja1hTbFU3cVVt
Z29ydW1tOVAxVGlCUVluMW1FTQpzRGU3eDYvMGdUdi9ERDRTNWI0aHdkR0gxL21Y
R1J1cTliVTRZYXdIM0p3Ci0+IHNzaC1lZDI1NTE5IEJZS0crdyBmWTVGc2I0ZnJN
UDAxbHp5c0xJelhrTTMrdnQyR3FtUDZNVFhYY05PMDJJCjFHVU4yVWkrNm9KZ3pC
Tll6R3FiQUVCTndYRlBzeUNmMTlDU0NHRVYzZ3cKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIEltakJ0Qlo3cXdCb01lYUNXQ3VyTkJwd2cwT3BpNXhOR2Yvd0ltSThRQ0UK
enp5cW9nMDhRQmNFWjNjb1NTMTVhejliODZCSWcwcmlpb3lQYnRIbCthQQotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgSXhwL01Ca2xpZkVkNVp2ODVidWlhU0FISy9tQ3dO
YWRMWkdlc1JjVVBtdwpsZGV3dmZteFVvR0tZeWhDM3kwb1dua3JzYWVNRGxpTmRW
RzdZdnZpMU1NCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSBMTFAwQWIvdE5YTVJiSWJ1
aVZBREdXeSthaFBJeUJhbFNrTXFlYzMrVEdZCnRjNjVZY1p4OGZqcHcwWDgvZHFq
eE51YVd5cVdUWTIzQUJXbXRDNDZHQW8KLT4gc3NoLWVkMjU1MTkgRjRiYjhnIGZ0
Q2toWnJWd2FZVDFRUEVnOVlZbkxoQlFzUDNHZFFJZU9EZGM4OWhZVjAKL3ovMC9h
Yk5RdzlRM2QxWmJqNVVEZ3RrOGl0cXlvK2pjdjhKbksyQ0UyQQotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgU3kxUWEyUUdPbmxaM1ZzUUlNOCtYQlo1dWhhS29hWEkvK2g5
ZkVGeWN4cwpPSDFEeEE3TERGM084VzZjUFpiMEJZSkIyWkY0SzhsUGZoQWVTWEo1
Mk9VCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyBHNXlYbTQxNXJINTVkR2pBOFB0MWV1
Q1UycEFqQ2RUcThObjg4QkFSZVZZCmNpNFc0Wmx0RzQrYXczZ3hTU2lOWGI5VUlj
Y2FPNFpKL2NiKzBEVjErSzgKLT4gc3NoLWVkMjU1MTkgWmUxTXdRIElkUWhucnVz
MEJjd3dLUlhSalZVNWlXZHNoRzU1TWMyS1pWaU5Lbk5nQzAKc2orbmhhWW1yc0J3
SDIweWI3WEVBeGJJMmEyQTVFcjk4eTl5Rm1aTllrbwotPiBfOmR9SFh+LWdyZWFz
ZSA3dV4ocWU0WCBbbFAgZDReCmpRTm5ianZlc1RKcTNwTHNlaXFFNmZ2K1VpRTRN
RGlUUUJhaGpTekJzY1ZZMFM4QmFpZFlBTDJmczhhWHRwZkUKU0RueU1sMlZENi9M
RnVjbzgzTDN5UHQ3Y0R3Q0YyS0FYcGtQLzhvZndPZjBibGM0K2pVRVpjSTNURmQ5
dzh1VQpXZwotLS0gNDVMb2tqN0dSU053NXpYZSs1WVQvaHhKYXN4dExTZjZwcGxB
ZlYwaDBRQQoRn3fGi5O2d7yMfThg58mtf57eNTiUtUyD2Iq6ToRr2KQviWZChhWW
2S/eOIkFCk6q0Srdo2pP0yIChT6KbmfLkP2H0TxqmwrxJsKrqEBloZlN7hQmD34D
ZGatzk5TwPKIoZTdPis+tP/7RNtHhDlAQdpRnpfKT6NtW89asQK44XBh80G25DyC
kD5oSNi2sHXMDj8b3mpUkhqzYh1xlUAuR5KxPtSXSp+d2xQwnmi3Cs0xi5oyYQQA
VvWVyNkKRJSkSm1+KLej1urqGU+z6KHjv4obF9rtxv0NGUL6Ii4RDFWqxWLHC3JM
81v3lf65Fb3f9F9L7AfN42tPHogRZz31HlvXfUoRiddMrB4rasaTXjZaciZdf5IK
WQC6bmI0FYhtCh1o+75QHke3lpaBbi5xuxq+nv4roFeyd4Uqx4i/wDQ6cS7vb40J
CULCnkHTydNXJODhNlFisprS/b/tR05/Ds+Xr+J3OAdyjK/nKbe525IZKuY6N03q
tuAyRLxjZQQpOcGSzWxP/hIFFJAGxf/8t1BqYInQ4ikUtnmgHXp2Lumkxti7HSDz
oUl23nL69A==
-----END AGE ENCRYPTED FILE-----

View file

@ -1,39 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USB6TGVm
TkdpelRGS2gvcEJxQ01XLzE5SHd0OTc3ajNMNWlwckR6YlViQmdVCkYwYmFIZE1s
bWtoUDlHSFl4enhOcVlCbjVYbHhUdE9DRXJOUldCcnA0R1kKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIEdUT0lBcjFVVUVrWXY1SGprTmJKR29hWDZ3Q2ZycmV4bCtQcXZO
RWlrUmcKYlNCZ1MwOHI2VXZjNWxWekk1MjYwc05wcGxEaWJBVzNPeG0rRDBGcmxi
VQotPiBzc2gtZWQyNTUxOSBTcENqQlEgZzZwR0E4d1JMM3RFUGFvQ2Ivd3hvV25J
TTQya3pHYkNGTHRkbDE3eVdnSQo2OXBMR1FiZktXOENrODBvUmlrQy9MLzdGU2xT
QUhEMEd2dlUzSnB1SFkwCi0+IHNzaC1lZDI1NTE5IEJZS0crdyA4OVF1S29teEd4
UlFkWUVkblFnRlBYWWZWWUw5N3l3cHM5dTdnTGdLcXhZCm1jZnM1NGZkbkVnY0k4
UEZyS09NSlExRzFFcDJlRDJNTVQwZUlPM0lsUTQKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIDBWOTNjZUhjcGIwTXg0S3MrL1J5OVJqQ3VPMmtVdDlsSXBuK3B6RmFURUUK
aVVqWk02R2pUNTE0WDBZV1FqNlpnbk5ja1JUcjNZcGQvU3Z4dm5ZTWtVQQotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgSTlaTkxGNVpaVnpsblhSOVNtdGpqaUNhQ01zbFRG
QzI1ZDNkTTAxeXF6awo0VmMxeEJXNnA2MUJza2o2MUNISVV6b1hMdFB1M1p2alJ1
T3J4Y3RXMDNVCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSBxb2t2ZjlSditxa0lnRmJZ
c01wM000Unh2dVB3OFhwZzV0cklrU2VpZG40ClZuWTg3STlPVXZkZjlkVHZPWVEz
RjFvTVdFTFdaa2puRGh3WTZvTlRvMkkKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIHFY
NmxrMnBIYThVTXFaK21hOVFjeGxLWEJRc0VwMGdFZktuemNQbDZ4eW8KWEFPNEpl
elg2UnY1OFJFcTBHUldOM3UzdktaaVB4dUNoc0hVQ0phcC9mMAotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgRHFkb0lTcXZ4cGFlZzkrWFRIcmVVOStyUmpyZzBhb0xES2h6
WTRXRHdRRQpWYThoZEhYMGxMTUJEd0hQODFMTUJZT3RGM0E1UFRua1NKd3JxRmU3
T3hNCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyBlenJkbWdVd0VkYWVUdWx2blhpYnNt
RlRDeTdUdGY2UFB6eVRkK1lLRHpvClRQTGxLYzlMZFo1aENxS2pEL2lEYU9NTS9I
RWh0cGlWTW11UVgwekRXb1EKLT4gc3NoLWVkMjU1MTkgWmUxTXdRIDRXL2xUZ21F
a1FQUWJ0VjVLUkRHZU1SRkV2b0RrbXB1MmlSQjdtcXF6enMKZW5oTFBybGo4clNs
dnQrZWdpMDl0ZWdYU3Z4bDd2cTU0dGtseEFIcTVGUQotPiBpWEAtZ3JlYXNlCjFG
VlBBbVdmYlVRYzRtd2Ivb2NjODkxV25KY0lIU21XS1J4T2N5VQotLS0gNDNWMDh2
bGlMR3I2KzhNN3pWTC9NQmw0NEJ1RXFrRzE3bUVHTCtIUlZVUQqotvqxr8ikzOqN
qGr5OKLvK21Pi6LR8mF/2ol/n7XKiJEzhNRXwqPN62TOMkd8ODKn0diHwbEvehcT
jW4F448glda6phmnke29f2Uq8Ls0mivd752Z0mV50pIEKHc0Y6ogUARiMKfBKmoy
Lebc2XY4Y/lFUVunGWaJoufQLMI4swKbwed7rujdq3sxinDSwzUAw4ltID8IMG4Q
ql4Q54e7Qu730NcXucmNuryWW0DKopWTobsnDVCfMN7ZXC4u+IsuL1xqdd+yC65u
6H+5x8EoTaH2EQDaGVa1B9BdTut9E+0VKZRW7OopwGFTuX94PmWrfaaWlfO3BeKx
JcCMUvWgSbv0PVqHC++mbxrC4/JNC/fr/KIFmG9TEVh1RCVqJTug/MNyY4qwrzEX
lLEbs6TDPMq77/wij1kbeNArynvzhDBVjPQD/V3xZi8XkaE/quOW9ajnb5P4W9Sy
yJnqL0WvKER69gOkkouRWlEzS4LWVWCLHwuskpBlJYbmpAmmfSnXRlE9MFzZOwYK
++yH9wViG0crNiic+NCCILFG2JjR1i0bNFgksNaswo374ActWw==
-----END AGE ENCRYPTED FILE-----

View file

@ -1,40 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USBPa21J
b0Y3OXlUYmduTCtDVVc2TWZCY0RVZUxObW9OR0xmaEZpUjF1aUM0ClpDNzJRaVVk
ZE0wU1BEYmM4MEw4czluSldHYnhZQldZVktieTdqMWM5NGMKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIFM0WkR2ZHplUW04UTRkenNqV3o2SUxzZWFic0p5WW16Sit1Rk9I
cU9RaVUKWjhTS3d5Zy9BRVExaCs3Yi8vYi9UVXhSSmtRTEJxK1h4dHlydDhLZjBU
VQotPiBzc2gtZWQyNTUxOSBTcENqQlEgc1F3QWFqQjdXaTJkQ2hKSi9Bc3pSQTli
amY5am4wdlFZVnJWNGp2VGZoWQpNV0FSMWJ3c0twYk9wSG1PUjRkR0FYS3JZZVpH
SGRoQ2RaWjJnUDJvVk5jCi0+IHNzaC1lZDI1NTE5IEJZS0crdyBSR0FnNnF1bjR4
bk05bWdYaFQrZkRFeGVIUzBCMFZKeW54ZHI0Mk9zYVRFClhEL3phVUFNUkc5amdX
UWZ5cUtUWHZ0eE9ZbnpobElMS2RoT3NESzhrdEkKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIFJ2SGJYbG5FNmgyeW8xY0J1ZTRrcEZEYnhLS3dUL1VhMVI1endFb2d2M2cK
cGF0Q2pKMklMTUJmdjhlVGlHc3pzTFdwdDZ1b0daQTI2bHhtNk1URWtNbwotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgMjZGczJrQ0pWdGIrbTcxMElpZ0FSczc5WGVrN09G
am5DUVhrVWZZRE5WdworaGozUWRCQmY5dWVOVnJ5YUI0OEJ1NENCbS9YeUI1YXF4
eGxESVBEeW9JCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSBVRU40YXpBdVZNYXBFVU4z
ZTUrZHVxWi9KUW0zOHJMbkRFRlFEbGdUUmdzCmcxSndnbG9QSFE3LzFFTUdzUTVD
c3RsOTdmRzByckFxZ0dHUmxJcUF4dzgKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIGNJ
YnJpNE13M0FNSmxFaDVoc2lEcGgrOGhydVBVeS9Jc1hnckhqWGE0aU0KOEYzdEpS
ZnRLLzVXZGYxeG8raUUyVDdQdEE1L3F4NGxJOFB5V2VNTlNTMAotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgYTZybWdSVll2YTNPN3AwRzBVQTNqeHF3SjVFUG1OcFh4RXNK
UTNwOVF6cwpxZUcrL0gwbHlmODBvMUF6ZEQ2V3VjcTdvNzZadU9mWjA1M2IvVEdS
R1RNCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyB0VTFXaGwrNUdPNGdhZW83Z0dOdzNK
RTdlSDFXS2IrYVlzZ2dudnJUbVg4ClNkMHQ2SGIvckViemw2dWhoeEVxSlZhMEk2
MURjTUNQdGcxYTFUeVN2OWcKLT4gc3NoLWVkMjU1MTkgWmUxTXdRIEZZQ1dPamFv
cjd1cXVacWI1MFNDY2tiN0NrbU9Jb1ZraFg4d3VIc0RzaXMKVnhEWXNxUkNJbVli
Vk5NUjBoL1RXN3JpOElzWGRhdXpVemtCTUJWWE5aOAotPiAqUmI0SzxcdS1ncmVh
c2UgTj5AWUkwVGggQCBCCnNEU2lEaTc4M0hEa2hQb3dmOWdUKy9VV3dKWnVjWnVT
NW8rTGpGRzBpSXRUCi0tLSBPVzFxckF2NTJBQVkydUNwVVFETmgrcHZLcmhIVTM3
a3lXTy9oWHAxOE9zCmz8lA4HcXxPG9PDsZrG/bRyYR9uXiGBQ3aPzYgovO7VALuN
Vj3er0hkDRQOD5r0IiwUsJenqUd/BNPgT69916BOW1e+sugjIXUIjWlkDPuRI78j
gueTRUnl4OQGEnOesN+qJZPUovyk2br3uKskCuZCAoYEvhgA3u/lMPb4nOj7oGT1
pvwlJg6v5p7yJ3uBkBpXZEZJoHInF3PRwh8irZ0gJNSp1vJYIW805RGZ8tQ453/y
a6VKBTk9nT2nOtrM2Fgm4IEqMOJ0aLcGRzLKMCHuALt6akqtuXpIWrc9mvHHZT6Z
geoNhvFVOCREbksAQT9OqC2sWY77cwLl8GqFGtKOI7a+PSKbBxsZuqD8AgmIoNMq
JKA1OviYfCc2+MhJ6woavcJp9jYC+uIRQWNeMv/pCBfUMI5GsP5NxocV0rq22n5+
QXi1GW20cujqVgQjtMqyAun5u9xc6xeKJIKwxjK2xVbQ1Ritqn+Pj2jnUCh5KXBc
ZCQwCInPO7z06wD5x0mEP+nQbFqe6BzyTtFD6u52gaGhELlBw6RvP7ptEG/GCAvd
3L4AtcHj4melBlCC5XgW4BbEyvxOhCfY
-----END AGE ENCRYPTED FILE-----

View file

@ -1,39 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USBoNVpS
UWlLTzNmZm9ZVTZXaTVmeEpXSW1ZdWl0d3E5UE11eFJtT1BKZnpnCk1jREVVdUNp
WkhNSyt4S3Q1MUNtMVVSZnUxbzN5b29LQk5lTWZoZTR2cmMKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIDA3NWl3dVVqbnB1TFRrVGJXb05Ec3QyOXYrdDVxblUrbE50TitT
ME1lSEkKRWVOSnJ2SWE1OVIrMWdKU2g0YTJjaE5XUTF4a0ovdktsSmZydldXT3NG
ZwotPiBzc2gtZWQyNTUxOSBTcENqQlEgdWVjQmxaQ2tieTdVeWgyUFNlak1HVVRQ
Zi9EYVpBekxURURvcitiK3hDRQp3YVIyaWFTS3Y4RnJxUDBua2YvVXUwZjk2dkpv
Q3pnU0NXNFg4K3FlNG04Ci0+IHNzaC1lZDI1NTE5IEJZS0crdyBtWjBxZXNEZjZF
aU5Cdkg1ekZ5b2E3REpCQkZOTk1TL25ibUJrbjZBQ1RvCjdGNEVhUGhRNDNxVnpD
blUvQ0hsYUhkYVE2T0VFb0JBZ1BNUGtNTmlCcXcKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIGJXMno3NDR0OXM5ZkZFOUozSFN3L1RZMU4zY1J0RVNYVHI4REtNbnRVVlkK
NjV0NkNkdU9Qb2k3Q0RiN0FtaVJ3dWUzdXJOeHVIUG5RUVc3aW5MUTFGSQotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgYWlYMjkrZmxFckJ3dVBtdVFpd3lPT1ZPL1U1bGl6
eW5pK2g5NmNVVHJUZwpEQzhKUWVtYUxYTVNPbEp6U1Z3Z01GTC9PMEZQdFREL1Rq
WGxrRlhicVdjCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSBmemdzeFo1T1dzcERtNU1m
V01RMVE4Q3QzLzMzb01pOU82bEdUSGRTWkY4CmxsZUhFQzlUcXp2dHdIMW91SFFM
REtZUDRQdU5sVUQ1UVJYdDIwdUJPMkEKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIGFM
YlpuTHRLKzVFd1JiT0wyVmo5WWUwaW1kd0VEYWVGQ09rM1JrU1V6QlEKN2NqRk92
aWZxNlU0TVRvd3E2akY1UytQY2s0bE5PaCtNdFR2SEhqYlF6cwotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgRVZNZUNHOVFIanplMGZuOUtqM3l1Ly9tcHI5MkRwYnVMeG11
UUxhSmRWZwpsZHVkc2l2RVZCZGxJM1gxeFNVN1k2Rm1mbnRaY1lzcE9GSWVYdzN4
OURVCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyArc0VlME93TExrQ3JvWlJudzZ6TGJq
UUZZeW5LUVdjQ1pCSlMzUnkySUJZCjJVSDRTVHY1UlhXdkh2NEhJajhQTGU0ZVlz
NDV3Yis4UzZGQlBJZkt5dkkKLT4gc3NoLWVkMjU1MTkgWmUxTXdRIG16aVJoODBp
Snc4ckpaVmRSamd6OTZTQUh3dTZsMW53NzY2ZjMvMkx3aGMKUzFBSDkzRlBvN2Vl
dkM0RXIzNks5MFcvb1c3cjZBV3piVDFSd3dKZlFydwotPiBsaE1yX3AtZ3JlYXNl
CmxwTHFySDBzOVBRckgvNThGNk0zTktHbTY0b2llVXJYZ1EKLS0tIEpLN2wxclVK
MEcxdjUvUnFtem1XQW1UYmVzUGhRVkUyUWN2czM1RlQrSTAKZB2uCnpt9Xqz1w7+
jwRVePaF2c2mWxgJUdpKpAZVgEUWkGSO6NEh3iTdLpsI9mDfh9KYRSPFqC9P1cf9
5KId2A/oki3PNUtcuoaLn+xLPV06Zs3QsOds1ghO2AcCsVW4hC+Sgr02JelS5eCt
Q69nBpQSw3ePEaASSFMCU8Z4F+n0WpkAq5ERACZiHIwWDes4+PR3BRVDvjyUlFG0
3mtSpotzlTtBJldJTado+oOS8eKBCMgoXmP9t8zFBLe+Aj48humYnNT6rPv2xj+C
Y+7FK8441uWdbu4PyNJEknF1k5YHYIg5pyrrDRGRtoomShZyqhufEAYpMIlCABpp
vPYj3iqqyV1T980Od94qlYJgpHEX6650gMSAtqpQdLmhnOwF2LW+g1Gpw7lfk4P2
kzZCflwDGtXXXXPIyUiAB30zKCufjPXEl1x8oTXzbBKEE6lvHDgixtrNt6iMjVbN
n+Gon4PcolTdwkiEEst2POOV9Ll7KfOidMl1VfJxXKyt5jBA61xv54IQiCouUan8
EhD4uiVHoPjWQ5E+h3YvedT7hrGWOzkxNbw8NUf9LDIk7EA=
-----END AGE ENCRYPTED FILE-----

View file

@ -1,39 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USBsNVNo
Z2ZuYkQ5TDhZNEt5VDFDVUlETFc5TDRpcVoyZVJqZjcrK3VTRkY4ClBJd3cyaTd2
c0dVZXBBSGpQZEhiamEwSGJCZTY5K3VKVU4zSnpmUi8yeEkKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIHd4MnFBWmJiZXdVd2FEQ2ZoS2FjSmVmaCt4Y1J1dFpuVndDTHlr
UVhpbW8KT2lyc3dxbTNacnprUDBmV3dPMGNoeXR4OWhCKzRLd050bjhOdmxmdlhT
WQotPiBzc2gtZWQyNTUxOSBTcENqQlEgS2dYbEdxMlZaQmhOSUtkcjg5YU02Yjkw
Y1RINWVUSVBZRE5MSEd2MWkwawpTZzhPTUlLU24vQkdkSDhsSUNta1h1T1FFUEww
R3RyaUVFZFpaN1I0ako0Ci0+IHNzaC1lZDI1NTE5IEJZS0crdyBsN1JhTDE3VFNt
T2xLMmFLUlJBSzVudU4zRXNUM0pWajQ3Ujg2eGhDV1V3CmMwRm9wRTRmeFUzUDNo
cERtZVhkMy9wYW81OUFMSnFDOWRWc3Z3QlBUWXcKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIHlLS1lieWoxRGlqYUVoRW9zY2Ftd2RyeWNmbktvd2s5SkFKOVF4UDJnbmcK
ZlRqZEUvN3JXRTM1ZUZoMkRlMUhyUWMzNjgyenROaUNzSU5SRFdGdFJXbwotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgTWJjbGRkOWMyTGN0RzYwdzd1eEtsc2xuT0tlNDdQ
NlJYVll6UVhBWkdXcwpVYnNZSDhQeDlhYUVOUk5xb3JlNEVJME0yY0FRcFY0V3A1
ZDArVXp1bkVzCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSBXaktIV1dQdDdsMkVxOU1z
YjRFWVVPR0E1VWVmVGxFOW90S2w5ZEMwanpJCkw4ejV5M3RSZ0lYYjI4ekp5VDFO
Qk1ObzNZRDZtL0NFRWJMN0dUMU5NeGsKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIFBK
UmhSM3JMRCt3QVVVOUFyVzJ2MHVVRno4NHE2OWM4WU9rTnJQbFB2MTAKVXJySC92
WldVV1FoL24zeHhiUEpmNDYvZ1NraUZwQmRrMGVXb1ViaUcvTQotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgVCtUb09INWxCVmNQYVVPaXRHS3gzallUS0xjd1hCVUE4TytV
RFJlLzFscwpvOEdTZEJiTVY1QmE0OTRRMEZlYjRrM21oRzAvbGdMZVVjOUtma1Vs
Vm93Ci0+IHNzaC1lZDI1NTE5IDVhZHFNZyBPZEsvbjF6NlZpTmlsVkFpbUd3VTFu
TEN4bGIzSGlZN0tSZ2hrQnhjYzBnCjNzOGhoQmtQRzQ0bXBSLytid3JaVi9pZnlP
NHpiOUR1b0ZCTVFPUGFTSzAKLT4gc3NoLWVkMjU1MTkgWmUxTXdRIGlGa1dKMzhy
dHl4NW4xS1BBS3lqdUQxMmJOWnZkaGlkMk5Hd0Q3RjBsaTgKeWFYQzVCVVhGMXZ4
eHlUSko3dUhVcG5UVGUrdm9lY2FpYjNickJ5WjNjZwotPiBJd35rdy1ncmVhc2Ug
X0hMXlxLQgpIZkFlCi0tLSBKU1BvTGN6a2JEL043czlmeHdFNWo0amZkelczRW9X
RVVGdmt4OFg3cTJVCoQXkEX485m5lMpu3aosZI0Smyp+CLo9V0kTfnYGfgcf5tXl
Foip7PquFErhYrKTumAY0p5VWqdhmTYu57yJW7UeuAMxyBgpVabcf28aFL3ricK0
CgBSr3JqC2Am9C8Kt4aXm6/m6ylOHFKKyBFcDJlXrgn4c3WpJakAZc9056K+ndMi
5uGbKZxBYm7TCPvJtt1/78iiBOfrkPRcEaIwwhzSizPC/W0i/QdiWTbzPHoF0vr5
NBfrIDuCX4ZNfV27nS1vDFfWEynF15vZkszmBSgVz91b0DLarTKKeTGVt/LNimQP
veUSBa2TAOmf+3OXGPicG/r1hewJtybs7pGMbxFItmjKObgZ/oH3Oa3ITrnVbjCo
IjCnaFBA/LdoFATLNx1zQh8eNVD1TROzFrgnoyGCEgXTg+FfOAIplFEScq9f3mYT
ZOWjkqNWWGIHfwOCFW+Isu21EIU+gZQ3kScVbuNSfSBD19cZCsTinR5TjWYgv59q
N669N7vjX/d+wbcZMllx3ZfBT8CQSf1JCC3a0pzFOEMQdLMmT0HOn9s4zp65kgao
x8J5Uh5avL1qPTMc
-----END AGE ENCRYPTED FILE-----

View file

@ -1,40 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USB5em1S
Vkcyd0NFT2EyVlBuSmI5MmEzVmZ4TmNCdXhWMTFBREd6TDhySFJRCm4weWZjdlF0
QXIwSURHWDZ2RWl2UEFSSlltdHRNTG02SERPUCtrUW45SzAKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIGpWckxUL0t1a3kvMGFSSVNCN281djlYdDNwTncrMHMwYmIvOTJK
Y28rMGsKTFMvdzNqNS9EL0w4eVpWQlRpS1Mwdk1HRnZVM0c1L2h0Zndybm5ra2hP
dwotPiBzc2gtZWQyNTUxOSBTcENqQlEgKzFna1FLSHZxbWI5OVlpM3ZSOHp6QlZX
L1dyNnBtUThUR0VjYTdpaHNqQQpVeEJ1RnZzTnU4Vk9sajQvNGd1azZKUUZ2dG16
TXUrYnI1UTdkclRCdnVZCi0+IHNzaC1lZDI1NTE5IEJZS0crdyArbmdIS0ZaSHpr
RC92QzM3WjlYYTRYcTFOUGhPNDYvSDkvMm5RMXJISmdrCmUxb3hvVG4rek9SMHhI
dlp6VUkwMG1JamNGOTBueVNVU0hsWVZTd2owRkEKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIHBDWFN3dmlxL2R2dGp3SWhJYUovOFZoUGRlQ2w0VkplenlCVUpwaTk1VWMK
QlFlbnQ1aDJ0QzBMQU53anpNUTBxbUZDY1ljOTZ4TTcyRzFjQldkZTFmMAotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgbDNFcTdJR0ZJVkNJRkUyR29CK0t2V2w1Yy92UzRh
WHJUSHdqSlFnbFEzRQpLN2R3dldoNUFTQ3VndVphbDhUWWJtdmhkVkI4alFkdG1N
WUJWUm81SmZBCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSBKTzgyckMzMklZM2RhZC81
cnBMY0N3U05XUDNZSTdWYldRcEx1eWFNUXdrCnhlU2FyNDZ0Skt0VDBzWkJMUGNq
YUxxK1YwTDZTV3cvalRsamdHV2phY00KLT4gc3NoLWVkMjU1MTkgRjRiYjhnIFY3
cDYxanZRWHFlTDZPT2Jod3pNLzRIWjFnMGdHaHVROGlwVlZWaGZpeDgKT0M0YWZ3
NGhPdlcxQjdrTms3UUp0TStUazFHUWtGVDFUbnZZU3hpVW5yWQotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgZlpaUFhnT0xXQzRuMHJmeStCTU8yQ05FRmo1RmJ2MDlnRGdE
ZS9BNmd3UQpiMkpTTmJIZUM1NHlQN2twdkZvUzlWSVhzU3l6WVNVcVcyRTBsMDlh
TmEwCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyBIN01sZnFrUk12MnJ6NFMzelpJYnlC
UGlBbDluYlN1ektSZkxBTUlINGhJCjFnQWFyM0hVajBHblR6U0hJNjhuK3psM3dj
cXNPY2tIMTFLQmsyL3c0aEUKLT4gc3NoLWVkMjU1MTkgWmUxTXdRIDFIc25oVkZX
Rms4a2V0NHF4L0ovbmlDb05hckJkZUNIbkdGVzF4LytkbjgKUGFMOE45VXBtUlZl
NlJCeml0ZGNlQktWWFlzRnp6Tkwra0RjWThIT0VUYwotPiBjLHIkLWdyZWFzZSBw
ClZwdHVUVlNLNVZteEtOVUhoUXo0bnNFOHIvTzJYNEwzRjJOZDYwUysvQmdpY0Fu
REhicEljN2RoK2VldG9BCi0tLSB5Q2h5dGdZQURpT2pzYkF2QVBnWStpNTl0Wm8w
OXEvSWxxUFBJNGhRK0VvCnEE9IZkJlvovun4LAyNFKRfn5f3vC6/+Q3QTrL5AOuS
6UsEYBDc0gaXl8fy/7B8tW2slsWuGnXE8qtXZS4l6jrg/UZiNGkXFyOjv8YhezDr
QvkBNtgTdjzObO7g0QYoH9cgANZguIZgRKrkmZnKMjqhm+etXFG1v8LYUABpbfRt
LECIKGLDLgoRnZFaQbgZuVjDZlbKa8bCH0Nz5R5RiJWVlc+Qv37Jau35Qo3dsQgW
pHlbp/JAIYJc208scmeLz2DqM+1WY01DlGbvcsVnpYn/AkjAN25ymHaZRqj/wAqW
Zf2GzfpF9B2PeqWpELw6Ag0hWWbsaIfm+NVGYmkMaJf3GnRcozwi4WwPmLle24+r
bsPBlmIFa/GLSZa3o/EMwZ+uJ7fxMPZGFcLr3s84fSd/7DKhLt6HeJWJfSE+5Tv9
HWzEy7XU1wz6esaGAMn1KB7lt1o22qoyChEfjTpJUBwAmICnNb3n6l+SDFze7k/w
IytdbHOcwrbIJScuxXMT1KYuB50MFbZpxGFsjBUfqfoM0vBdxC20NO+T2sCH/NiS
Oe+f4VrEWDnWkSLTKJoR
-----END AGE ENCRYPTED FILE-----

View file

@ -1,41 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USBVUTgw
bVdlQnlSajBlaFQ2cWd5RkJwR3BGbDM3b1NTblpuekxqWkJ5Q1JzCmRzQUJKN1NC
U3h5dHZDaDBuYVcrZzhoa3EyNGw5aFh0RkREdkdIeDlRTGsKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIGhvVzF3R3dHOXhNSWJmc1FVU2dUOFMvUERGWHl2WkViUFBTTE01
a2VtejgKUkJGTkJrZDlEeitrTW1qYjg0ZFMyaVpDOURySWtEalFkbXg2U1VMWmpJ
bwotPiBzc2gtZWQyNTUxOSBTcENqQlEgZExTT0ZIb2FxbWR0WUhtcjF2UXNoazRU
dUlnZmZaK3lTbGozcGJSd2VpRQpOQVg2TVJlbExXVEJlS0R4Tk9RSTNpNU5RY0pS
MnZpVW4vaTlkL1hZK2hvCi0+IHNzaC1lZDI1NTE5IEJZS0crdyBiQWFEc0lKd3dC
M2xVbzFyRGVGdzFBbHAyK3NMdWNTenZiekJxUjlTd3pZCldadTUyUkd2WEMxckJW
SE9vRzJJcnd1cHowdVRPRVhWSEJ6RjFsM2xpazgKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIGRLQVR5UGJqOC96aDBKVVZLVXlTYWY2KytvTndIeUZvSEF2LzgyTC9DVVUK
amtwWE5RR3BuV3NqS0dsTjBNaUx6cFIzM0VwU0x3elo0aE1pVCtVNVBsVQotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgdUUxV2RzWnVPeFIyYWZoYlFrK2ZTbGN3YnY5NHFM
SWQ3ZURNWGkrQld3QQpxU3QyNks3dmUzUnFWRWRhb0pudVZBL1o1dVAyN3JpMWdM
YVNhVWlzMmhNCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSBvbm5ETFZtOUN0ZTkrd3cr
VGo5QW5UQVI3bGZHVXJONzlBZ0dScjJzcXdvClhiWjVlYzJMdHBwSkQyVmJOdVAz
RzhVUmZONHkveko4dWdlaXNqTU15VVkKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIGR5
MlE1SFVVNHErbjNRS1JtVXdNQ2VzYldRMUVTMldFUXhnVzBzNmlPd2MKNDUyR1Mw
ZWlPU0hpd1UwYjlCMVkxQVZaeDlUa3hBR1NUVDhlcnFEWEVkbwotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgSmFmM0JVZjA4Uy9mcHYvL0dNdUhiWmR2QlJWQnJxWXJma0RV
UTNnMEFrRQpORTVGNzZ0SU1HVFhtbGdJWXMyTlJUQTNWTG1MUlZObW1BREtXM29H
UkxFCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyBJVWZDdUdLVE9SOEJtcGtGN1J0RURs
aCtMamMrS1g1MEplelZDcVZPekI4CnNDZHFhcWdJM3k5eGJxWnEzVFRGdm5CaUt4
SWd3Tnd6WCszdjRvOS9weU0KLT4gc3NoLWVkMjU1MTkgWmUxTXdRIEpvM3JMUExJ
a3JnUWU4bG81YXM4WU9pVTU2RnBhK3NxSmUvTUpHaWU2eTgKNG1JQm5wZm9NVWpp
NlJEZWtWbDhnZmtrLzNUTXZtTHBzR2FjMlI4T1NuawotPiAtT1hKZCUtZ3JlYXNl
IDlzIHZ8PGsgSClXfFYgdwptNHVzREZJSkVzOXY3aWVtNzBoV2xFU0lGZmdvRjB6
MGhjbEZtd2xDNGRrMDBVbGpPY2wvYk4zY1lNd2FpMzN4CmdKQlk3ZXQ5Y2lkZWV0
VkY2K1JOMGpEOWFzUEF2czZUCi0tLSBqUExwYSs3WitZYkwxZzEzcGpaQ082cTNu
WVk2cGdZZSt4dS9rekJQZDVRCnGxsdWQB68J3OJYe+EFHVfnjO+Rlk+Bnhx+AVgo
KpH8lD2cCXs386AaBQWUFq2vOkBappoA4oJpq3T1oL5jTxdrxdeo4xntQBqaJIS6
yjr7L06BA2NFG3vj+eL2X3yERbK9DwRGjKUMNLEPFtgV6mN6Y9iCk2Cip0jhPK9H
+7yth1/LZkxn9Lz2go/qAm1LxLifrMW2Vogs+mU6XsiIQkBYDB0sgIRdDys7VFLj
HZ2yDC+IoLPs4Msh99fx4Li34j1823Sn3QsHJkA0zUh4GSPzBT35AmIoakXy6Fip
OHQ6SBNjXO3H+2OG211F0R0GHT0Y4mT0HhoBhuKdgJFrI/EyDkXyIoLaMjnQSU6v
C2pA/W7T/wA03lcrGyGuy//gIXWvAGHd0QnfeQ8gpWdjfjxK2kmATg/PVI8FG5eE
EadI8jLHoBnJfmIxnykCn5Dll2VcEpZ4tchDkXx5OnHWn6Jlk1m0sR0iTad37Vwp
KzNQDS1Iw8ppKXDhJrjZp5A+usuxSk3vf7OuuxMdpkoGsypLQPoOb0JwlybxoAOi
ta8PU67w+6AJY1ih0G8XILTQ
-----END AGE ENCRYPTED FILE-----

View file

@ -1,39 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USBUQjk4
R0k5aTVtbDdJbXNvV01Qelo5dEhHMGdCQ09PK2k1K0h1WSsrSlNRCjNuSlZYN3BJ
MHpxZHRyNkx6U214TTJmTk1vM2dCalp5Y1padFdaK0dUSEkKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIEI0amEvS01qRTE4VWNCOVlFQWpwZVVOQXpwclBnN0JKaUppdXA0
c0RYUUUKOFpKNG9Ud0FHam83V2NCK1UvYmN5YUJDdjM1Q2luRnJ3SVd0elcydlVh
MAotPiBzc2gtZWQyNTUxOSBTcENqQlEgZ0VJMHBXcklrZ1RmTFZ4NU45V1IzRldH
clV2a0RPT0tkaVR5UlozbnNDcwo2b25DZy9iN055VHJsNUp5S0krS1ZzTzhKa3lt
aFR6elpHT0ZzYVNEYVlRCi0+IHNzaC1lZDI1NTE5IEJZS0crdyBMQ3I3ZG43WkdC
ZjlTMENVY3UwOVh4VE5GNnE3NW9ILzJDRmRkVHV6a1VBCkJ0V0FwSXQ0QmM0SG5i
ejZ4SDlBWTlvbmZtSHJTcUdISDFQWUQxTVJicDgKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIDUyNTBTOGlKcUttYzNZL0RGL08zdmdwL0hKbTBwZ1FtU0xOcEt3am9LeXMK
L21ndXRvSGQ2R0VNNlFsaUhaTnZsV0xsRGRPQU5PTEZCSUlBYVpkRTR4VQotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgNmIrMlAvS0dRc3p2VGFUV2NDcVBVZTg3N2diM3ow
djJ5cE5ZMUJ2UGRUMAp1N0ZhVEFsQ1piOUVYN2tRYW16WjBPNjIvNDl2bDdIZ0sx
OEFFQWZuWjR3Ci0+IHNzaC1lZDI1NTE5IFJvWDVQUSBSV3EyNS9LaFpkdGNWeUVF
cUVqd0ZSclhLVy9vTjVpSURsVFJ0SDFiaWpnCllUdjAxMG5rOWRWSGwxMXJCbk9r
NUlZTzFYNHBXdDd6Skd1Ui9EVjY0K00KLT4gc3NoLWVkMjU1MTkgRjRiYjhnIExu
WkI5aHV5THZEbEZZWldZb0U5eDl4R2d3OVRGUFh4K1ZXMUpBZTlVRFkKNTFZN2d4
MjlLUk50Y0FaaFRnZHFQVGtWN0V6Ym9kb3J1ZTFkMWhxS09kTQotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgbEtUaGlPSFJNUTlCaTNTZjBVS0gxbjFKYjNFcHVxRldVZUda
ajh3OGJnWQo1dGlNRmlRZU9IL2F1a0xWemh0Y2hBZ1A1b1NORVV4STY4Q01Tbkpa
SE5ZCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyBKOUtiOFljK3NRdE40MXNLQWtnK2h1
d2xIMnJYc2hib1hDTnA5elhGWG0wCm1LaXptdUxaTHkrRWxBY2Vjc0tUQmIyWmF4
cnFubC9NY3MxMmJLRm5Ra1kKLT4gc3NoLWVkMjU1MTkgWmUxTXdRIHU4OWNxajBL
dlRwSHNxUUREZ2tVcUpkUWpINmVTY3h5U0Rza2Z6UFpuM2cKMndKSklhOVhEeWt4
WDRFeHVaSTh3VHcyU1hhKzJyV2lwMHVpWHBwM0ZpMAotPiB9ODdBMj5PLWdyZWFz
ZSBxLkkKUXBzVlFKawotLS0gSmczS1lET3BHODZIb1kzdVlxVmJyTnhnZ1B1dHU4
VWJyNzdhWi9sbUJkZwoixf1N43xLWsnwn59HIDqvZaZJ4DZQLMwZV35Q8JQ5Rox5
ZGyvsR8YCnuXeN4PuycqCYeDZrCPpauY58Ga4A2M+Ix+BalNNtDCV6HEFPsfeWtu
7tp/rvWMEGKJqulYysuC8uXaWgdc/FMcOhr37b5ErH004RKz/+Mr7Cm9h81KCwhb
MX4uGWYuhIEATgLaY30djh/eZasKpLN2Fk/zCsEm8wQc0BAF4b0VNMlJsRSEWY8h
kDDplK++qfp1J0fpCiPXCO2DmgKCrG2D9g5/ahh0W4mQFM0MRDOkmL2VLnHUS4Z1
CfE5j5/7Xk+eCP44WqOFS/cBOduty89oYbjfwio9Ep2kfBpM1jGSOHyNMMv/oUOr
LjwLCUVcMX/N1lsQD8Q4Az98QpNmStDfIbcjYLO/c6eAkRNmYDiS2/Zv6gd5NS+S
jkULCWsHDhUssh24Z5yvwLW9lsgkdTF8Oi7crGaJsy8UJBY+3Dx6qV7UeXXLa/sT
DEi0CvB3iZiqmyctLDMUI0F3BibasRnCYYsNM36vU5NviMj9wh3DXiAVaN9/QerP
vLVf8sjTlRFO85bZyw==
-----END AGE ENCRYPTED FILE-----

View file

@ -1,41 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USA5REFK
SXBXcVIyVjZlKzA4UUVQbHhJNjcwc1JXQ2RPTUhPVERWWUZCdzJRCi9CWndhK0RD
dHZHYzgrR1hIZzU5R2s0Q1N1Q29pSXU0QWNqazE3RHZEcFUKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIGYyVGZwMWhNVTJHVTduNURBM29WL3ZHVkJJTVZzTFRJNUVTdm1R
SEJVUjAKR1RVR2FvY2NSVVBaaUR5eU5Pbm9BRXR4QzFJeENxWmFxS0FjVFN1UGxL
UQotPiBzc2gtZWQyNTUxOSBTcENqQlEgTE9IaWduejVsM01rTnUyVEJucm1wS2ty
VjZmcE4yenY0YnVvdDI3TXB6YwpyRnN2U3FoS0lwYmtzNTVXSFBYZm4rOG9sNWJX
d01jcVdmbVFLK0tiUW5nCi0+IHNzaC1lZDI1NTE5IEJZS0crdyBCSHQxV3o2MkVh
SGlnMTNOWXNYMkc5YVVtV2hEbFdrdjIzRmFkOEJOd3dzCjhaRjMwV09IYjQyRnVa
MUs4TS9zdnBVQis3OTEwZVpWOVFvWVNNSnZwVWMKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIDFVby9DNGRqbE12ZVc1OUpxUEVLRkRDcmkwK2ZjTExQZTUyemNacjFyQVEK
V0M5ZXVHd2JibCtFdm01YnRRU3Jwa1VDQTZxRG9oZE40bFJKMzJ3ZXJmcwotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgcTMzTmp4QXVGaDZ1akVIWktmZkJBZnpPTitwL3dq
NnI1MXU3ZDd0Ym5ubwoyTllzNDNFWlVYK1pNSzFISHlBYmwyNHRBVHpxUy9LUjZw
L0RNemwyTEhNCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSBhblRMZUhTTi9nTWJGZHRk
MUhCN3lsUW1QSWZKTWxzVUk1ZmdqMmN2SW1JCk9pd1F0elpucE54bWExZmVUbHFB
aXVEMFB3dnB2bEtoWDJ4bFkrdDFYZTgKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIG5S
UFZyc3ZyRW1LMnFBQStUa2VkV3U1aWVSbEt4UVYwTXdmaGZMeEFvajQKeHM5b2Ru
bDZNb2N1MHk3Q0Yxc1BodnJZaU03alFXeDVCYnJzdXRRajc2ZwotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgd2hVa3VkbzBDbjlLcWJsSGxtSmhHMWJNUUNkSnlwSVlLcFhM
b1cvM0RWYwpBRjc2UmplVDBzek5CVkZKUzEzQXMzc2F5cytaRzc2SVhpdnNhQWFX
bmh3Ci0+IHNzaC1lZDI1NTE5IDVhZHFNZyBBN0pnSm55czgralJJK0I5SHJKeTh0
dWZoYXEzVzJ0TDY4Zno4MDQyMlJrClE3b2NTWW4yUEFMaFhEOE9DVG1IZTR4dFBo
UGxTZEYxcTlUK0Y3UGJraG8KLT4gc3NoLWVkMjU1MTkgWmUxTXdRIDV6YTJjUW1Q
aTZvTjYyQ2lKUWlNNC9UT3I2T0RpTUllcG5Od1BUNG51RncKZVYzbEd6VjZKVEla
d0lPTk5iTzNPTURrNGVjdzJYaEhoa0lEM3piaktwTQotPiB4SDZfTT0tZ3JlYXNl
IF5za3tQaSB3XylqLC5lRyA+XW5AMF1qOyBsdDhiCkZpNFJPaXJJSG14QTZDS3pz
ZzRBSFV3V1BnS3d0N2JLK1Bia09JUDRWZVNxamdMdU0zbmdEekQ4MURnL292dkUK
c2cKLS0tIG5QTm9IR3FyUGVGWVM5bjNPYk5vdnVpaGswSWlCWUxab0FaZ25WZHNG
YW8Krvkb3AjClvfTUHThubvKKHjLuIBiQc8NlW6PClnGoh1J7pTnIObysgYRGemR
gt6ilnB8NGS/iUgMvGNlJbqt49JIejCajmLyFLzlOsn6TPe2GvhWNtf3DA0JtcW6
7GHBrHE9c9fvfqCGoW6ywFxXeOhcCYsBsXMuUu8dB3nME70TaA8lAUSI0Gvx2u8U
qcH6Oqh0lG4/98s1dCe2TCqjqa/0xQ07PE/7rbC2+YpuX58UYDDwRFDzPtiUihNI
hhp1Gco3DVrJwpNmXBe2TuE70oKRzlvmwbiuK1lQ4B7OWyFds97RP4h9OGq3Tn3E
qENrcRTd4MdHcj3/TqriLuHZwJCNxmG614JhlSrzjZtlUuyCa4Q+UfB/9FBq+lkZ
jNttM+gJzt7HY/5VSl2EY6GtbpbIpJU3W5D+fMneB0no2jOc00YVLMjsY9uDF6nY
xeVBOMJpYHZrlou54xeKmaXbjrdEwYGqt6syz2MW8YV0VtJc1piVsoeHtO5ajDMt
7WeyklfOSx5ZDUCKLlXP3u3en3fXsAtKNa/JT/hBWf6JvCdYlI6SZLsGGSz/wD6g
w8c=
-----END AGE ENCRYPTED FILE-----

View file

@ -1,38 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USA4ejJq
VHBFbVAxNWhPZnlNY1BZNkJqUXdhdGdHamFYVkVLNlpPQnFOakZZClNObTc2YU5Z
KzJpMDF3TTVrWmJWdkVsMkJpVkRlOVJleVRoTXoraUY3dTAKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIFBwT2tDdFVjMWxhYlB6QmQvdGRjTDhZSzlUNUFvbG0wYytLcitS
Vk9ha2MKVVRFQ1hMS0Yzd3oxbEZFWHY3ODJSRGhpbS9iVVZsWStZYzZmQmF1Ym5T
bwotPiBzc2gtZWQyNTUxOSBTcENqQlEgd0g2SmlwQ0RCSnpnaWNOTmx0SmRESUpz
Q1ZPTis5NHVicFAwRVZlR3F5WQo1eC9xQTNEelJKbUtFMWxSOThQUnpteVY0QmNl
TzhKVi9NZ1N0eVFQVVFvCi0+IHNzaC1lZDI1NTE5IEJZS0crdyAzYUVNakZzeldL
MzhoQzY0T09CWnBNYjZQYXVDTFFPS1hqRG9QcFJPQm00ClFJdGtnUkwzbHhQQnJD
U1pvZUJ6Mjl4cDNyNm9uczdSZG5CKy8vb3czc2MKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIHZlT0k3YXhXT012SVBMUEtRYXpaMmh3c3kxbUluNkNGeDBRRkdRcmRnQzgK
UEhWNGZPSlhXcHB1MnArcUp0Z3Y0amtKV284YU1aZWNUZE1zaDBkVm9wSQotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgN0YvQlFNUFBheUJURzhoQkg5bEZCUGM3VUVFSDk0
bDUyMW1RdjRzQklnTQpXTktUOTdvWE5FWEwzNFBKSjZWbTZIcUpIL2dYQkJOVEUr
YlFudE5PYmlnCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSB5WGtlUURGZ2thMkdOMmdX
d2drUklkeW1xVlk1eDVSNGc5ZkJEZjVwWEhBCmRiazcrVzRGbktGNnl5c1ZudC90
b0swK0cwdUQ4S2V0RGV4enFZWFh3WVUKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIGFB
THloYVM5eE9zSnQ4ejd5T0pSK1UzTmY5T0F5ejFUcWUySHdsaG1BMk0KUGd1Smov
ZlFkdDhQT1FCNkNaQzU5RmpYSHlFMzNzRGJMeHNRVzZscCs5NAotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgSVh5aVFlOFZHb0YxclRUZjJjWnAvMEdGU25zTkNYcUc3djRh
VFdBZ1RCdwpDTFFYbUtlQ3ZrdXR1d1Q4L0p5ckhvNGlwYzgrRndraHdFMXRlRkIy
OXdNCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyBpNVNOTC9Id3JTMUEyNDM2OEcxcGNu
NVlJTWQzSVl0U2o5YUl0TjZYa2xNCjd1WDFPbXNuQmo1anM3eFRpU3NJc0NMeFJX
L2Rsc2xTbXBqSXdaTk50cUUKLT4gc3NoLWVkMjU1MTkgWmUxTXdRICtJbURKL2da
eEsycSt6TzBvWUIrS1R2L2VKbUJvZVA1ZmtjQXplaWIvd1kKWm5vbzVkQ0dMOW5r
T1QvOFpoSW5MY21EN3gzRzJDRjRTYVJhVkJjeGt2dwotPiAjTkx0LWdyZWFzZQpq
d0kKLS0tIFpoamdUTXpvNkQ3N3ZkUlMwQUY3am03UUVLNVNXRmZsUUhlOTZ2MExD
bWcKi208SBEsgIk4hDTvAT/5xB2pd/vfQVwS/tRT4lOAMwZV5wNb7412LVDek5Ym
jdwoGkItzbmBYyXgWQn55dTApcDqGTJYK4qy4BT6w9yMsKcm0weF4suO/W8o+38D
Q0A/N+m9NbTEjTUM2uppr2T0dkpSqyK3ordVvbjOq/B7eBQNCRVm1ShcbyLekfiU
iwfh98Vlw8uQiCbCPA14IjBN25SvT1kvchkAgGtzozGrNRLVW8kYKv9KgRlVEU1r
kkS0Rhm9uRe6Kppo4K5+bHCKo8g8q7dcbya9a6Edlx36zdJwGWZ0EXkQtijCBcz1
Ipgfktovy/yfhiBv9eYPjxJe+njyZUpUJNpydScnHJejGg0OJMkA0tRULNbxs1Uy
x5bCPl7SvZZlgsIktMwhekxJ9kIUsYgwtHbSEP9xIFFyRxSeaJSVFBx4jKFeFJlf
4pzuFOHp4RVyylYuhkKvWtuJ/PXYXm5wUptDc72vGeA7NDo5p/6u7KO6CfhVTpQ9
cRKIdLxFFhqfV6m+BxoJY/TCyA/MONXxabETpQ3skPu9sCZXR4rpEKY=
-----END AGE ENCRYPTED FILE-----

View file

@ -1,41 +0,0 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDd6MzN5USBWaXVx
enVoekp2ZG9nd0ZQZ2UySnViS1hPRmpINFRYbndxajVRRFBEU25zCnJOU3JXa2o0
anNkVStiY1lEYVppSHNFdjRPLzNobTVCZlVzTjY0V0dWQzAKLT4gc3NoLWVkMjU1
MTkgSmh2TCtRIEF1KzhtYlh1Y3k1bFZYQSt3OE1PYzAzQ1lITEQ3Y0Vlc1ZIMnZ1
NHZiREUKSW9tZ1FxdXAzMHkrbHgva3ZROTFjTzFvb2JVeUllZ2IrUkJKWUo5dmpl
ZwotPiBzc2gtZWQyNTUxOSBTcENqQlEgeDdrRDUyTTBySUhMZ0pzdnBHbmJQWXh1
SkdrTjBRTG5PaVh6L0cxZ1drdwpVZUtDN29wQ0tWNjFMOWlSSE9KUVNQRzF6ckto
SS9EbzJ0ODFsNTJlcW5FCi0+IHNzaC1lZDI1NTE5IEJZS0crdyBPMk03MGQ3UWdy
M0VaTnE2Q0pVdFM2TytsS1g0WGhkckVzdEE3L2xjWXlRCmJCVncwZjFUUGJzaHR5
QmtPU0F5K0duQkRhRkMzb2FBdGErRWQvb1poS3MKLT4gc3NoLWVkMjU1MTkgWHpm
bWFRIHNqa1dkYTdKbjBHTG1OYTlONlNTcXpCSGxQdWllZE9pOXVDWjJFSkY2VjAK
VjRnZ1JyOFI3cnEydG9uM1hhbVVKeXFkWU5DQ1lPdWU1ZHVMTUpCNXRpbwotPiBz
c2gtZWQyNTUxOSBSNSt4ZncgWFBuWFBjSGFhdEVGSlFsalh4aXRqZDROdWpZK0Yr
bCtwdWpxRm1SS0NGMAo1bVc1Nkc3T1AvNFV6MlQvK3dLZzdSRkZyVTM1b2VnQlkz
elRwc0JqOVJvCi0+IHNzaC1lZDI1NTE5IFJvWDVQUSAzSDBXb29lT2dRR1F2d25L
VjhQVjY4L2ZqT2N2ZVF1UVBSQTlqUVJlU2p3CklqUnVyM2V2U1IwWURVUDZGbGZY
aXZWYitMTmtlRUprZnBreWI0UTZjY1kKLT4gc3NoLWVkMjU1MTkgRjRiYjhnIHpC
TVZzZHV0UFJlODc0RHY4OHJJNTd4VEdnK29vUkRwMWV1Qktza0k5aG8KbXJtTnVX
MEN3MjN0d1pSOTlpazN2Y2R3R2JrVi91eTFIdFRwNGFTZmJOcwotPiBzc2gtZWQy
NTUxOSB3ZHJaSkEgdkpiUlFWcVJKNlBYanMzVUZ0K2pKc2hiSGwwTi9lSkJPUW1r
M0NWOGxDcwpZQlVWNkRIeFNvV3ZHUlFBSTN2RDZaUGhobUdQQzNlNitpZ1h0VmR3
T0tRCi0+IHNzaC1lZDI1NTE5IDVhZHFNZyB3YVdDOTRoemdjVHFLMUNEV0RXcVF3
am9sNkY2eG9vRGZ1Qkd5aTUyVmlJCmw0ZHpqMzBWRnU1RUkraExTVDhEdnQxQU9t
STl6ckJsUFhWMmI4enVxYWcKLT4gc3NoLWVkMjU1MTkgWmUxTXdRIG5SNEhGb3FQ
QkYxcnJBam9GazhXNE8wZW1OZlZVMnhUZnRPT0t2UkVHaG8KQmRlUkVkRk1QYlJp
Sko2OWNSb3ZLbXVGOU85dGt5ZjF4cWsrK3ZZYjJ4cwotPiBaPykzYTw6YC1ncmVh
c2UKRkhKVER5M1FWdzNScEd0STRDdit0Lzl6Vmh0RE9kQjNPWFFEWkhla2JaZlZx
QzVRMVBiSVIxbDdGaWlrZC8rcgo0Z2lRbGJwKytCRWRvRUhMSGFoclg1UjFwYTUw
VUN4UlNHaEtxZTJmQTN5MVNKcG1naDFRTncKLS0tIGNaRG5CQjNWMEozNDVQNFda
M1hoK3MyUWk4b20zN2NCa2w0NkRTM3hMdVEKVkLTC4doxAz7FnAkZfezL3XxVl48
12l/ReMfiBHh1Fv5U2Z+/QjewTiBm+liq2zdvpAZZpiSLCPXEIAZDI8g1mC5eEgp
7jVhi78v8qPQexx3DV4t5CqWaP2tpJWXNmxQlTp0zykgxSZuMtNF4B3UefCTQK7c
RV3awDpKDj5ApyC54BhkL+OmSxlvaCwbeGL9tgNKhFV0WEwFjWHrMTI++Nu0K5mG
X8Hj0aqDKO8k5Bku+hK/LHNDT+/aCAfRfKMfwyo6ABBCej7YfTZKn/gyp+dDr6o2
B2MBB4Dkuk7ioVgH5Iw4yxm97RHk4Ts+8Ntvhc7hOwDAnOl2bkDWBxPsqkXzHuFc
nTBTSh5Fl+/o2O+it2A5I05f9TN3ZucKtI5dkG/HSy4sDMJZ6hsFA5dXvJ1RQtfZ
qjoqjv70+zJ3fCQ939IxMBDEZhkD/WlxMnkNB3GNKZsOGd/YxyGcqVjmZ/SePMjv
qpYhdPzfoqUp5IpsaAwHexUKa5S8UaMEEfXhDbq8UlmnA+b8E6UcRlbpq3b9j8B6
1rcXbEyHOAw5+HJDZv4=
-----END AGE ENCRYPTED FILE-----

View file

@ -1,73 +0,0 @@
## To onboard a new machine, you must use a machine that is already onboarded, or the backup authority key saved in a secure location
## Once the new machine is setup at least once, then we can generate/fetch ssh keys from it and add to this list. Then rekey the secrets and commit the changes and pull down from the nix repo
# System key: `cat /etc/ssh/ssh_host_ed25519_key.pub`
#
# from authority
# `nix run github:yaxitech/ragenix -- -i ~/.ssh/ragenix_authority --rules ~/.config/nixos-config/secrets/secrets.nix` <-r(eykey)|-e(edit) <File>>
let
publicKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBdG4tG18VeuEr/g4GM7HWUzHuUVcR9k6oS3TPBs4JRF ragenix authority key"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFzAQ2Dzl8EvQtYLjEZS5K0bQeNop8QRkwrfxMkBagW2 root@gpdPocket3"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIr/aS0qyn5hCLR6wH1P2GhH3hGOqniewMkIseGZ23HB josh@gpdPocket3"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG4PwrrOuZJWRjlc2dKBUKKE4ybqifJeVOn7x9J5IxIS josh@joe"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP+GYfPPKxR/18RdD736G7IQhImX/CYU3A+Gifud3CHg root@joe"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB9GW9W3DT9AqTonG5rDta3ziZdYOEEdukh2ErJfHxoP root@h002"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC60tzOVF0mcyfnYK2V/omzikuyE8Ol0K+yAjGxBV7q4 luser@h002"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFGp6oInUcGVnDl5axV1EHflMfZUiHxtqNa4eAuye/av root@lio"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKxNhtJNx/y4W54kAGmm2pF80l437z1RLWl/GTVKy0Pd josh@lio"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK7bNX7R9ApoX/cHdXIhQdpA2sHrC9ii6VAulboAIJM2 root@oren"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICauUtSa71+oQAiLxp3GMMbmNXcbr9Mc7eK8b/lqZbbS josh@oren"
];
in
{
## To make a new secret:
# - FIRST add file below that you want to create
# - cd to the secrets directory here
# - `ragenix --editor=vi -v -e FILE.age` add file below and in the ragenix.nix file
#
# TODO come up with a rotate method/encrypt the device keys better. This isn't very secure feeling to me the way I am doing this now. If anyone gains access to any one of my devices, then my secrets are no longer secret. This is not a good model.
# Git keys
"nix2github.age" = {
inherit publicKeys;
};
"nix2bitbucket.age" = {
inherit publicKeys;
};
"nix2gitjosh.age" = {
inherit publicKeys;
};
# Server keys
"nix2h001.age" = {
inherit publicKeys;
};
"nix2h002.age" = {
inherit publicKeys;
};
"nix2joe.age" = {
inherit publicKeys;
};
"nix2gpdPocket3.age" = {
inherit publicKeys;
};
"nix2t.age" = {
inherit publicKeys;
};
"nix2l001.age" = {
inherit publicKeys;
};
"nix2l002.age" = {
inherit publicKeys;
};
"nix2lio.age" = {
inherit publicKeys;
};
"nix2oren.age" = {
inherit publicKeys;
};
"github_read_token.age" = {
inherit publicKeys;
};
}

View file

@ -1,81 +0,0 @@
{
config,
lib,
pkgs,
...
}:
with lib;
{
config = {
networking = {
hostName = config.mods.common.systemName;
extraHosts = ''
127.0.0.1 local.belljm.com
127.0.0.1 n0.local.belljm.com
127.0.0.1 n1.local.belljm.com
127.0.0.1 n2.local.belljm.com
127.0.0.1 n3.local.belljm.com
127.0.0.1 n4.local.belljm.com
'';
# Use nftables not iptables
nftables.enable = true;
firewall.enable = true;
};
environment.systemPackages = with pkgs; [
# Basics
vim
nano
wget
curl
fastfetch
bat
htop
unzip
git
fzf
ripgrep
lsof
killall
hdparm
speedtest-cli
ffmpeg-full
appimage-run
];
environment.shellAliases = {
n = "nvim";
nn = "nvim --headless '+SessionDelete' +qa > /dev/null 2>&1 && nvim";
bat = "bat --theme Coldark-Dark";
cat = "bat --pager=never -p";
# TODO this may not be needed now that I am using `nh` clean mode (see /hosts/_common/configuration.nix#programs.nh)
nix-boot-clean = "find '/boot/loader/entries' -type f ! -name 'windows.conf' | head -n -4 | xargs -I {} rm {}; nix store gc; nixos-rebuild boot; echo; df";
# general unix
date_compact = "date +'%Y%m%d'";
date_short = "date +'%Y-%m-%d'";
ls = "ls --color -Gah";
ll = "ls --color -Galh";
lss = "du --max-depth=0 -h * 2>/dev/null | sort -hr";
psg = "ps aux | head -n 1 && ps aux | grep -v 'grep' | grep";
cl = "clear";
# git
stash = "git stash";
pop = "git stash pop";
branch = "git checkout -b";
status = "git status";
diff = "git diff";
branches = "git branch -a";
gcam = "git commit -a -m";
gcm = "git commit -m";
stashes = "git stash list";
# ripgrep
rg = "rg --no-ignore";
rgf = "rg --files 2>/dev/null | rg";
};
environment.shellInit = builtins.readFile ./common.sh;
};
}

View file

@ -1,171 +0,0 @@
# Check if ~/.config/environment exists and source all files within it
if [ -d "$HOME/.config/environment" ]; then
for file in "$HOME/.config/environment/"*; do
if [ -r "$file" ]; then
if ! . "$file"; then
echo "Failed to source $file"
fi
fi
done
fi
# Basics
htop_psg () {
htop -p $(psg $1 | awk '{r=r s $2;s=","} END{print r}')
}
htop_pid () {
htop -p $(ps -ef | awk -v proc=$1 '$3 == proc { cnt++;if (cnt == 1) { printf "%s",$2 } else { printf ",%s",$2 } }')
}
psg_kill() {
ps aux | grep -v "grep" | grep "${1}" | awk '{print $2}' | while read -r pid; do
if [ -n "${pid}" ]; then
echo "killing ${pid}"
kill -9 "${pid}" &> /dev/null
fi
done
}
psg_terminate() {
ps aux | grep -v "grep" | grep "${1}" | awk '{print $2}' | while read -r pid; do
if [ -n "${pid}" ]; then
echo "Terminating ${pid}"
kill -15 "${pid}" &> /dev/null
fi
done
}
psg_skill() {
ps aux | grep -v "grep" | grep "${1}" | awk '{print $2}' | while read -r pid; do
if [ -n "${pid}" ]; then
echo "Killing ${pid}"
sudo kill -9 "${pid}" &> /dev/null
fi
done
}
mail_clear() {
: > /var/mail/$USER
}
speedtest_fs () {
dir=$(pwd)
drive=$(df -h ${dir} | awk 'NR==2 {print $1}')
echo Testing read speeds on drive ${drive}
sudo hdparm -Tt ${drive}
test_file=$(date +%u%m%d)
test_file="${dir}/speedtest_fs_${test_file}"
echo
echo Testing write speeds into test file: ${test_file}
dd if=/dev/zero of=${test_file} bs=8k count=10k; rm -f ${test_file}
}
speedtest_internet () {
speedtest-cli
}
# git
getdefault () {
git remote show origin | grep "HEAD branch" | sed 's/.*: //'
}
master () {
git stash
git checkout $(getdefault)
pull
}
mp () {
master
prunel
}
pullmaster () {
git pull origin $(getdefault)
}
push () {
B=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
git pull origin $B
git push origin $B --no-verify
}
pull () {
git fetch
B=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
git pull origin $B
}
forcepush () {
B=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
git push origin $B --force
}
remote_branches () {
git branch -a | grep 'remotes' | grep -v -E '.*(HEAD|${DEFAULT})' | cut -d'/' -f 3-
}
local_branches () {
git branch -a | grep -v 'remotes' | grep -v -E '.*(HEAD|${DEFAULT})' | grep -v '^*' | cut -d' ' -f 3-
}
prunel () {
git fetch
git remote prune origin
for local in $(local_branches); do
in=false
for remote in $(remote_branches); do
if [[ ${local} = ${remote} ]]; then
in=true
fi
done;
if [[ $in = 'false' ]]; then
git branch -D ${local}
else
echo 'Skipping branch '${local}
fi
done;
}
checkout () {
git fetch
git checkout $1
pull
}
from_master () {
git checkout $(getdefault) $@
}
# nix
alias nixpkgs=nixpkg
nixpkg () {
if [ $# -eq 0 ]; then
echo "Error: No arguments provided. Please specify at least one package."
return 1
fi
cmd="nix shell"
for pkg in "$@"; do
cmd="$cmd \"nixpkgs#$pkg\""
done
eval $cmd
}
# Marks some files as in "git" but they won't actually get pushed up to the git repo
# Usefull for `gintent .envrc flake.lock flake.nix` to add nix items required by flakes in a git repo that won't want flakes added
gintent() {
for file in "$@"; do
if [ -f "$file" ]; then
git add --intent-to-add "$file"
git update-index --assume-unchanged "$file"
echo "Intent added for $file"
else
echo "File not found: $file"
fi
done
}
alias gintentnix="gintent .envrc flake.lock flake.nix"

View file

@ -1,56 +0,0 @@
{
config,
lib,
...
}:
with lib;
{
config = {
# Use fail2ban
services.fail2ban = {
enable = true;
};
# Open ports in the firewall if enabled.
networking.firewall.allowedTCPPorts = mkIf config.mods.common.sshPortOpen [
22 # sshd
];
# Enable the OpenSSH daemon.
services.openssh = {
enable = true;
settings = {
LogLevel = "VERBOSE";
PermitRootLogin = "yes";
};
};
# Ensure SSH key pair generation for non-root users
systemd.services = mapAttrs' (name: _: {
name = "generate_ssh_key_${name}";
value = {
description = "Generate SSH key pair for ${name}";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
User = name;
Type = "oneshot";
};
script = ''
#!/run/current-system/sw/bin/bash
if [ ! -f /home/${name}/.ssh/id_ed25519 ]; then
if [ -v DRY_RUN ]; then
echo "DRY_RUN is set. Would generate SSH key for ${name}.";
else
echo "Generating SSH key for ${name}.";
mkdir -p /home/${name}/.ssh;
chmod 700 /home/${name}/.ssh;
/run/current-system/sw/bin/ssh-keygen -t ed25519 -f /home/${name}/.ssh/id_ed25519 -N "";
fi
else
echo "SSH key already exists for ${name}.";
fi
'';
};
}) config.mods.common.users;
};
}

View file

@ -1,16 +0,0 @@
{
lib,
pkgs,
...
}:
with lib;
{
config = {
services.xserver.xkb.options = "caps:escape";
console = {
earlySetup = true;
packages = with pkgs; [ terminus_font ];
useXkbConfig = true; # use xkb.options in tty. (caps -> escape)
};
};
}

View file

@ -1,17 +0,0 @@
{
lib,
config,
...
}:
with lib;
{
config = {
users.users = mapAttrs (
name: config:
{
inherit name;
}
// config
) config.mods.common.users;
};
}

View file

@ -1,15 +0,0 @@
{
config,
lib,
...
}:
with lib;
let
cfg = config.mods.common;
in
{
config = mkIf cfg.zsh {
programs.zsh.enable = true;
environment.pathsToLink = [ "/share/zsh" ];
};
}

View file

@ -1,9 +0,0 @@
(
output: "all",
source: Color(Single((0.0, 0.0, 0.0))),
filter_by_theme: false,
rotation_frequency: 900,
filter_method: Lanczos,
scaling_mode: Zoom,
sampling_method: Alphanumeric,
)

View file

@ -1,9 +0,0 @@
(
output: "eDP-1",
source: Color(Single((0.0, 0.0, 0.0))),
filter_by_theme: false,
rotation_frequency: 900,
filter_method: Lanczos,
scaling_mode: Zoom,
sampling_method: Alphanumeric,
)

View file

@ -1,9 +0,0 @@
(
state: Enabled,
scroll_config: Some((
method: None,
natural_scroll: Some(true),
scroll_button: None,
scroll_factor: None,
)),
)

View file

@ -1,9 +0,0 @@
(
rules: "",
model: "pc104",
layout: "us",
variant: "",
options: Some("caps:escape"),
repeat_delay: 600,
repeat_rate: 25,
)

View file

@ -1,9 +0,0 @@
(
view: List,
folders_first: true,
show_hidden: false,
icon_sizes: (
list: 100,
grid: 100,
),
)

View file

@ -1,7 +0,0 @@
Some([
"com.system76.CosmicPanelLauncherButton",
"com.system76.CosmicPanelWorkspacesButton",
"com.system76.CosmicPanelAppButton",
"com.system76.CosmicAppList",
"com.system76.CosmicAppletMinimize",
])

View file

@ -1,5 +0,0 @@
Some((
wait_time: 1000,
transition_time: 200,
handle_size: 4,
))

View file

@ -1,3 +0,0 @@
Some([
"com.system76.CosmicAppletTime",
])

View file

@ -1,11 +0,0 @@
Some(([], [
"com.system76.CosmicAppletInputSources",
"com.system76.CosmicAppletStatusArea",
"com.system76.CosmicAppletTiling",
"com.system76.CosmicAppletAudio",
"com.system76.CosmicAppletNetwork",
"com.system76.CosmicAppletBattery",
"com.system76.CosmicAppletNotifications",
"com.system76.CosmicAppletBluetooth",
"com.system76.CosmicAppletPower",
]))

View file

@ -1,3 +0,0 @@
[
"Panel",
]

View file

@ -1,71 +0,0 @@
// https://github.com/pop-os/cosmic-settings/blob/master/cosmic-settings/src/pages/input/keyboard/shortcuts/mod.rs#L460-L550
// For action types
{
(
modifiers: [
Super,
],
key: "l",
): Focus(Right),
(
modifiers: [
Super,
],
key: "j",
): NextWorkspace,
(
modifiers: [
Super,
],
key: "h",
): Focus(Left),
(
modifiers: [
Super,
],
key: "k",
): PreviousWorkspace,
(
modifiers: [
Super,
],
key: "Return",
): Spawn("alacritty"),
(
modifiers: [
Super,
],
key: "space",
description: Some("launcher"),
): System(Launcher),
(
modifiers: [
Super,
],
): System(WorkspaceOverview),
(
modifiers: [
Super,
],
key: "Right",
): Disable,
(
modifiers: [
Super,
],
key: "Down",
): Disable,
(
modifiers: [
Super,
],
key: "Left",
): Disable,
(
modifiers: [
Super,
],
key: "Up",
): Disable,
}

View file

@ -1,3 +0,0 @@
[
Single((0.0, 0.0, 0.0)),
]

View file

@ -1,8 +0,0 @@
(
radius_0: (0.0, 0.0, 0.0, 0.0),
radius_xs: (2.0, 2.0, 2.0, 2.0),
radius_s: (2.0, 2.0, 2.0, 2.0),
radius_m: (2.0, 2.0, 2.0, 2.0),
radius_l: (2.0, 2.0, 2.0, 2.0),
radius_xl: (2.0, 2.0, 2.0, 2.0),
)

View file

@ -1,12 +0,0 @@
(
space_none: 0,
space_xxxs: 4,
space_xxs: 4,
space_xs: 8,
space_s: 8,
space_m: 16,
space_l: 24,
space_xl: 32,
space_xxl: 48,
space_xxxl: 64,
)

View file

@ -1,74 +0,0 @@
(
base: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
hover: (
red: 0.5576471,
green: 0.8305882,
blue: 0.8305882,
alpha: 1.0,
),
pressed: (
red: 0.38431373,
green: 0.55490196,
blue: 0.55490196,
alpha: 1.0,
),
selected: (
red: 0.5576471,
green: 0.8305882,
blue: 0.8305882,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
on_disabled: (
red: 0.2901961,
green: 0.46078432,
blue: 0.46078432,
alpha: 1.0,
),
border: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
disabled_border: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 0.5,
),
)

View file

@ -1,74 +0,0 @@
(
base: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
hover: (
red: 0.5576471,
green: 0.8305882,
blue: 0.8305882,
alpha: 1.0,
),
pressed: (
red: 0.38431373,
green: 0.55490196,
blue: 0.55490196,
alpha: 1.0,
),
selected: (
red: 0.5576471,
green: 0.8305882,
blue: 0.8305882,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.105882354,
green: 0.105882354,
blue: 0.105882354,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
on_disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.5,
),
border: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
disabled_border: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 0.5,
),
)

View file

@ -1,100 +0,0 @@
(
base: (
red: 0.105882354,
green: 0.105882354,
blue: 0.105882354,
alpha: 1.0,
),
component: (
base: (
red: 0.18219745,
green: 0.18219745,
blue: 0.18219745,
alpha: 1.0,
),
hover: (
red: 0.2639777,
green: 0.2639777,
blue: 0.2639777,
alpha: 1.0,
),
pressed: (
red: 0.34575796,
green: 0.34575796,
blue: 0.34575796,
alpha: 1.0,
),
selected: (
red: 0.2639777,
green: 0.2639777,
blue: 0.2639777,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.7532969,
green: 0.7532969,
blue: 0.75329685,
alpha: 0.2,
),
on: (
red: 0.7532969,
green: 0.7532969,
blue: 0.75329685,
alpha: 1.0,
),
disabled: (
red: 0.18219745,
green: 0.18219745,
blue: 0.18219745,
alpha: 1.0,
),
on_disabled: (
red: 0.46774718,
green: 0.46774718,
blue: 0.46774715,
alpha: 1.0,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
),
divider: (
red: 0.2662247,
green: 0.2662247,
blue: 0.2662247,
alpha: 1.0,
),
on: (
red: 0.90759414,
green: 0.9075942,
blue: 0.90759414,
alpha: 1.0,
),
small_widget: (
red: 0.15292811,
green: 0.15292811,
blue: 0.15292808,
alpha: 0.25,
),
)

View file

@ -1,74 +0,0 @@
(
base: (
red: 0.67058825,
green: 0.67058825,
blue: 0.67058825,
alpha: 0.25,
),
hover: (
red: 0.42862746,
green: 0.42862746,
blue: 0.42862746,
alpha: 0.4,
),
pressed: (
red: 0.2282353,
green: 0.2282353,
blue: 0.2282353,
alpha: 0.625,
),
selected: (
red: 0.42862746,
green: 0.42862746,
blue: 0.42862746,
alpha: 0.4,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.7532969,
green: 0.7532969,
blue: 0.75329685,
alpha: 0.2,
),
on: (
red: 0.7532969,
green: 0.7532969,
blue: 0.75329685,
alpha: 1.0,
),
disabled: (
red: 0.51056147,
green: 0.51056147,
blue: 0.51056147,
alpha: 0.34375,
),
on_disabled: (
red: 0.5107661,
green: 0.5107661,
blue: 0.5107661,
alpha: 0.625,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
)

View file

@ -1,8 +0,0 @@
(
radius_0: (0.0, 0.0, 0.0, 0.0),
radius_xs: (2.0, 2.0, 2.0, 2.0),
radius_s: (2.0, 2.0, 2.0, 2.0),
radius_m: (2.0, 2.0, 2.0, 2.0),
radius_l: (2.0, 2.0, 2.0, 2.0),
radius_xl: (2.0, 2.0, 2.0, 2.0),
)

View file

@ -1,74 +0,0 @@
(
base: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
hover: (
red: 0.8933333,
green: 0.66117644,
blue: 0.66117644,
alpha: 1.0,
),
pressed: (
red: 0.59411764,
green: 0.4490196,
blue: 0.4490196,
alpha: 1.0,
),
selected: (
red: 0.8933333,
green: 0.66117644,
blue: 0.66117644,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
on_disabled: (
red: 0.5,
green: 0.35490197,
blue: 0.35490197,
alpha: 1.0,
),
border: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
disabled_border: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 0.5,
),
)

View file

@ -1,74 +0,0 @@
(
base: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
hover: (
red: 0.8933333,
green: 0.66117644,
blue: 0.66117644,
alpha: 1.0,
),
pressed: (
red: 0.59411764,
green: 0.4490196,
blue: 0.4490196,
alpha: 1.0,
),
selected: (
red: 0.8933333,
green: 0.66117644,
blue: 0.66117644,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.105882354,
green: 0.105882354,
blue: 0.105882354,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 1.0,
),
disabled: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
on_disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.5,
),
border: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 1.0,
),
disabled_border: (
red: 1.0,
green: 0.70980394,
blue: 0.70980394,
alpha: 0.5,
),
)

View file

@ -1,74 +0,0 @@
(
base: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
hover: (
red: 0.46666667,
green: 0.46666667,
blue: 0.46666667,
alpha: 0.2,
),
pressed: (
red: 0.1882353,
green: 0.1882353,
blue: 0.1882353,
alpha: 0.5,
),
selected: (
red: 0.46666667,
green: 0.46666667,
blue: 0.46666667,
alpha: 0.2,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.2,
),
on: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
on_disabled: (
red: 0.3882353,
green: 0.3882353,
blue: 0.3882353,
alpha: 0.5,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
)

View file

@ -1,74 +0,0 @@
(
base: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
hover: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
pressed: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
selected: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 0.2,
),
on: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
on_disabled: (
red: 0.2901961,
green: 0.46078432,
blue: 0.46078432,
alpha: 0.5,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
)

View file

@ -1,100 +0,0 @@
(
base: (
red: 0.15292811,
green: 0.15292811,
blue: 0.15292808,
alpha: 1.0,
),
component: (
base: (
red: 0.21220893,
green: 0.2122089,
blue: 0.2122089,
alpha: 1.0,
),
hover: (
red: 0.29098803,
green: 0.290988,
blue: 0.290988,
alpha: 1.0,
),
pressed: (
red: 0.36976713,
green: 0.36976713,
blue: 0.36976713,
alpha: 1.0,
),
selected: (
red: 0.29098803,
green: 0.290988,
blue: 0.290988,
alpha: 1.0,
),
selected_text: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
focus: (
red: 0.5803922,
green: 0.92156863,
blue: 0.92156863,
alpha: 1.0,
),
divider: (
red: 0.7913618,
green: 0.7913618,
blue: 0.7913618,
alpha: 0.2,
),
on: (
red: 0.7913618,
green: 0.7913618,
blue: 0.7913618,
alpha: 1.0,
),
disabled: (
red: 0.21220893,
green: 0.2122089,
blue: 0.2122089,
alpha: 1.0,
),
on_disabled: (
red: 0.5017854,
green: 0.50178534,
blue: 0.50178534,
alpha: 1.0,
),
border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 1.0,
),
disabled_border: (
red: 0.7764706,
green: 0.7764706,
blue: 0.7764706,
alpha: 0.5,
),
),
divider: (
red: 0.31702772,
green: 0.31702772,
blue: 0.3170277,
alpha: 1.0,
),
on: (
red: 0.97342616,
green: 0.97342616,
blue: 0.97342604,
alpha: 1.0,
),
small_widget: (
red: 0.20212594,
green: 0.20212597,
blue: 0.20212597,
alpha: 0.25,
),
)

Some files were not shown because too many files have changed in this diff Show more