mirror of
https://github.com/nmasur/dotfiles
synced 2025-07-06 21:20:13 +00:00
Compare commits
73 Commits
language-c
...
fecd66465d
Author | SHA1 | Date | |
---|---|---|---|
fecd66465d | |||
9b0d363909 | |||
400d45df39 | |||
634805d36d | |||
db051a737e | |||
cbf0d2680c | |||
316439dc9a | |||
edaf95cc1c | |||
5f867fa2dd | |||
bdaf63da20 | |||
c12d54314e | |||
f50bbeba94 | |||
848c8aac5f | |||
488b5d61fd | |||
6b5892eb1d | |||
c3be92dcaf | |||
64bee30b17 | |||
568fdc7491 | |||
8585574100 | |||
6b37ba13c9 | |||
efac745bdd | |||
7e0a0bbbd2 | |||
16e228b7b0 | |||
277c400248 | |||
2b03dd5198 | |||
bdd922d318 | |||
6b2dfb4aa9 | |||
67ab65fa16 | |||
b06ebc7185 | |||
a30b189207 | |||
eb3c1f7a4c | |||
c697cd4e38 | |||
661ef8dcbf | |||
ec09db42e6 | |||
3403924105 | |||
3d234072f6 | |||
b39cda6b84 | |||
47be4291a3 | |||
67f7506636 | |||
bbdfeb645e | |||
7f60d88f30 | |||
8babcf342b | |||
a5ec39cd2a | |||
63434c8309 | |||
1a5fe54d06 | |||
b2cfdc1fdf | |||
3a4568bc69 | |||
203bb6a13a | |||
4bfd65acb3 | |||
d636de890c | |||
1e9401eef2 | |||
ea67467cbf | |||
fc6bdeb1ad | |||
2758637953 | |||
f747c80c2a | |||
013f67c0a8 | |||
fb145e5772 | |||
408b329684 | |||
ad70457600 | |||
f54f7b6e2e | |||
2700efa6e4 | |||
e44adf4568 | |||
471b258ff7 | |||
ac6329baf6 | |||
a61ac456a9 | |||
cf77adb366 | |||
2217568a59 | |||
05deb5b979 | |||
8621e2375d | |||
25975da0c1 | |||
a79719c21a | |||
5aea58df79 | |||
1833bfddfb |
134
.github/workflows/arrow.yml
vendored
Normal file
134
.github/workflows/arrow.yml
vendored
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
name: Arrow
|
||||||
|
|
||||||
|
env:
|
||||||
|
TERRAFORM_DIRECTORY: hosts/arrow
|
||||||
|
DEPLOY_IDENTITY_BASE64: ${{ secrets.DEPLOY_IDENTITY_BASE64 }}
|
||||||
|
ARROW_IDENTITY_BASE64: ${{ secrets.ARROW_IDENTITY_BASE64 }}
|
||||||
|
CLOUDFLARE_R2_ENDPOINT: "${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com"
|
||||||
|
AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_R2_ACCESS_KEY }}
|
||||||
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_R2_SECRET_KEY }}
|
||||||
|
AWS_DEFAULT_REGION: auto
|
||||||
|
AWS_ENDPOINT_URL_S3: "https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com"
|
||||||
|
TF_VAR_vultr_api_key: ${{ secrets.VULTR_API_KEY }}
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
rebuild:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
action:
|
||||||
|
type: choice
|
||||||
|
required: true
|
||||||
|
default: create
|
||||||
|
options:
|
||||||
|
- create
|
||||||
|
- destroy
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-deploy:
|
||||||
|
name: Build and Deploy
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Enable access to KVM, required to build an image
|
||||||
|
- name: Enable KVM group perms
|
||||||
|
if: inputs.rebuild && inputs.action != 'destroy'
|
||||||
|
run: |
|
||||||
|
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
|
||||||
|
sudo udevadm control --reload-rules
|
||||||
|
sudo udevadm trigger --name-match=kvm
|
||||||
|
|
||||||
|
# Install Nix
|
||||||
|
- name: Install Nix
|
||||||
|
if: inputs.rebuild && inputs.action != 'destroy'
|
||||||
|
uses: cachix/install-nix-action@v17
|
||||||
|
|
||||||
|
# Build the image
|
||||||
|
- name: Build Image
|
||||||
|
if: inputs.rebuild && inputs.action != 'destroy'
|
||||||
|
run: nix build .#image.arrow
|
||||||
|
|
||||||
|
- name: Upload Image to S3
|
||||||
|
if: inputs.rebuild && inputs.action != 'destroy'
|
||||||
|
run: |
|
||||||
|
aws s3 cp \
|
||||||
|
result/iso/nixos.iso \
|
||||||
|
s3://noahmasur-arrow-images/arrow.iso \
|
||||||
|
--endpoint-url "https://${{ env.CLOUDFLARE_R2_ENDPOINT }}"
|
||||||
|
|
||||||
|
# # Copy the image to S3
|
||||||
|
# - name: Upload Image to Cache
|
||||||
|
# env:
|
||||||
|
# NIX_CACHE_PRIVATE_KEY: ${{ secrets.NIX_CACHE_PRIVATE_KEY }}
|
||||||
|
# run: |
|
||||||
|
# echo "$NIX_CACHE_PRIVATE_KEY" > cache.key
|
||||||
|
# nix store sign --key-file cache.key $(readlink result)
|
||||||
|
# nix copy --to s3://t2-aws-nixos-test $(readlink result)
|
||||||
|
# rm cache.key
|
||||||
|
|
||||||
|
# Installs the Terraform binary and some other accessory functions.
|
||||||
|
- name: Setup Terraform
|
||||||
|
uses: hashicorp/setup-terraform@v2
|
||||||
|
|
||||||
|
# Checks whether Terraform is formatted properly. If this fails, you
|
||||||
|
# should install the pre-commit hook.
|
||||||
|
- name: Check Formatting
|
||||||
|
working-directory: ${{ env.TERRAFORM_DIRECTORY }}
|
||||||
|
run: |
|
||||||
|
terraform fmt -no-color -check -diff -recursive
|
||||||
|
|
||||||
|
# Connects to remote state backend and download providers.
|
||||||
|
- name: Terraform Init
|
||||||
|
working-directory: ${{ env.TERRAFORM_DIRECTORY }}
|
||||||
|
run: terraform init
|
||||||
|
|
||||||
|
# Deploys infrastructure or changes to infrastructure.
|
||||||
|
- name: Terraform Apply
|
||||||
|
if: inputs.action == 'create'
|
||||||
|
working-directory: ${{ env.TERRAFORM_DIRECTORY }}
|
||||||
|
run: |
|
||||||
|
terraform apply \
|
||||||
|
-auto-approve \
|
||||||
|
-input=false
|
||||||
|
|
||||||
|
# Removes infrastructure.
|
||||||
|
- name: Terraform Destroy
|
||||||
|
if: inputs.action == 'destroy'
|
||||||
|
working-directory: ${{ env.TERRAFORM_DIRECTORY }}
|
||||||
|
run: |
|
||||||
|
terraform destroy \
|
||||||
|
-auto-approve \
|
||||||
|
-input=false
|
||||||
|
|
||||||
|
- name: Get Host IP
|
||||||
|
if: inputs.action == 'create'
|
||||||
|
id: host
|
||||||
|
working-directory: ${{ env.TERRAFORM_DIRECTORY }}
|
||||||
|
run: terraform output -raw host_ip
|
||||||
|
|
||||||
|
- name: Wait on SSH
|
||||||
|
if: inputs.action == 'create'
|
||||||
|
run: |
|
||||||
|
for i in $(seq 1 15); do
|
||||||
|
if $(nc -z -w 3 ${{ steps.host.outputs.stdout }} 22); then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Write Identity Keys to Files
|
||||||
|
if: inputs.action == 'create'
|
||||||
|
run: |
|
||||||
|
echo "${{ env.DEPLOY_IDENTITY_BASE64 }}" | base64 -d > deploy_ed25519
|
||||||
|
chmod 0600 deploy_ed25519
|
||||||
|
echo "${{ env.ARROW_IDENTITY_BASE64 }}" | base64 -d > arrow_ed25519
|
||||||
|
chmod 0600 arrow_ed25519
|
||||||
|
|
||||||
|
- name: Copy Identity File to Host
|
||||||
|
if: inputs.action == 'create'
|
||||||
|
run: |
|
||||||
|
ssh -i deploy_ed25519 -o StrictHostKeyChecking=accept-new noah@${{ steps.host.outputs.stdout }} 'mkdir -pv .ssh'
|
||||||
|
scp -i deploy_ed25519 arrow_ed25519 noah@${{ steps.host.outputs.stdout }}:~/.ssh/id_ed25519
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
*.bak
|
*.bak
|
||||||
*.db
|
*.db
|
||||||
|
*.qcow2
|
||||||
**/.direnv/**
|
**/.direnv/**
|
||||||
result
|
result
|
||||||
private/**
|
private/**
|
||||||
|
@ -25,7 +25,7 @@ configuration may be difficult to translate to a non-Nix system.
|
|||||||
| Dotfiles | [Home-Manager](https://github.com/nix-community/home-manager) | [Link](./modules/common) |
|
| Dotfiles | [Home-Manager](https://github.com/nix-community/home-manager) | [Link](./modules/common) |
|
||||||
| Terminal | [Kitty](https://sw.kovidgoyal.net/kitty/) | [Link](./modules/common/applications/kitty.nix) |
|
| Terminal | [Kitty](https://sw.kovidgoyal.net/kitty/) | [Link](./modules/common/applications/kitty.nix) |
|
||||||
| Shell | [Fish](https://fishshell.com/) | [Link](./modules/common/shell/fish) |
|
| Shell | [Fish](https://fishshell.com/) | [Link](./modules/common/shell/fish) |
|
||||||
| Shell Prompt | [Starship](https://starship.rs/) | [Link](./modules/common/shell/starhip.nix) |
|
| Shell Prompt | [Starship](https://starship.rs/) | [Link](./modules/common/shell/starship.nix) |
|
||||||
| Colorscheme | [Gruvbox](https://github.com/morhetz/gruvbox) | [Link](./colorscheme/gruvbox/default.nix) |
|
| Colorscheme | [Gruvbox](https://github.com/morhetz/gruvbox) | [Link](./colorscheme/gruvbox/default.nix) |
|
||||||
| Wallpaper | [Road](https://gitlab.com/exorcist365/wallpapers/-/blob/master/gruvbox/road.jpg) | [Link](./hosts/tempest/default.nix) |
|
| Wallpaper | [Road](https://gitlab.com/exorcist365/wallpapers/-/blob/master/gruvbox/road.jpg) | [Link](./hosts/tempest/default.nix) |
|
||||||
| Text Editor | [Neovim](https://neovim.io/) | [Link](./modules/common/neovim/config) |
|
| Text Editor | [Neovim](https://neovim.io/) | [Link](./modules/common/neovim/config) |
|
||||||
|
@ -4,38 +4,34 @@
|
|||||||
type = "disk";
|
type = "disk";
|
||||||
device = disk;
|
device = disk;
|
||||||
content = {
|
content = {
|
||||||
type = "table";
|
type = "gpt";
|
||||||
format = "gpt";
|
partitions = {
|
||||||
partitions = [
|
|
||||||
# Boot partition
|
# Boot partition
|
||||||
{
|
ESP = rec {
|
||||||
name = "ESP";
|
size = "512MiB";
|
||||||
start = "0";
|
type = "EF00";
|
||||||
end = "512MiB";
|
label = "boot";
|
||||||
fs-type = "fat32";
|
device = "/dev/disk/by-label/${label}";
|
||||||
bootable = true;
|
|
||||||
content = {
|
content = {
|
||||||
type = "filesystem";
|
type = "filesystem";
|
||||||
format = "vfat";
|
format = "vfat";
|
||||||
mountpoint = "/boot";
|
mountpoint = "/boot";
|
||||||
extraArgs = [ "-n boot" ];
|
extraArgs = [ "-n ${label}" ];
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
# Root partition ext4
|
# Root partition ext4
|
||||||
{
|
root = rec {
|
||||||
name = "root";
|
size = "100%";
|
||||||
start = "512MiB";
|
label = "nixos";
|
||||||
end = "100%";
|
device = "/dev/disk/by-label/${label}";
|
||||||
part-type = "primary";
|
|
||||||
bootable = true;
|
|
||||||
content = {
|
content = {
|
||||||
type = "filesystem";
|
type = "filesystem";
|
||||||
format = "ext4";
|
format = "ext4";
|
||||||
mountpoint = "/";
|
mountpoint = "/";
|
||||||
extraArgs = [ "-L nixos" ];
|
extraArgs = [ "-L ${label}" ];
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
];
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -63,3 +63,20 @@ Use this mysqldump command:
|
|||||||
sudo -u nextcloud mysqldump -S /run/mysqld/mysqld.sock --default-character-set=utf8mb4 nextcloud > backup.sql
|
sudo -u nextcloud mysqldump -S /run/mysqld/mysqld.sock --default-character-set=utf8mb4 nextcloud > backup.sql
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Converting to Postgres
|
||||||
|
|
||||||
|
Same as MySQL, but run this command instead:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo -u nextcloud nextcloud-occ db:convert-type pgsql nextcloud /run/postgresql/ nextcloud
|
||||||
|
```
|
||||||
|
|
||||||
|
Then set the `dbtype` to `pgsql`.
|
||||||
|
|
||||||
|
## Backing Up Postgres Database
|
||||||
|
|
||||||
|
Use this pg_dump command:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo -u nextcloud pg_dump nextcloud > backup.sql
|
||||||
|
```
|
||||||
|
225
flake.lock
generated
225
flake.lock
generated
@ -1,22 +1,5 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"Comment-nvim-src": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681214440,
|
|
||||||
"narHash": "sha256-48hy+hiaDJLlgWqC7IeZI3dT+VwWkRo4atQbyPxu/ys=",
|
|
||||||
"owner": "numToStr",
|
|
||||||
"repo": "Comment.nvim",
|
|
||||||
"rev": "e51f2b142d88bb666dcaa77d93a07f4b419aca70",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numToStr",
|
|
||||||
"ref": "v0.8.0",
|
|
||||||
"repo": "Comment.nvim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"baleia-nvim-src": {
|
"baleia-nvim-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -33,6 +16,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"base16-nvim-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708139024,
|
||||||
|
"narHash": "sha256-l0BO2boIy6mwK8ISWS3D68f8egqHYwsGSAnzjbB5aOE=",
|
||||||
|
"owner": "RRethy",
|
||||||
|
"repo": "base16-nvim",
|
||||||
|
"rev": "b3e9ec6a82c05b562cd71f40fe8964438a9ba64a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "RRethy",
|
||||||
|
"repo": "base16-nvim",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"bufferline-nvim-src": {
|
"bufferline-nvim-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -53,11 +52,11 @@
|
|||||||
"bypass-paywalls-clean": {
|
"bypass-paywalls-clean": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706880406,
|
"lastModified": 1709556839,
|
||||||
"narHash": "sha256-8z2Gc3ITluXXbDij4Ltahpkxs7zdnMITvIAjotab/QU=",
|
"narHash": "sha256-LbsaYISpsjCI8DXPu2toBI3uMK+Xau1sWuzA2xsQ6Pg=",
|
||||||
"owner": "magnolia1234",
|
"owner": "magnolia1234",
|
||||||
"repo": "bpc-uploads",
|
"repo": "bpc-uploads",
|
||||||
"rev": "c91cfd510390ab5a138f412ad2890b2cb2a2eafd",
|
"rev": "0ca7c6a857e4e6c3e508228168e8de70e21cee3a",
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -82,6 +81,23 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"comment-nvim-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681214440,
|
||||||
|
"narHash": "sha256-48hy+hiaDJLlgWqC7IeZI3dT+VwWkRo4atQbyPxu/ys=",
|
||||||
|
"owner": "numToStr",
|
||||||
|
"repo": "Comment.nvim",
|
||||||
|
"rev": "e51f2b142d88bb666dcaa77d93a07f4b419aca70",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numToStr",
|
||||||
|
"ref": "v0.8.0",
|
||||||
|
"repo": "Comment.nvim",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"darwin": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@ -89,11 +105,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706833576,
|
"lastModified": 1709771483,
|
||||||
"narHash": "sha256-w7BL0EWRts+nD1lbLECIuz6fRzmmV+z8oWwoY7womR0=",
|
"narHash": "sha256-Hjzu9nCknHLQvhdaRFfCEprH0o15KcaNu1QDr3J88DI=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "bdbae6ecff8fcc322bf6b9053c0b984912378af7",
|
"rev": "550340062c16d7ef8c2cc20a3d2b97bcd3c6b6f6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -110,11 +126,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706491084,
|
"lastModified": 1709967935,
|
||||||
"narHash": "sha256-eaEv+orTmr2arXpoE4aFZQMVPOYXCBEbLgK22kOtkhs=",
|
"narHash": "sha256-ZLLdGWs9njivxZsfSzfQN05g6WIyIe24bPb61y7FVqo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "f67ba6552845ea5d7f596a24d57c33a8a9dc8de9",
|
"rev": "72818e54ec29427f8d9f9cfa6fc859d01ca6dc66",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -147,11 +163,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707007453,
|
"lastModified": 1710031437,
|
||||||
"narHash": "sha256-vs7uACn2/8GOApZJv52gAVsLfpjQWFgkHN2QJ7aVkl8=",
|
"narHash": "sha256-XauWQSnMUwJOHgW/ByZP1kOrJyNSJxV4aNoBlo8lnoc=",
|
||||||
"owner": "bandithedoge",
|
"owner": "bandithedoge",
|
||||||
"repo": "nixpkgs-firefox-darwin",
|
"repo": "nixpkgs-firefox-darwin",
|
||||||
"rev": "d839feb516758ad28bc1cef43008d55e749c1d6a",
|
"rev": "e9883b75736b2d33787c9326d27d719a644b1c35",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -235,11 +251,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706985585,
|
"lastModified": 1709988192,
|
||||||
"narHash": "sha256-ptshv4qXiC6V0GCfpABz88UGGPNwqs5tAxaRUKbk1Qo=",
|
"narHash": "sha256-qxwIkl85P0I1/EyTT+NJwzbXdOv86vgZxcv4UKicjK8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "1ca210648a6ca9b957efde5da957f3de6b1f0c45",
|
"rev": "b0b0c3d94345050a7f86d1ebc6c56eea4389d030",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -252,11 +268,11 @@
|
|||||||
"kitty-scrollback-nvim-src": {
|
"kitty-scrollback-nvim-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706891759,
|
"lastModified": 1710038457,
|
||||||
"narHash": "sha256-p7RPqLHO6D5CCTDQzUrEqTu9+jg+V7wtYfGbY4qjE9A=",
|
"narHash": "sha256-/6uDN3wE6uO4yxj7tNtLXjaMse2DCQsehpTnoEyBA/U=",
|
||||||
"owner": "mikesmithgh",
|
"owner": "mikesmithgh",
|
||||||
"repo": "kitty-scrollback.nvim",
|
"repo": "kitty-scrollback.nvim",
|
||||||
"rev": "12f7687ac049d46a987c39b2b4f657fdf540fa4e",
|
"rev": "c3014974e4cd498a534ff814761ef794ebb85d01",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -307,7 +323,7 @@
|
|||||||
"nextcloud-snappymail": {
|
"nextcloud-snappymail": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707018069,
|
"lastModified": 1710042081,
|
||||||
"narHash": "sha256-UeZXoZFEPJj7zEVNTXJ3IYNt/wI7VFq3Pjh1ubMHCBo=",
|
"narHash": "sha256-UeZXoZFEPJj7zEVNTXJ3IYNt/wI7VFq3Pjh1ubMHCBo=",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://snappymail.eu/repository/nextcloud/snappymail-2.32.0-nextcloud.tar.gz"
|
"url": "https://snappymail.eu/repository/nextcloud/snappymail-2.32.0-nextcloud.tar.gz"
|
||||||
@ -325,11 +341,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706886721,
|
"lastModified": 1707832982,
|
||||||
"narHash": "sha256-iDYxsE5xYoK8Ww2TYZDmgRQNIZl+QHJfChOxWh45g0k=",
|
"narHash": "sha256-Jsrj8HJyo+PmjrHIDhq4gjZCE0eYCVmmTrx24cG8eOQ=",
|
||||||
"owner": "gytis-ivaskevicius",
|
"owner": "gytis-ivaskevicius",
|
||||||
"repo": "nix2vim",
|
"repo": "nix2vim",
|
||||||
"rev": "29253dcf0f645a44847006d436b096369ef42fd8",
|
"rev": "2fb1328cf058fc967b02f9a5330a99253b4c247e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -340,11 +356,11 @@
|
|||||||
},
|
},
|
||||||
"nixlib": {
|
"nixlib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1693701915,
|
"lastModified": 1709426687,
|
||||||
"narHash": "sha256-waHPLdDYUOHSEtMKKabcKIMhlUOHPOOPQ9UyFeEoovs=",
|
"narHash": "sha256-jLBZmwXf0WYHzLkmEMq33bqhX55YtT5edvluFr0RcSA=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "f5af57d3ef9947a70ac86e42695231ac1ad00c25",
|
"rev": "7873d84a89ae6e4841528ff7f5697ddcb5bdfe6c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -361,11 +377,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706085261,
|
"lastModified": 1709887845,
|
||||||
"narHash": "sha256-7PgpHRHyShINcqgevPP1fJ6N8kM5ZSOJnk3QZBrOCQ0=",
|
"narHash": "sha256-803UIoB8+vGkm/VK/g55aBAAOf/ncTGvxXyjTF4ydm0=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-generators",
|
"repo": "nixos-generators",
|
||||||
"rev": "896f6589db5b25023b812bbb6c1f5d3a499b1132",
|
"rev": "bef32a05496d9480b02be586fa7827748b9e597b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -376,11 +392,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706732774,
|
"lastModified": 1709703039,
|
||||||
"narHash": "sha256-hqJlyJk4MRpcItGYMF+3uHe8HvxNETWvlGtLuVpqLU0=",
|
"narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b8b232ae7b8b144397fdb12d20f592e5e7c1a64d",
|
"rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -390,34 +406,34 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"null-ls-nvim-src": {
|
"nur": {
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1691810493,
|
"lastModified": 1710037658,
|
||||||
"narHash": "sha256-cWA0rzkOp/ekVKaFee7iea1lhnqKtWUIU+fW5M950wI=",
|
"narHash": "sha256-6i7th4IX+2E1KX7FEJ4XgYtvQAooLa6YRsUIVRDu0PU=",
|
||||||
"owner": "jose-elias-alvarez",
|
"owner": "nix-community",
|
||||||
"repo": "null-ls.nvim",
|
"repo": "nur",
|
||||||
"rev": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7",
|
"rev": "ff870a7e359c3f34fc1144c6c35f76003d6c17e7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "jose-elias-alvarez",
|
"owner": "nix-community",
|
||||||
"repo": "null-ls.nvim",
|
"repo": "nur",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"nvim-lint-src": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707013032,
|
"lastModified": 1709238483,
|
||||||
"narHash": "sha256-9kEY/D0Q6sF+p6vJRefVXDK4QQdwK4Q0lSQdsYICad0=",
|
"narHash": "sha256-fYaiUFNaaSPejKBecKB7ifp/soREWYIh3avemU5qJJE=",
|
||||||
"owner": "nix-community",
|
"owner": "mfussenegger",
|
||||||
"repo": "nur",
|
"repo": "nvim-lint",
|
||||||
"rev": "ab432acea15134873882610c0e936a882319bc8a",
|
"rev": "e824adb9bc01647f71e55457353a68f0f37f9931",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "mfussenegger",
|
||||||
"repo": "nur",
|
"repo": "nvim-lint",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -441,11 +457,11 @@
|
|||||||
"nvim-tree-lua-src": {
|
"nvim-tree-lua-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706571452,
|
"lastModified": 1709951243,
|
||||||
"narHash": "sha256-b0LIqLC8cCRX1NyJx4eH5c4v5Fqqw5mMleAnQ2VRctM=",
|
"narHash": "sha256-1lWdTSZt/J4geoQKLkZLQ5Yh992XpZ4cFHw4AGEJFPY=",
|
||||||
"owner": "kyazdani42",
|
"owner": "kyazdani42",
|
||||||
"repo": "nvim-tree.lua",
|
"repo": "nvim-tree.lua",
|
||||||
"rev": "f39f7b6fcd3865ac2146de4cb4045286308f2935",
|
"rev": "041dbd18f440207ad161503a384e7c82d575db66",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -457,11 +473,11 @@
|
|||||||
"nvim-treesitter-src": {
|
"nvim-treesitter-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706952848,
|
"lastModified": 1709968077,
|
||||||
"narHash": "sha256-pNjEODR+QJPDL58O4NM7SjzZEN8D3bXDHbKLNOS3fL8=",
|
"narHash": "sha256-5cHJMqbiBAbkis9exMAH5Y2ALynaSVmQT8NQTR4VztM=",
|
||||||
"owner": "nvim-treesitter",
|
"owner": "nvim-treesitter",
|
||||||
"repo": "nvim-treesitter",
|
"repo": "nvim-treesitter",
|
||||||
"rev": "4fbf150a1621d52f17b099506e1a32f107079210",
|
"rev": "7ff51f53b0efb6228df2e8539b51bb2e737b77f3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -474,14 +490,14 @@
|
|||||||
"proton-ge": {
|
"proton-ge": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700610476,
|
"lastModified": 1710987994,
|
||||||
"narHash": "sha256-IoClZ6hl2lsz9OGfFgnz7vEAGlSY2+1K2lDEEsJQOfU=",
|
"narHash": "sha256-NqBzKonCYH+hNpVZzDhrVf+r2i6EwLG/IFBXjE2mC7s=",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-25/GE-Proton8-25.tar.gz"
|
"url": "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton9-2/GE-Proton9-2.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-25/GE-Proton8-25.tar.gz"
|
"url": "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton9-2/GE-Proton9-2.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ren": {
|
"ren": {
|
||||||
@ -503,11 +519,11 @@
|
|||||||
"rep": {
|
"rep": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1705833236,
|
"lastModified": 1707216692,
|
||||||
"narHash": "sha256-hm+v+b97z1HnY/7QHZxc0GygCq9W0mJauyjnz48ddaM=",
|
"narHash": "sha256-/dH+mNtNHaYFndVhoqmz4Sc3HeemoQt1HGD98mb9Qhw=",
|
||||||
"owner": "robenkleene",
|
"owner": "robenkleene",
|
||||||
"repo": "rep-grep",
|
"repo": "rep-grep",
|
||||||
"rev": "365acc5d599934e94dc066eb85b7ddd684ba508b",
|
"rev": "10510d47e392cb9d30a861c69f702fd194b3fa88",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -518,11 +534,12 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"Comment-nvim-src": "Comment-nvim-src",
|
|
||||||
"baleia-nvim-src": "baleia-nvim-src",
|
"baleia-nvim-src": "baleia-nvim-src",
|
||||||
|
"base16-nvim-src": "base16-nvim-src",
|
||||||
"bufferline-nvim-src": "bufferline-nvim-src",
|
"bufferline-nvim-src": "bufferline-nvim-src",
|
||||||
"bypass-paywalls-clean": "bypass-paywalls-clean",
|
"bypass-paywalls-clean": "bypass-paywalls-clean",
|
||||||
"cmp-nvim-lsp-src": "cmp-nvim-lsp-src",
|
"cmp-nvim-lsp-src": "cmp-nvim-lsp-src",
|
||||||
|
"comment-nvim-src": "comment-nvim-src",
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
"fidget-nvim-src": "fidget-nvim-src",
|
"fidget-nvim-src": "fidget-nvim-src",
|
||||||
@ -537,8 +554,8 @@
|
|||||||
"nix2vim": "nix2vim",
|
"nix2vim": "nix2vim",
|
||||||
"nixos-generators": "nixos-generators",
|
"nixos-generators": "nixos-generators",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"null-ls-nvim-src": "null-ls-nvim-src",
|
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
|
"nvim-lint-src": "nvim-lint-src",
|
||||||
"nvim-lspconfig-src": "nvim-lspconfig-src",
|
"nvim-lspconfig-src": "nvim-lspconfig-src",
|
||||||
"nvim-tree-lua-src": "nvim-tree-lua-src",
|
"nvim-tree-lua-src": "nvim-tree-lua-src",
|
||||||
"nvim-treesitter-src": "nvim-treesitter-src",
|
"nvim-treesitter-src": "nvim-treesitter-src",
|
||||||
@ -643,11 +660,11 @@
|
|||||||
"tree-sitter-bash": {
|
"tree-sitter-bash": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1705686017,
|
"lastModified": 1707951703,
|
||||||
"narHash": "sha256-+Mpks0FyQLl26TX63J6WhaAl/QDUR1k9wSUY5SFwL+w=",
|
"narHash": "sha256-SU5wBy81aANd7oUZvYR14Vd53Ml/cBSwDtO6uG34CaE=",
|
||||||
"owner": "tree-sitter",
|
"owner": "tree-sitter",
|
||||||
"repo": "tree-sitter-bash",
|
"repo": "tree-sitter-bash",
|
||||||
"rev": "f7239f638d3dc16762563a9027faeee518ce1bd9",
|
"rev": "975bc70ad95dbbf2733872bc2e0a059c055db983",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -676,11 +693,11 @@
|
|||||||
"tree-sitter-lua": {
|
"tree-sitter-lua": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1694072484,
|
"lastModified": 1708499929,
|
||||||
"narHash": "sha256-5t5w8KqbefInNbA12/jpNzmky/uOUhsLjKdEqpl1GEc=",
|
"narHash": "sha256-kzyn6XF4/PN8civ/0UV+ancCMkh7DF2B7WUYxix6aaM=",
|
||||||
"owner": "MunifTanjim",
|
"owner": "MunifTanjim",
|
||||||
"repo": "tree-sitter-lua",
|
"repo": "tree-sitter-lua",
|
||||||
"rev": "9668709211b2e683f27f414454a8b51bf0a6bda1",
|
"rev": "04c9579dcb917255b2e5f8199df4ae7f587d472f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -693,11 +710,11 @@
|
|||||||
"tree-sitter-puppet": {
|
"tree-sitter-puppet": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1690231696,
|
"lastModified": 1709480423,
|
||||||
"narHash": "sha256-YEjjy9WLwITERYqoeSVrRYnwVBIAwdc4o0lvAK9wizw=",
|
"narHash": "sha256-Lwfiby7amjTIOz8QRoC4RdZyFPfFikmQ2sqta4akyH8=",
|
||||||
"owner": "amaanq",
|
"owner": "amaanq",
|
||||||
"repo": "tree-sitter-puppet",
|
"repo": "tree-sitter-puppet",
|
||||||
"rev": "9ce9a5f7d64528572aaa8d59459ba869e634086b",
|
"rev": "5849f9694197a6e822872945b415429c285fdd54",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -709,11 +726,11 @@
|
|||||||
"tree-sitter-python": {
|
"tree-sitter-python": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700218345,
|
"lastModified": 1709753184,
|
||||||
"narHash": "sha256-hXNxa895SyNOG7PH2vAIkWbcMjZDjWYDsCafBZuvnT0=",
|
"narHash": "sha256-SqPd9O1OqBEOA+WPLfP3J2vuHWt53G5gI/9FWKQx2/Y=",
|
||||||
"owner": "tree-sitter",
|
"owner": "tree-sitter",
|
||||||
"repo": "tree-sitter-python",
|
"repo": "tree-sitter-python",
|
||||||
"rev": "4bfdd9033a2225cc95032ce77066b7aeca9e2efc",
|
"rev": "03e88c170cb23142559a406b6e7621c4af3128f5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -726,11 +743,11 @@
|
|||||||
"tree-sitter-rasi": {
|
"tree-sitter-rasi": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1678701563,
|
"lastModified": 1707776004,
|
||||||
"narHash": "sha256-2nYZoLcrxxxiOJEySwHUm93lzMg8mU+V7LIP63ntFdA=",
|
"narHash": "sha256-7zhQ5wGm0FFyuTiBVN2KgvUTw8G6fwUGR8HKJ69kR+c=",
|
||||||
"owner": "Fymyte",
|
"owner": "Fymyte",
|
||||||
"repo": "tree-sitter-rasi",
|
"repo": "tree-sitter-rasi",
|
||||||
"rev": "371dac6bcce0df5566c1cfebde69d90ecbeefd2d",
|
"rev": "43196d934a9a6ab3c7093a8683efd0111bb03db1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -742,11 +759,11 @@
|
|||||||
"tree-sitter-vimdoc": {
|
"tree-sitter-vimdoc": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1705491128,
|
"lastModified": 1709370081,
|
||||||
"narHash": "sha256-q5Ln8WPFrtKBfZnaAAlMh3Q/eczEt6wCMZAtx+ISCKg=",
|
"narHash": "sha256-v+hSI/6ocC2KxH8ogCexNcxxhcZsl7OvV9197zBCKr4=",
|
||||||
"owner": "neovim",
|
"owner": "neovim",
|
||||||
"repo": "tree-sitter-vimdoc",
|
"repo": "tree-sitter-vimdoc",
|
||||||
"rev": "ed8695ad8de39c3f073da130156f00b1148e2891",
|
"rev": "016ad75faa854e4e13bc40c517015183b795eed9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -780,11 +797,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706867893,
|
"lastModified": 1709980437,
|
||||||
"narHash": "sha256-c5bADvtL35S3vsJaXR5YWTXe08W0gSwOrTOXfpJB4Ac=",
|
"narHash": "sha256-rp1MwfRaZl7TPM4E5i1HxQGJCCfMcIa7dOzTX3SW7ro=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "bcae8dc73b931b7f0fc65f1f1ef93dc379dfd66b",
|
"rev": "e0b9e6c8ff35c7a28cb6baa02d85a9737a2ee4e9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -796,11 +813,11 @@
|
|||||||
"zenyd-mpv-scripts": {
|
"zenyd-mpv-scripts": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706283438,
|
"lastModified": 1707704915,
|
||||||
"narHash": "sha256-hpLZDtt5q18aZ8d9LHfT852wtBosKUTJ7Bx+cbjBLcg=",
|
"narHash": "sha256-9P/8q/OZXfaJMS08acQP4h3/zUA5mKRQee0JmkXcz1w=",
|
||||||
"owner": "zenyd",
|
"owner": "zenyd",
|
||||||
"repo": "mpv-scripts",
|
"repo": "mpv-scripts",
|
||||||
"rev": "7100d19d18d111ce77fc9e6e8947c0d542a86397",
|
"rev": "9bdce0050144cb24f92475f7bdd77180e0e4c26b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
35
flake.nix
35
flake.nix
@ -60,6 +60,10 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Neovim plugins
|
# Neovim plugins
|
||||||
|
base16-nvim-src = {
|
||||||
|
url = "github:RRethy/base16-nvim";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
nvim-lspconfig-src = {
|
nvim-lspconfig-src = {
|
||||||
# https://github.com/neovim/nvim-lspconfig/tags
|
# https://github.com/neovim/nvim-lspconfig/tags
|
||||||
url = "github:neovim/nvim-lspconfig/v0.1.7";
|
url = "github:neovim/nvim-lspconfig/v0.1.7";
|
||||||
@ -69,16 +73,12 @@
|
|||||||
url = "github:hrsh7th/cmp-nvim-lsp";
|
url = "github:hrsh7th/cmp-nvim-lsp";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
null-ls-nvim-src = {
|
|
||||||
url = "github:jose-elias-alvarez/null-ls.nvim";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
baleia-nvim-src = {
|
baleia-nvim-src = {
|
||||||
# https://github.com/m00qek/baleia.nvim/tags
|
# https://github.com/m00qek/baleia.nvim/tags
|
||||||
url = "github:m00qek/baleia.nvim";
|
url = "github:m00qek/baleia.nvim";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
Comment-nvim-src = {
|
comment-nvim-src = {
|
||||||
# https://github.com/numToStr/Comment.nvim/releases
|
# https://github.com/numToStr/Comment.nvim/releases
|
||||||
url = "github:numToStr/Comment.nvim/v0.8.0";
|
url = "github:numToStr/Comment.nvim/v0.8.0";
|
||||||
flake = false;
|
flake = false;
|
||||||
@ -124,6 +124,10 @@
|
|||||||
url = "github:mikesmithgh/kitty-scrollback.nvim";
|
url = "github:mikesmithgh/kitty-scrollback.nvim";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
nvim-lint-src = {
|
||||||
|
url = "github:mfussenegger/nvim-lint";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
# Tree-Sitter Grammars
|
# Tree-Sitter Grammars
|
||||||
tree-sitter-bash = {
|
tree-sitter-bash = {
|
||||||
@ -176,7 +180,7 @@
|
|||||||
proton-ge = {
|
proton-ge = {
|
||||||
# https://github.com/GloriousEggroll/proton-ge-custom/releases
|
# https://github.com/GloriousEggroll/proton-ge-custom/releases
|
||||||
url =
|
url =
|
||||||
"https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-25/GE-Proton8-25.tar.gz";
|
"https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton9-2/GE-Proton9-2.tar.gz";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -233,6 +237,7 @@
|
|||||||
hostnames = {
|
hostnames = {
|
||||||
git = "git.${baseName}";
|
git = "git.${baseName}";
|
||||||
influxdb = "influxdb.${baseName}";
|
influxdb = "influxdb.${baseName}";
|
||||||
|
irc = "irc.${baseName}";
|
||||||
metrics = "metrics.${baseName}";
|
metrics = "metrics.${baseName}";
|
||||||
prometheus = "prom.${baseName}";
|
prometheus = "prom.${baseName}";
|
||||||
paperless = "paper.${baseName}";
|
paperless = "paper.${baseName}";
|
||||||
@ -241,6 +246,7 @@
|
|||||||
content = "cloud.${baseName}";
|
content = "cloud.${baseName}";
|
||||||
books = "books.${baseName}";
|
books = "books.${baseName}";
|
||||||
download = "download.${baseName}";
|
download = "download.${baseName}";
|
||||||
|
transmission = "transmission.${baseName}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -274,6 +280,7 @@
|
|||||||
# Contains my full system builds, including home-manager
|
# Contains my full system builds, including home-manager
|
||||||
# nixos-rebuild switch --flake .#tempest
|
# nixos-rebuild switch --flake .#tempest
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
|
arrow = import ./hosts/arrow { inherit inputs globals overlays; };
|
||||||
tempest = import ./hosts/tempest { inherit inputs globals overlays; };
|
tempest = import ./hosts/tempest { inherit inputs globals overlays; };
|
||||||
hydra = import ./hosts/hydra { inherit inputs globals overlays; };
|
hydra = import ./hosts/hydra { inherit inputs globals overlays; };
|
||||||
flame = import ./hosts/flame { inherit inputs globals overlays; };
|
flame = import ./hosts/flame { inherit inputs globals overlays; };
|
||||||
@ -300,6 +307,8 @@
|
|||||||
diskoConfigurations = { root = import ./disks/root.nix; };
|
diskoConfigurations = { root = import ./disks/root.nix; };
|
||||||
|
|
||||||
packages = let
|
packages = let
|
||||||
|
arrow = system:
|
||||||
|
import ./hosts/arrow { inherit inputs globals overlays system; };
|
||||||
aws = system:
|
aws = system:
|
||||||
import ./hosts/aws { inherit inputs globals overlays system; };
|
import ./hosts/aws { inherit inputs globals overlays system; };
|
||||||
staff = system:
|
staff = system:
|
||||||
@ -311,8 +320,18 @@
|
|||||||
colors = (import ./colorscheme/gruvbox-dark).dark;
|
colors = (import ./colorscheme/gruvbox-dark).dark;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
x86_64-linux.arrow = arrow "x86_64-linux";
|
||||||
x86_64-linux.aws = aws "x86_64-linux";
|
x86_64-linux.aws = aws "x86_64-linux";
|
||||||
x86_64-linux.staff = staff "x86_64-linux";
|
x86_64-linux.staff = staff "x86_64-linux";
|
||||||
|
x86_64-linux.image = {
|
||||||
|
arrow = inputs.nixos-generators.nixosGenerate {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
format = "iso";
|
||||||
|
modules = import ./hosts/arrow/modules.nix {
|
||||||
|
inherit inputs globals overlays;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# Package Neovim config into standalone package
|
# Package Neovim config into standalone package
|
||||||
x86_64-linux.neovim = neovim "x86_64-linux";
|
x86_64-linux.neovim = neovim "x86_64-linux";
|
||||||
@ -375,6 +394,10 @@
|
|||||||
path = ./templates/haskell;
|
path = ./templates/haskell;
|
||||||
description = "Haskell template";
|
description = "Haskell template";
|
||||||
};
|
};
|
||||||
|
rust = {
|
||||||
|
path = ./templates/rust;
|
||||||
|
description = "Rust template";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
8
hosts/arrow/default.nix
Normal file
8
hosts/arrow/default.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ inputs, globals, overlays, ... }:
|
||||||
|
|
||||||
|
inputs.nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = { };
|
||||||
|
modules = import ./modules.nix { inherit inputs globals overlays; };
|
||||||
|
}
|
||||||
|
|
92
hosts/arrow/main.tf
Normal file
92
hosts/arrow/main.tf
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
terraform {
|
||||||
|
backend "s3" {
|
||||||
|
bucket = "noahmasur-terraform"
|
||||||
|
key = "arrow.tfstate"
|
||||||
|
region = "auto"
|
||||||
|
skip_credentials_validation = true
|
||||||
|
skip_metadata_api_check = true
|
||||||
|
skip_region_validation = true
|
||||||
|
skip_requesting_account_id = true
|
||||||
|
skip_s3_checksum = true
|
||||||
|
use_path_style = true
|
||||||
|
/*
|
||||||
|
ENVIRONMENT VARIABLES
|
||||||
|
---------------------
|
||||||
|
AWS_ACCESS_KEY_ID - R2 token
|
||||||
|
AWS_SECRET_ACCESS_KEY - R2 secret
|
||||||
|
AWS_ENDPOINT_URL_S3 - R2 location: https://ACCOUNT_ID.r2.cloudflarestorage.com
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
required_version = ">= 1.0.0"
|
||||||
|
required_providers {
|
||||||
|
aws = {
|
||||||
|
source = "hashicorp/aws"
|
||||||
|
version = "5.42.0"
|
||||||
|
}
|
||||||
|
vultr = {
|
||||||
|
source = "vultr/vultr"
|
||||||
|
version = "2.19.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# locals {
|
||||||
|
# image_file = one(fileset(path.root, "result/iso/nixos.iso"))
|
||||||
|
# }
|
||||||
|
|
||||||
|
# variable "cloudflare_r2_endpoint" {
|
||||||
|
# type = string
|
||||||
|
# description = "Domain for the Cloudflare R2 endpoint"
|
||||||
|
# }
|
||||||
|
|
||||||
|
variable "vultr_api_key" {
|
||||||
|
type = string
|
||||||
|
description = "API key for Vultr management"
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "aws" {
|
||||||
|
region = "auto"
|
||||||
|
skip_credentials_validation = true
|
||||||
|
skip_metadata_api_check = true
|
||||||
|
skip_region_validation = true
|
||||||
|
skip_requesting_account_id = true
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "vultr" {
|
||||||
|
api_key = var.vultr_api_key
|
||||||
|
}
|
||||||
|
|
||||||
|
# data "aws_s3_bucket" "images" {
|
||||||
|
# bucket = "noahmasur-arrow-images"
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# resource "aws_s3_object" "image" {
|
||||||
|
# bucket = data.aws_s3_bucket.images.id
|
||||||
|
# key = "arrow.iso"
|
||||||
|
# source = local.image_file
|
||||||
|
# etag = filemd5(local.image_file)
|
||||||
|
# acl = "public-read"
|
||||||
|
# }
|
||||||
|
|
||||||
|
resource "vultr_iso_private" "image" {
|
||||||
|
# url = "https://${var.cloudflare_account_id}.r2.cloudflarestorage.com/${data.aws_s3_bucket.images.id}/${aws_s3_object.image.key}"
|
||||||
|
url = "https://arrow.images.masu.rs/arrow.iso"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "vultr_instance" "arrow" {
|
||||||
|
plan = "vc2-1c-2gb"
|
||||||
|
region = "ewr"
|
||||||
|
iso_id = vultr_iso_private.image.id
|
||||||
|
label = "arrow"
|
||||||
|
tags = ["arrow"]
|
||||||
|
enable_ipv6 = false
|
||||||
|
disable_public_ipv4 = false
|
||||||
|
backups = "disabled"
|
||||||
|
ddos_protection = false
|
||||||
|
activation_email = false
|
||||||
|
}
|
||||||
|
|
||||||
|
output "host_ip" {
|
||||||
|
value = vultr_instance.arrow.main_ip
|
||||||
|
}
|
38
hosts/arrow/modules.nix
Normal file
38
hosts/arrow/modules.nix
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{ inputs, globals, overlays }:
|
||||||
|
|
||||||
|
[
|
||||||
|
globals
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = overlays;
|
||||||
|
networking.hostName = "arrow";
|
||||||
|
physical = false;
|
||||||
|
server = true;
|
||||||
|
gui.enable = false;
|
||||||
|
theme.colors = (import ../../colorscheme/gruvbox).dark;
|
||||||
|
publicKeys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s personal"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKpPU2G9rSF8Q6waH62IJexDCQ6lY+8ZyVufGE3xMDGw deploy"
|
||||||
|
];
|
||||||
|
identityFile = "/home/${globals.user}/.ssh/id_ed25519";
|
||||||
|
cloudflare.enable = true;
|
||||||
|
services.openssh.enable = true;
|
||||||
|
services.caddy.enable = true;
|
||||||
|
services.transmission.enable = true;
|
||||||
|
|
||||||
|
# nix-index seems to each up too much memory for Vultr
|
||||||
|
home-manager.users.${globals.user}.programs.nix-index.enable =
|
||||||
|
inputs.nixpkgs.lib.mkForce false;
|
||||||
|
|
||||||
|
virtualisation.vmVariant = {
|
||||||
|
virtualisation.forwardPorts = [{
|
||||||
|
from = "host";
|
||||||
|
host.port = 2222;
|
||||||
|
guest.port = 22;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
../../modules/common
|
||||||
|
../../modules/nixos
|
||||||
|
]
|
||||||
|
|
@ -12,8 +12,9 @@ inputs.nixos-generators.nixosGenerate {
|
|||||||
gui.enable = false;
|
gui.enable = false;
|
||||||
theme.colors = (import ../../colorscheme/gruvbox).dark;
|
theme.colors = (import ../../colorscheme/gruvbox).dark;
|
||||||
passwordHash = null;
|
passwordHash = null;
|
||||||
publicKey =
|
publicKeys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s";
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s personal"
|
||||||
|
];
|
||||||
# AWS settings require this
|
# AWS settings require this
|
||||||
permitRootLogin = "prohibit-password";
|
permitRootLogin = "prohibit-password";
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,7 @@ inputs.nixpkgs.lib.nixosSystem {
|
|||||||
giteaRunner.enable = true;
|
giteaRunner.enable = true;
|
||||||
services.caddy.enable = true;
|
services.caddy.enable = true;
|
||||||
services.grafana.enable = true;
|
services.grafana.enable = true;
|
||||||
|
services.thelounge.enable = true;
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
services.victoriametrics.enable = true;
|
services.victoriametrics.enable = true;
|
||||||
services.influxdb2.enable = true;
|
services.influxdb2.enable = true;
|
||||||
@ -83,8 +84,9 @@ inputs.nixpkgs.lib.nixosSystem {
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Disable passwords, only use SSH key
|
# Disable passwords, only use SSH key
|
||||||
publicKey =
|
publicKeys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s";
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s personal"
|
||||||
|
];
|
||||||
|
|
||||||
# # Wireguard config for Transmission
|
# # Wireguard config for Transmission
|
||||||
# wireguard.enable = true;
|
# wireguard.enable = true;
|
||||||
|
@ -56,8 +56,15 @@ inputs.nixpkgs.lib.nixosSystem {
|
|||||||
devices = (import ../../disks/root.nix { disk = "/dev/nvme0n1"; });
|
devices = (import ../../disks/root.nix { disk = "/dev/nvme0n1"; });
|
||||||
};
|
};
|
||||||
|
|
||||||
# Automatically load the ZFS pool on boot
|
boot.zfs = {
|
||||||
boot.zfs.extraPools = [ "tank" ];
|
# Automatically load the ZFS pool on boot
|
||||||
|
extraPools = [ "tank" ];
|
||||||
|
# Only try to decrypt datasets with keyfiles
|
||||||
|
requestEncryptionCredentials =
|
||||||
|
[ "tank/archive" "tank/generic" "tank/nextcloud" ];
|
||||||
|
# If password is requested and fails, continue to boot eventually
|
||||||
|
passwordTimeout = 300;
|
||||||
|
};
|
||||||
|
|
||||||
# Theming
|
# Theming
|
||||||
|
|
||||||
@ -102,8 +109,9 @@ inputs.nixpkgs.lib.nixosSystem {
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Disable passwords, only use SSH key
|
# Disable passwords, only use SSH key
|
||||||
publicKey =
|
publicKeys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s";
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s personal"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -103,6 +103,7 @@ inputs.nixpkgs.lib.nixosSystem {
|
|||||||
mullvad.enable = false;
|
mullvad.enable = false;
|
||||||
nixlang.enable = true;
|
nixlang.enable = true;
|
||||||
rust.enable = true;
|
rust.enable = true;
|
||||||
|
terraform.enable = true;
|
||||||
yt-dlp.enable = true;
|
yt-dlp.enable = true;
|
||||||
gaming = {
|
gaming = {
|
||||||
dwarf-fortress.enable = true;
|
dwarf-fortress.enable = true;
|
||||||
|
@ -4,3 +4,4 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s
|
|||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHVknmPi7sG6ES0G0jcsvebzKGWWaMfJTYgvOue6EULI flame
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHVknmPi7sG6ES0G0jcsvebzKGWWaMfJTYgvOue6EULI flame
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ9mwXlZnIALt9SnH3FOZvdgHLM5ZqwYUERXBbM7Rwh6 swan
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ9mwXlZnIALt9SnH3FOZvdgHLM5ZqwYUERXBbM7Rwh6 swan
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC3yHivgEXr2ecwe58h9bkhwTYivf3GwL8xenQKMeiUb tempest
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC3yHivgEXr2ecwe58h9bkhwTYivf3GwL8xenQKMeiUb tempest
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICmGHIWBZzRx35/yFgnPJSHN2+35WJ30G9c5tDhPsCrl arrow
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
unfreePackages = [
|
unfreePackages = [
|
||||||
(lib.mkIf config._1password.enable "onepassword-password-manager")
|
(lib.mkIf config._1password.enable "onepassword-password-manager")
|
||||||
"okta-browser-plugin"
|
"okta-browser-plugin"
|
||||||
"wappalyzer"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.${config.user} = {
|
home-manager.users.${config.user} = {
|
||||||
@ -41,12 +40,10 @@
|
|||||||
okta-browser-plugin
|
okta-browser-plugin
|
||||||
reddit-enhancement-suite
|
reddit-enhancement-suite
|
||||||
return-youtube-dislikes
|
return-youtube-dislikes
|
||||||
snowflake
|
|
||||||
sponsorblock
|
sponsorblock
|
||||||
ublock-origin
|
ublock-origin
|
||||||
ublacklist
|
ublacklist
|
||||||
vimium
|
vimium
|
||||||
wappalyzer
|
|
||||||
];
|
];
|
||||||
settings = {
|
settings = {
|
||||||
"app.update.auto" = false;
|
"app.update.auto" = false;
|
||||||
@ -166,6 +163,11 @@
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xdg.mimeApps = {
|
||||||
|
associations.added = { "text.html" = [ "firefox.desktop" ]; };
|
||||||
|
defaultApplications = { "text.html" = [ "firefox.desktop" ]; };
|
||||||
|
};
|
||||||
|
|
||||||
xsession.windowManager.i3.config.keybindings =
|
xsession.windowManager.i3.config.keybindings =
|
||||||
lib.mkIf pkgs.stdenv.isLinux {
|
lib.mkIf pkgs.stdenv.isLinux {
|
||||||
"${
|
"${
|
||||||
|
@ -57,7 +57,7 @@
|
|||||||
allow_remote_control = "socket-only";
|
allow_remote_control = "socket-only";
|
||||||
listen_on = "unix:/tmp/kitty";
|
listen_on = "unix:/tmp/kitty";
|
||||||
action_alias =
|
action_alias =
|
||||||
"kitty_scrollback_nvim kitten ${pkgs.kitty-scrollback-nvim}/python/kitty_scrollback_nvim.py";
|
"kitty_scrollback_nvim kitten ${pkgs.vimPlugins.kitty-scrollback-nvim}/python/kitty_scrollback_nvim.py";
|
||||||
|
|
||||||
# Colors (adapted from: https://github.com/kdrag0n/base16-kitty/blob/master/templates/default-256.mustache)
|
# Colors (adapted from: https://github.com/kdrag0n/base16-kitty/blob/master/templates/default-256.mustache)
|
||||||
background = config.theme.colors.base00;
|
background = config.theme.colors.base00;
|
||||||
@ -103,8 +103,8 @@
|
|||||||
color21 = config.theme.colors.base06;
|
color21 = config.theme.colors.base06;
|
||||||
|
|
||||||
# Scrollback
|
# Scrollback
|
||||||
scrolling_lines = 10000;
|
scrollback_lines = 10000;
|
||||||
scrollback_pager_history_size = 10; # MB
|
scrollback_pager_history_size = 300; # MB
|
||||||
|
|
||||||
# Window
|
# Window
|
||||||
window_padding_width = 6;
|
window_padding_width = 6;
|
||||||
|
@ -107,44 +107,20 @@
|
|||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Hostname for download services.";
|
description = "Hostname for download services.";
|
||||||
};
|
};
|
||||||
|
irc = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Hostname for IRC services.";
|
||||||
|
};
|
||||||
|
transmission = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Hostname for peer2peer downloads (Transmission).";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let stateVersion = "23.05";
|
config = let stateVersion = "23.05";
|
||||||
in {
|
in {
|
||||||
|
|
||||||
nix = {
|
|
||||||
|
|
||||||
# Enable features in Nix commands
|
|
||||||
extraOptions = ''
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
warn-dirty = false
|
|
||||||
'';
|
|
||||||
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
options = "--delete-older-than 7d";
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
|
|
||||||
# Add community Cachix to binary cache
|
|
||||||
# Don't use with macOS because blocked by corporate firewall
|
|
||||||
builders-use-substitutes = true;
|
|
||||||
substituters = lib.mkIf (!pkgs.stdenv.isDarwin)
|
|
||||||
[ "https://nix-community.cachix.org" ];
|
|
||||||
trusted-public-keys = lib.mkIf (!pkgs.stdenv.isDarwin) [
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
];
|
|
||||||
|
|
||||||
# Scans and hard links identical files in the store
|
|
||||||
# Not working with macOS: https://github.com/NixOS/nix/issues/7273
|
|
||||||
auto-optimise-store = lib.mkIf (!pkgs.stdenv.isDarwin) true;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
# Basic common system packages for all devices
|
# Basic common system packages for all devices
|
||||||
environment.systemPackages = with pkgs; [ git vim wget curl ];
|
environment.systemPackages = with pkgs; [ git vim wget curl ];
|
||||||
|
|
||||||
|
@ -9,8 +9,6 @@
|
|||||||
programs.himalaya = { enable = true; };
|
programs.himalaya = { enable = true; };
|
||||||
accounts.email.accounts.home.himalaya = {
|
accounts.email.accounts.home.himalaya = {
|
||||||
enable = true;
|
enable = true;
|
||||||
backend = "imap";
|
|
||||||
sender = "smtp";
|
|
||||||
settings = {
|
settings = {
|
||||||
downloads-dir = config.userDirs.download;
|
downloads-dir = config.userDirs.download;
|
||||||
smtp-insecure = true;
|
smtp-insecure = true;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
plugins = [ pkgs.vimPlugins.nvim-base16 ];
|
plugins = [ pkgs.vimPlugins.base16-nvim ];
|
||||||
setup.base16-colorscheme = config.colors;
|
setup.base16-colorscheme = config.colors;
|
||||||
|
|
||||||
# Telescope isn't working, shut off for now
|
# Telescope isn't working, shut off for now
|
||||||
|
@ -1,120 +1,112 @@
|
|||||||
{ pkgs, lib, config, dsl, ... }: {
|
{ pkgs, lib, config, dsl, ... }: {
|
||||||
|
|
||||||
# Terraform optional because non-free
|
# Terraform optional because non-free
|
||||||
|
options.terraform = lib.mkEnableOption "Whether to enable Terraform LSP";
|
||||||
options.github = lib.mkEnableOption "Whether to enable GitHub features";
|
options.github = lib.mkEnableOption "Whether to enable GitHub features";
|
||||||
options.kubernetes =
|
options.kubernetes =
|
||||||
lib.mkEnableOption "Whether to enable Kubernetes features";
|
lib.mkEnableOption "Whether to enable Kubernetes features";
|
||||||
options.python = lib.mkEnableOption "Whether to enable Python LSP";
|
|
||||||
options.terraform = lib.mkEnableOption "Whether to enable Terraform LSP";
|
|
||||||
|
|
||||||
config =
|
config = {
|
||||||
|
plugins = [
|
||||||
|
pkgs.vimPlugins.nvim-lspconfig
|
||||||
|
pkgs.vimPlugins.conform-nvim
|
||||||
|
pkgs.vimPlugins.fidget-nvim
|
||||||
|
pkgs.vimPlugins.nvim-lint
|
||||||
|
];
|
||||||
|
|
||||||
let
|
setup.fidget = { };
|
||||||
|
|
||||||
terraformFormat = if config.terraform then ''
|
|
||||||
require("null-ls").builtins.formatting.terraform_fmt.with({
|
|
||||||
command = "${pkgs.terraform}/bin/terraform",
|
|
||||||
extra_filetypes = { "hcl" },
|
|
||||||
}),
|
|
||||||
'' else
|
|
||||||
"";
|
|
||||||
|
|
||||||
pythonFormat = if config.python then ''
|
|
||||||
require("null-ls").builtins.formatting.black.with({ command = "${pkgs.black}/bin/black" }),
|
|
||||||
require("null-ls").builtins.diagnostics.ruff.with({ command = "${pkgs.ruff}/bin/ruff" }),
|
|
||||||
'' else
|
|
||||||
"";
|
|
||||||
|
|
||||||
in {
|
|
||||||
plugins = [
|
|
||||||
pkgs.vimPlugins.nvim-lspconfig
|
|
||||||
pkgs.vimPlugins.null-ls-nvim
|
|
||||||
pkgs.vimPlugins.fidget-nvim
|
|
||||||
];
|
|
||||||
|
|
||||||
setup.fidget = { };
|
|
||||||
|
|
||||||
use.lspconfig.lua_ls.setup = dsl.callWith {
|
|
||||||
settings = { Lua = { diagnostics = { globals = [ "vim" "hs" ]; }; }; };
|
|
||||||
capabilities =
|
|
||||||
dsl.rawLua "require('cmp_nvim_lsp').default_capabilities()";
|
|
||||||
cmd = [ "${pkgs.lua-language-server}/bin/lua-language-server" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
use.lspconfig.nil_ls.setup = dsl.callWith {
|
|
||||||
cmd = [ "${pkgs.nil}/bin/nil" ];
|
|
||||||
capabilities =
|
|
||||||
dsl.rawLua "require('cmp_nvim_lsp').default_capabilities()";
|
|
||||||
};
|
|
||||||
|
|
||||||
use.lspconfig.pyright.setup = dsl.callWith {
|
|
||||||
cmd = if config.python then [
|
|
||||||
"${pkgs.pyright}/bin/pyright-langserver"
|
|
||||||
"--stdio"
|
|
||||||
] else
|
|
||||||
[ "echo" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
use.lspconfig.terraformls.setup = dsl.callWith {
|
|
||||||
cmd = if config.terraform then [
|
|
||||||
"${pkgs.terraform-ls}/bin/terraform-ls"
|
|
||||||
"serve"
|
|
||||||
] else
|
|
||||||
[ "echo" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
use.lspconfig.rust_analyzer.setup = dsl.callWith {
|
|
||||||
cmd = [ "${pkgs.rust-analyzer}/bin/rust-analyzer" ];
|
|
||||||
settings = {
|
|
||||||
"['rust-analyzer']" = { check = { command = "clippy"; }; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
vim.api.nvim_create_augroup = dsl.callWith [ "LspFormatting" { } ];
|
|
||||||
|
|
||||||
lua = ''
|
|
||||||
${builtins.readFile ./lsp.lua}
|
|
||||||
|
|
||||||
-- Prevent infinite log size (change this when debugging)
|
|
||||||
vim.lsp.set_log_level("off")
|
|
||||||
|
|
||||||
require("null-ls").setup({
|
|
||||||
sources = {
|
|
||||||
require("null-ls").builtins.formatting.stylua.with({ command = "${pkgs.stylua}/bin/stylua" }),
|
|
||||||
require("null-ls").builtins.formatting.fish_indent.with({ command = "${pkgs.fish}/bin/fish_indent" }),
|
|
||||||
require("null-ls").builtins.formatting.nixfmt.with({ command = "${pkgs.nixfmt}/bin/nixfmt" }),
|
|
||||||
require("null-ls").builtins.formatting.rustfmt.with({ command = "${pkgs.rustfmt}/bin/rustfmt" }),
|
|
||||||
require("null-ls").builtins.diagnostics.shellcheck.with({ command = "${pkgs.shellcheck}/bin/shellcheck" }),
|
|
||||||
require("null-ls").builtins.formatting.shfmt.with({
|
|
||||||
command = "${pkgs.shfmt}/bin/shfmt",
|
|
||||||
extra_args = { "-i", "4", "-ci" },
|
|
||||||
}),
|
|
||||||
${pythonFormat}
|
|
||||||
${terraformFormat}
|
|
||||||
},
|
|
||||||
|
|
||||||
on_attach = function(client, bufnr)
|
|
||||||
if client.supports_method("textDocument/formatting") then
|
|
||||||
-- Auto-format on save
|
|
||||||
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
|
||||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
|
||||||
group = augroup,
|
|
||||||
buffer = bufnr,
|
|
||||||
callback = function()
|
|
||||||
vim.lsp.buf.format({ bufnr = bufnr })
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
-- Use internal formatting for bindings like gq.
|
|
||||||
vim.api.nvim_create_autocmd("LspAttach", {
|
|
||||||
callback = function(args)
|
|
||||||
vim.bo[args.buf].formatexpr = nil
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
'';
|
|
||||||
|
|
||||||
|
use.lspconfig.lua_ls.setup = dsl.callWith {
|
||||||
|
settings = { Lua = { diagnostics = { globals = [ "vim" "hs" ]; }; }; };
|
||||||
|
capabilities =
|
||||||
|
dsl.rawLua "require('cmp_nvim_lsp').default_capabilities()";
|
||||||
|
cmd = [ "${pkgs.lua-language-server}/bin/lua-language-server" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use.lspconfig.nil_ls.setup = dsl.callWith {
|
||||||
|
cmd = [ "${pkgs.nil}/bin/nil" ];
|
||||||
|
capabilities =
|
||||||
|
dsl.rawLua "require('cmp_nvim_lsp').default_capabilities()";
|
||||||
|
};
|
||||||
|
|
||||||
|
use.lspconfig.pyright.setup = dsl.callWith {
|
||||||
|
cmd = [ "${pkgs.pyright}/bin/pyright-langserver" "--stdio" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
use.lspconfig.terraformls.setup = dsl.callWith {
|
||||||
|
cmd = if config.terraform then [
|
||||||
|
"${pkgs.terraform-ls}/bin/terraform-ls"
|
||||||
|
"serve"
|
||||||
|
] else
|
||||||
|
[ "echo" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
use.lspconfig.rust_analyzer.setup = dsl.callWith {
|
||||||
|
cmd = [ "${pkgs.rust-analyzer}/bin/rust-analyzer" ];
|
||||||
|
settings = {
|
||||||
|
"['rust-analyzer']" = {
|
||||||
|
check = { command = "clippy"; };
|
||||||
|
files = { excludeDirs = [ ".direnv" ]; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
setup.conform = {
|
||||||
|
format_on_save = {
|
||||||
|
# These options will be passed to conform.format()
|
||||||
|
timeout_ms = 1500;
|
||||||
|
lsp_fallback = true;
|
||||||
|
};
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = [ "stylua" ];
|
||||||
|
python = [ "black" ];
|
||||||
|
fish = [ "fish_indent" ];
|
||||||
|
nix = [ "nixfmt" ];
|
||||||
|
rust = [ "rustfmt" ];
|
||||||
|
sh = [ "shfmt" ];
|
||||||
|
terraform = if config.terraform then [ "terraform_fmt" ] else [ ];
|
||||||
|
hcl = if config.terraform then [ "terraform_fmt" ] else [ ];
|
||||||
|
};
|
||||||
|
formatters = {
|
||||||
|
lua.command = "${pkgs.stylua}/bin/stylua";
|
||||||
|
black.command = "${pkgs.black}/bin/black";
|
||||||
|
fish_indent.command = "${pkgs.fish}/bin/fish_indent";
|
||||||
|
nixfmt.command = "${pkgs.nixfmt}/bin/nixfmt";
|
||||||
|
rustfmt = {
|
||||||
|
command = "${pkgs.rustfmt}/bin/rustfmt";
|
||||||
|
prepend_args = [ "--edition" "2021" ];
|
||||||
|
};
|
||||||
|
shfmt = {
|
||||||
|
command = "${pkgs.shfmt}/bin/shfmt";
|
||||||
|
prepend_args = [ "-i" "4" "-ci" ];
|
||||||
|
};
|
||||||
|
terraform_fmt.command =
|
||||||
|
if config.terraform then "${pkgs.terraform}/bin/terraform" else "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
use.lint = {
|
||||||
|
linters_by_ft = dsl.toTable {
|
||||||
|
python = [ "ruff" ];
|
||||||
|
sh = [ "shellcheck" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd = dsl.callWith [
|
||||||
|
(dsl.toTable [ "BufEnter" "BufWritePost" ])
|
||||||
|
(dsl.rawLua "{ callback = function() require('lint').try_lint() end }")
|
||||||
|
];
|
||||||
|
|
||||||
|
lua = ''
|
||||||
|
${builtins.readFile ./lsp.lua}
|
||||||
|
|
||||||
|
local ruff = require('lint').linters.ruff; ruff.cmd = "${pkgs.ruff}/bin/ruff"
|
||||||
|
local shellcheck = require('lint').linters.shellcheck; shellcheck.cmd = "${pkgs.shellcheck}/bin/shellcheck"
|
||||||
|
|
||||||
|
-- Prevent infinite log size (change this when debugging)
|
||||||
|
vim.lsp.set_log_level("off")
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
pkgs.vimPlugins.glow-nvim # Markdown preview popup
|
pkgs.vimPlugins.glow-nvim # Markdown preview popup
|
||||||
pkgs.vimPlugins.nvim-colorizer-lua # Hex color previews
|
pkgs.vimPlugins.nvim-colorizer-lua # Hex color previews
|
||||||
pkgs.vimPlugins.which-key-nvim # Keybind helper
|
pkgs.vimPlugins.which-key-nvim # Keybind helper
|
||||||
pkgs.kitty-scrollback-nvim # Scrollback pager for kitty
|
pkgs.vimPlugins.kitty-scrollback-nvim # Scrollback pager for kitty
|
||||||
];
|
];
|
||||||
|
|
||||||
# Initialize some plugins
|
# Initialize some plugins
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
{ pkgs, lib, config, ... }: {
|
{ pkgs, lib, ... }: {
|
||||||
|
|
||||||
plugins = [
|
plugins = [
|
||||||
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_plugins:
|
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_plugins:
|
||||||
with pkgs.tree-sitter-grammars;
|
with pkgs.tree-sitter-grammars; [
|
||||||
[
|
|
||||||
tree-sitter-bash
|
tree-sitter-bash
|
||||||
tree-sitter-c
|
tree-sitter-c
|
||||||
tree-sitter-fish
|
tree-sitter-fish
|
||||||
|
tree-sitter-hcl
|
||||||
tree-sitter-ini
|
tree-sitter-ini
|
||||||
tree-sitter-json
|
tree-sitter-json
|
||||||
tree-sitter-lua
|
tree-sitter-lua
|
||||||
@ -14,23 +14,24 @@
|
|||||||
tree-sitter-markdown-inline
|
tree-sitter-markdown-inline
|
||||||
tree-sitter-nix
|
tree-sitter-nix
|
||||||
tree-sitter-puppet
|
tree-sitter-puppet
|
||||||
|
tree-sitter-python
|
||||||
tree-sitter-rasi
|
tree-sitter-rasi
|
||||||
tree-sitter-toml
|
tree-sitter-toml
|
||||||
tree-sitter-vimdoc
|
tree-sitter-vimdoc
|
||||||
tree-sitter-yaml
|
tree-sitter-yaml
|
||||||
] ++ (if config.python.enable then [ tree-sitter-python ] else [ ])
|
]))
|
||||||
++ (if config.terraform.enable then [ tree-sitter-hcl ] else [ ])))
|
|
||||||
pkgs.vimPlugins.vim-matchup # Better % jumping in languages
|
pkgs.vimPlugins.vim-matchup # Better % jumping in languages
|
||||||
pkgs.vimPlugins.playground # Tree-sitter experimenting
|
pkgs.vimPlugins.playground # Tree-sitter experimenting
|
||||||
pkgs.vimPlugins.nginx-vim
|
pkgs.vimPlugins.nginx-vim
|
||||||
pkgs.baleia-nvim # Clean ANSI from kitty scrollback
|
pkgs.vimPlugins.vim-helm
|
||||||
# pkgs.hmts-nvim # Tree-sitter injections for home-manager
|
pkgs.vimPlugins.baleia-nvim # Clean ANSI from kitty scrollback
|
||||||
|
# pkgs.vimPlugins.hmts-nvim # Tree-sitter injections for home-manager
|
||||||
(pkgs.vimUtils.buildVimPlugin {
|
(pkgs.vimUtils.buildVimPlugin {
|
||||||
pname = "nmasur";
|
pname = "nmasur";
|
||||||
version = "0.1";
|
version = "0.1";
|
||||||
src = ../plugin;
|
src = ../plugin;
|
||||||
})
|
})
|
||||||
] ++ (if config.kubernetes.enable then [ pkgs.vimPlugins.vim-helm ] else [ ]);
|
];
|
||||||
|
|
||||||
setup."nvim-treesitter.configs" = {
|
setup."nvim-treesitter.configs" = {
|
||||||
highlight = { enable = true; };
|
highlight = { enable = true; };
|
||||||
|
@ -5,11 +5,9 @@ let
|
|||||||
neovim = import ./package {
|
neovim = import ./package {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
colors = config.theme.colors;
|
colors = config.theme.colors;
|
||||||
c = config.c.enable;
|
terraform = config.terraform.enable;
|
||||||
github = true;
|
github = true;
|
||||||
kubernetes = config.kubernetes.enable;
|
kubernetes = config.kubernetes.enable;
|
||||||
python = config.python.enable;
|
|
||||||
terraform = config.terraform.enable;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
@ -1 +0,0 @@
|
|||||||
{ lib, ... }: { options.c.enable = lib.mkEnableOption "C language tools."; }
|
|
@ -31,6 +31,10 @@ STATUS=$?
|
|||||||
# because tesseract adds .txt to the given file path anyways. So if we were to
|
# because tesseract adds .txt to the given file path anyways. So if we were to
|
||||||
# specify /tmp/ocr.txt as the file path, tesseract would out the text to
|
# specify /tmp/ocr.txt as the file path, tesseract would out the text to
|
||||||
# /tmp/ocr.txt.txt
|
# /tmp/ocr.txt.txt
|
||||||
|
cd /tmp || {
|
||||||
|
echo "Failed to jump to directory."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
tesseract "$IMAGE_FILE" "${TEXT_FILE//\.txt/}"
|
tesseract "$IMAGE_FILE" "${TEXT_FILE//\.txt/}"
|
||||||
|
|
||||||
# Check if the text was detected by checking number
|
# Check if the text was detected by checking number
|
||||||
|
@ -12,5 +12,6 @@
|
|||||||
./nixpkgs.nix
|
./nixpkgs.nix
|
||||||
./starship.nix
|
./starship.nix
|
||||||
./utilities.nix
|
./utilities.nix
|
||||||
|
./work.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -18,5 +18,5 @@ bind -M insert \cn 'commandline -r "nix shell nixpkgs#"'
|
|||||||
bind -M default \cn 'commandline -r "nix shell nixpkgs#"'
|
bind -M default \cn 'commandline -r "nix shell nixpkgs#"'
|
||||||
bind -M insert \x11F nix-fzf
|
bind -M insert \x11F nix-fzf
|
||||||
bind -M default \x11F nix-fzf
|
bind -M default \x11F nix-fzf
|
||||||
bind -M insert \ch _atuin_search --filter-mode global
|
bind -M insert \ch '_atuin_search --filter-mode global'
|
||||||
bind -M default \ch _atuin_search --filter-mode global
|
bind -M default \ch '_atuin_search --filter-mode global'
|
||||||
|
@ -28,11 +28,16 @@ in {
|
|||||||
userName = config.gitName;
|
userName = config.gitName;
|
||||||
userEmail = config.gitEmail;
|
userEmail = config.gitEmail;
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
|
core.pager =
|
||||||
|
"${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight | less -F";
|
||||||
|
interactive.difffilter =
|
||||||
|
"${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight";
|
||||||
pager = { branch = "false"; };
|
pager = { branch = "false"; };
|
||||||
safe = { directory = config.dotfilesPath; };
|
safe = { directory = config.dotfilesPath; };
|
||||||
pull = { ff = "only"; };
|
pull = { ff = "only"; };
|
||||||
push = { autoSetupRemote = "true"; };
|
push = { autoSetupRemote = "true"; };
|
||||||
init = { defaultBranch = "master"; };
|
init = { defaultBranch = "master"; };
|
||||||
|
rebase = { autosquash = "true"; };
|
||||||
};
|
};
|
||||||
ignores = [ ".direnv/**" "result" ];
|
ignores = [ ".direnv/**" "result" ];
|
||||||
includes = [{
|
includes = [{
|
||||||
@ -45,7 +50,7 @@ in {
|
|||||||
# TODO: fix with variables
|
# TODO: fix with variables
|
||||||
xdg.configFile."git/personal".text = ''
|
xdg.configFile."git/personal".text = ''
|
||||||
[user]
|
[user]
|
||||||
name = "Noah Masur"
|
name = "${config.fullName}"
|
||||||
email = "7386960+nmasur@users.noreply.github.com"
|
email = "7386960+nmasur@users.noreply.github.com"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
selected=$(gh repo list "$organization" \
|
selected=$(gh repo list "$organization" \
|
||||||
--limit 50 \
|
--limit 100 \
|
||||||
--no-archived \
|
--no-archived \
|
||||||
--json=name,description,isPrivate,updatedAt,primaryLanguage \
|
--json=name,description,isPrivate,updatedAt,primaryLanguage \
|
||||||
| jq -r '.[] | .name + "," + if .description == "" then "-" else .description |= gsub(","; " ") | .description end + "," + .updatedAt + "," + .primaryLanguage.name' \
|
| jq -r '.[] | .name + "," + if .description == "" then "-" else .description |= gsub(","; " ") | .description end + "," + .updatedAt + "," + .primaryLanguage.name' \
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
home-manager.users.${config.user}.programs.jujutsu = {
|
home-manager.users.${config.user}.programs.jujutsu = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
|
||||||
|
|
||||||
# https://github.com/martinvonz/jj/blob/main/docs/config.md
|
# https://github.com/martinvonz/jj/blob/main/docs/config.md
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -72,6 +72,12 @@
|
|||||||
fi
|
fi
|
||||||
'');
|
'');
|
||||||
|
|
||||||
|
# Set automatic generation cleanup for home-manager
|
||||||
|
nix.gc = {
|
||||||
|
automatic = config.nix.gc.automatic;
|
||||||
|
options = config.nix.gc.options;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
@ -88,6 +94,34 @@
|
|||||||
# For security, only allow specific users
|
# For security, only allow specific users
|
||||||
settings.allowed-users = [ "@wheel" config.user ];
|
settings.allowed-users = [ "@wheel" config.user ];
|
||||||
|
|
||||||
|
# Enable features in Nix commands
|
||||||
|
extraOptions = ''
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
warn-dirty = false
|
||||||
|
'';
|
||||||
|
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
options = "--delete-older-than 10d";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
|
||||||
|
# Add community Cachix to binary cache
|
||||||
|
# Don't use with macOS because blocked by corporate firewall
|
||||||
|
builders-use-substitutes = true;
|
||||||
|
substituters =
|
||||||
|
lib.mkIf (!pkgs.stdenv.isDarwin) [ "https://nix-community.cachix.org" ];
|
||||||
|
trusted-public-keys = lib.mkIf (!pkgs.stdenv.isDarwin) [
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
];
|
||||||
|
|
||||||
|
# Scans and hard links identical files in the store
|
||||||
|
# Not working with macOS: https://github.com/NixOS/nix/issues/7273
|
||||||
|
auto-optimise-store = lib.mkIf (!pkgs.stdenv.isDarwin) true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,8 @@ in {
|
|||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
age # Encryption
|
age # Encryption
|
||||||
bc # Calculator
|
bc # Calculator
|
||||||
|
delta # Fancy diffs
|
||||||
|
difftastic # Other fancy diffs
|
||||||
dig # DNS lookup
|
dig # DNS lookup
|
||||||
fd # find
|
fd # find
|
||||||
htop # Show system processes
|
htop # Show system processes
|
||||||
|
42
modules/common/shell/work.nix
Normal file
42
modules/common/shell/work.nix
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
|
|
||||||
|
home.packages = let
|
||||||
|
ldap_scheme = "ldaps";
|
||||||
|
magic_number = "2";
|
||||||
|
magic_end_seq = "corp";
|
||||||
|
magic_prefix = "take";
|
||||||
|
ldap_host =
|
||||||
|
"${magic_prefix}${magic_number}.t${magic_number}.${magic_end_seq}";
|
||||||
|
ldap_port = 636;
|
||||||
|
ldap_dc_1 = "${magic_prefix}${magic_number}";
|
||||||
|
ldap_dc_2 = "t${magic_number}";
|
||||||
|
ldap_dc_3 = magic_end_seq;
|
||||||
|
ldap_script = pkgs.writeShellScriptBin "ldap" ''
|
||||||
|
SEARCH_FILTER="$@"
|
||||||
|
ldapsearch -LLL \
|
||||||
|
-B -o ldif-wrap=no \
|
||||||
|
-H "${ldap_scheme}://${ldap_host}:${builtins.toString ldap_port}" \
|
||||||
|
-D "${pkgs.lib.toUpper magic_prefix}${magic_number}\\${
|
||||||
|
pkgs.lib.toLower config.user
|
||||||
|
}" \
|
||||||
|
-w "$(${pkgs._1password}/bin/op item get T${magic_number} --fields label=password)" \
|
||||||
|
-b "DC=${ldap_dc_1},DC=${ldap_dc_2},DC=${ldap_dc_3}" \
|
||||||
|
-s "sub" -x "(cn=$SEARCH_FILTER)" \
|
||||||
|
| jq --slurp \
|
||||||
|
--raw-input 'split("\n\n")|map(split("\n")|map(select(.[0:1]!="#" and length>0)) |select(length > 0)|map(capture("^(?<key>[^:]*:?): *(?<value>.*)") |if .key[-1:.key|length] == ":" then .key=.key[0:-1]|.value=(.value|@base64d) else . end)| group_by(.key) | map({key:.[0].key,value:(if .|length > 1 then [.[].value] else .[].value end)}) | from_entries)' | jq -r 'del(.[].thumbnailPhoto)'
|
||||||
|
'';
|
||||||
|
ldapm_script = pkgs.writeShellScriptBin "ldapm" ''
|
||||||
|
${ldap_script}/bin/ldap "$@" | jq '[ .[].memberOf] | add'
|
||||||
|
'';
|
||||||
|
ldapg_script = pkgs.writeShellScriptBin "ldapg" ''
|
||||||
|
${ldap_script}/bin/ldap "$@" | jq '[ .[].member] | add'
|
||||||
|
'';
|
||||||
|
in [ ldap_script ldapm_script ldapg_script ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -16,6 +16,7 @@
|
|||||||
firefox = "${pkgs.firefox-bin}/Applications/Firefox.app";
|
firefox = "${pkgs.firefox-bin}/Applications/Firefox.app";
|
||||||
discord = "${pkgs.discord}/Applications/Discord.app";
|
discord = "${pkgs.discord}/Applications/Discord.app";
|
||||||
kitty = "${pkgs.kitty}/Applications/kitty.app";
|
kitty = "${pkgs.kitty}/Applications/kitty.app";
|
||||||
|
obsidian = "${pkgs.obsidian}/Applications/Obsidian.app";
|
||||||
slack = "${pkgs.slack}/Applications/Slack.app";
|
slack = "${pkgs.slack}/Applications/Slack.app";
|
||||||
};
|
};
|
||||||
xdg.configFile."hammerspoon/Spoons/MoveWindow.spoon".source =
|
xdg.configFile."hammerspoon/Spoons/MoveWindow.spoon".source =
|
||||||
|
@ -8,10 +8,10 @@ obj.name = "Launcher"
|
|||||||
obj.version = "0.1"
|
obj.version = "0.1"
|
||||||
obj.license = "MIT - https://opensource.org/licenses/MIT"
|
obj.license = "MIT - https://opensource.org/licenses/MIT"
|
||||||
|
|
||||||
local width = hs.screen.mainScreen():fullFrame().w
|
local screen = hs.screen.primaryScreen()
|
||||||
local switcherWidth = 500
|
local switcherWidth = 500
|
||||||
obj.canvas = hs.canvas.new({
|
obj.canvas = hs.canvas.new({
|
||||||
x = width / 2 - switcherWidth / 2,
|
x = (screen:fullFrame().x + screen:fullFrame().w) / 2 - switcherWidth / 2,
|
||||||
y = 1,
|
y = 1,
|
||||||
h = 3,
|
h = 3,
|
||||||
w = switcherWidth,
|
w = switcherWidth,
|
||||||
@ -80,7 +80,7 @@ function obj:init()
|
|||||||
self:switch("Messages.app")
|
self:switch("Messages.app")
|
||||||
end)
|
end)
|
||||||
self.launcher:bind("", "O", function()
|
self.launcher:bind("", "O", function()
|
||||||
self:switch("Obsidian.app")
|
self:switch("@obsidian@")
|
||||||
end)
|
end)
|
||||||
self.launcher:bind("", "P", function()
|
self.launcher:bind("", "P", function()
|
||||||
self:switch("System Preferences.app")
|
self:switch("System Preferences.app")
|
||||||
|
@ -56,7 +56,7 @@ function obj:init()
|
|||||||
local frame = win:frame()
|
local frame = win:frame()
|
||||||
-- maximize if possible
|
-- maximize if possible
|
||||||
local max = win:screen():fullFrame()
|
local max = win:screen():fullFrame()
|
||||||
frame.x = max.w / 2
|
frame.x = (max.x * 2 + max.w) / 2
|
||||||
frame.y = max.y
|
frame.y = max.y
|
||||||
frame.w = max.w / 2
|
frame.w = max.w / 2
|
||||||
frame.h = max.h
|
frame.h = max.h
|
||||||
|
@ -51,6 +51,7 @@ local function worklayout()
|
|||||||
local laptop = {
|
local laptop = {
|
||||||
{ "Firefox", nil, LAPTOP_MONITOR, u(0, 0, 1, 1), nil, nil, visible = true },
|
{ "Firefox", nil, LAPTOP_MONITOR, u(0, 0, 1, 1), nil, nil, visible = true },
|
||||||
{ "Obsidian", nil, LAPTOP_MONITOR, u(0, 0, 1, 1), nil, nil, visible = true },
|
{ "Obsidian", nil, LAPTOP_MONITOR, u(0, 0, 1, 1), nil, nil, visible = true },
|
||||||
|
{ "Calendar", nil, LAPTOP_MONITOR, u(0, 0, 1, 1), nil, nil, visible = true },
|
||||||
}
|
}
|
||||||
local layout = concat(left, right, laptop)
|
local layout = concat(left, right, laptop)
|
||||||
hs.layout.apply(layout)
|
hs.layout.apply(layout)
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
# MacOS-specific settings for Kitty
|
# MacOS-specific settings for Kitty
|
||||||
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
darwinLaunchOptions = [ "--start-as=fullscreen" ];
|
|
||||||
font.size = lib.mkForce 20;
|
font.size = lib.mkForce 20;
|
||||||
settings = {
|
settings = {
|
||||||
shell = "/run/current-system/sw/bin/fish";
|
shell = "/run/current-system/sw/bin/fish";
|
||||||
|
@ -130,10 +130,7 @@
|
|||||||
"com.apple.dock" = {
|
"com.apple.dock" = {
|
||||||
magnification = true;
|
magnification = true;
|
||||||
largesize = 48;
|
largesize = 48;
|
||||||
persistent-apps = let
|
persistent-apps = [
|
||||||
dockText = app:
|
|
||||||
"<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>${app}</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>";
|
|
||||||
in map dockText [
|
|
||||||
"/Applications/1Password.app"
|
"/Applications/1Password.app"
|
||||||
"${pkgs.slack}/Applications/Slack.app"
|
"${pkgs.slack}/Applications/Slack.app"
|
||||||
"/System/Applications/Calendar.app"
|
"/System/Applications/Calendar.app"
|
||||||
@ -201,6 +198,10 @@
|
|||||||
|
|
||||||
echo "Choose and order dock icons"
|
echo "Choose and order dock icons"
|
||||||
defaults write com.apple.dock persistent-apps -array ${persistentApps}
|
defaults write com.apple.dock persistent-apps -array ${persistentApps}
|
||||||
|
|
||||||
|
echo "Reduce Menu Bar padding"
|
||||||
|
defaults write -globalDomain NSStatusItemSelectionPadding -int 6
|
||||||
|
defaults write -globalDomain NSStatusItemSpacing -int 6
|
||||||
'';
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# visidata # CSV inspector
|
visidata # CSV inspector
|
||||||
dos2unix # Convert Windows text files
|
dos2unix # Convert Windows text files
|
||||||
inetutils # Includes telnet
|
inetutils # Includes telnet
|
||||||
youtube-dl # Convert web videos
|
youtube-dl # Convert web videos
|
||||||
@ -16,6 +16,7 @@
|
|||||||
mpv # Video player
|
mpv # Video player
|
||||||
gnupg # Encryption
|
gnupg # Encryption
|
||||||
awscli2
|
awscli2
|
||||||
|
ssm-session-manager-plugin
|
||||||
awslogs
|
awslogs
|
||||||
google-cloud-sdk
|
google-cloud-sdk
|
||||||
vault-bin
|
vault-bin
|
||||||
|
@ -36,23 +36,12 @@
|
|||||||
# Set Nautilus as default for opening directories
|
# Set Nautilus as default for opening directories
|
||||||
xdg.mimeApps = {
|
xdg.mimeApps = {
|
||||||
associations.added."inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
associations.added."inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||||
# associations.removed = {
|
|
||||||
# "inode/directory" = [ "kitty-open.desktop" ];
|
|
||||||
# };
|
|
||||||
defaultApplications."inode/directory" =
|
defaultApplications."inode/directory" =
|
||||||
lib.mkBefore [ "org.gnome.Nautilus.desktop" ];
|
lib.mkBefore [ "org.gnome.Nautilus.desktop" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# # Set default for opening directories
|
|
||||||
# xdg.mime = {
|
|
||||||
# addedAssociations."inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
|
||||||
# removedAssociations = { "inode/directory" = [ "kitty-open.desktop" ]; };
|
|
||||||
# defaultApplications."inode/directory" =
|
|
||||||
# lib.mkForce [ "org.gnome.Nautilus.desktop" ];
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Delete Trash files older than 1 week
|
# Delete Trash files older than 1 week
|
||||||
systemd.user.services.empty-trash = {
|
systemd.user.services.empty-trash = {
|
||||||
description = "Empty Trash on a regular basis";
|
description = "Empty Trash on a regular basis";
|
||||||
|
@ -9,6 +9,14 @@
|
|||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
remotePlay.openFirewall = true;
|
remotePlay.openFirewall = true;
|
||||||
|
package = pkgs.steam.override {
|
||||||
|
# Adapted in part from: https://github.com/Shawn8901/nix-configuration/blob/1c48be94238a9f463cf0bbd1e1842a4454286514/modules/nixos/steam-compat-tools/default.nix
|
||||||
|
# Based on: https://github.com/NixOS/nixpkgs/issues/73323
|
||||||
|
extraEnv = {
|
||||||
|
STEAM_EXTRA_COMPAT_TOOLS_PATHS =
|
||||||
|
lib.makeBinPath [ pkgs.proton-ge-custom ];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
@ -22,11 +30,6 @@
|
|||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Adapted in part from: https://github.com/Shawn8901/nix-configuration/blob/1c48be94238a9f463cf0bbd1e1842a4454286514/modules/nixos/steam-compat-tools/default.nix
|
|
||||||
# Based on: https://github.com/NixOS/nixpkgs/issues/73323
|
|
||||||
environment.sessionVariables.STEAM_EXTRA_COMPAT_TOOLS_PATHS =
|
|
||||||
lib.makeBinPath [ pkgs.proton-ge-custom ];
|
|
||||||
|
|
||||||
# Seems like NetworkManager can help speed up Steam launch
|
# Seems like NetworkManager can help speed up Steam launch
|
||||||
# https://www.reddit.com/r/archlinux/comments/qguhco/steam_startup_time_arch_1451_seconds_fedora_34/hi8opet/
|
# https://www.reddit.com/r/archlinux/comments/qguhco/steam_startup_time_arch_1451_seconds_fedora_34/hi8opet/
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
@ -141,7 +141,7 @@
|
|||||||
format-volume = "<ramp-volume> <label-volume>";
|
format-volume = "<ramp-volume> <label-volume>";
|
||||||
# format-volume-background = colors.background;
|
# format-volume-background = colors.background;
|
||||||
# label-volume-background = colors.background;
|
# label-volume-background = colors.background;
|
||||||
format-volume-foreground = config.theme.colors.base0B;
|
format-volume-foreground = config.theme.colors.base04;
|
||||||
label-volume = "%percentage%%";
|
label-volume = "%percentage%%";
|
||||||
label-muted = " ---";
|
label-muted = " ---";
|
||||||
label-muted-foreground = config.theme.colors.base03;
|
label-muted-foreground = config.theme.colors.base03;
|
||||||
@ -197,7 +197,7 @@
|
|||||||
date = "%d %b %l:%M %p";
|
date = "%d %b %l:%M %p";
|
||||||
date-alt = "%Y-%m-%d %H:%M:%S";
|
date-alt = "%Y-%m-%d %H:%M:%S";
|
||||||
label = "%date%";
|
label = "%date%";
|
||||||
label-foreground = config.theme.colors.base0A;
|
label-foreground = config.theme.colors.base06;
|
||||||
# format-background = colors.background;
|
# format-background = colors.background;
|
||||||
};
|
};
|
||||||
"module/keyboard" = {
|
"module/keyboard" = {
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
if keystatus --shift ; then
|
if keystatus --shift ; then
|
||||||
set timeout=-1
|
set timeout=-1
|
||||||
else
|
else
|
||||||
set timeout=0
|
set timeout=3
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
19
modules/nixos/hardware/iso.nix
Normal file
19
modules/nixos/hardware/iso.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, lib, modulesPath, ... }:
|
||||||
|
{
|
||||||
|
|
||||||
|
# options.iso.enable = lib.mkEnableOption "Enable creating as an ISO.";
|
||||||
|
#
|
||||||
|
# imports = [ "${toString modulesPath}/installer/cd-dvd/iso-image.nix" ];
|
||||||
|
|
||||||
|
# config = lib.mkIf config.iso.enable {
|
||||||
|
#
|
||||||
|
# # EFI booting
|
||||||
|
# isoImage.makeEfiBootable = true;
|
||||||
|
#
|
||||||
|
# # USB booting
|
||||||
|
# isoImage.makeUsbBootable = true;
|
||||||
|
#
|
||||||
|
# };
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
{ config, pkgs, ... }: {
|
{ config, pkgs, lib, ... }: {
|
||||||
|
|
||||||
config = {
|
config = lib.mkIf config.physical {
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ in {
|
|||||||
dns = {
|
dns = {
|
||||||
provider = {
|
provider = {
|
||||||
name = "cloudflare";
|
name = "cloudflare";
|
||||||
api_token = "{env.CF_API_TOKEN}";
|
api_token = "{env.CLOUDFLARE_API_TOKEN}";
|
||||||
};
|
};
|
||||||
resolvers = [ "1.1.1.1" ];
|
resolvers = [ "1.1.1.1" ];
|
||||||
};
|
};
|
||||||
@ -69,18 +69,44 @@ in {
|
|||||||
}];
|
}];
|
||||||
# Allow Caddy to read Cloudflare API key for DNS validation
|
# Allow Caddy to read Cloudflare API key for DNS validation
|
||||||
systemd.services.caddy.serviceConfig.EnvironmentFile =
|
systemd.services.caddy.serviceConfig.EnvironmentFile =
|
||||||
config.secrets.cloudflareApi.dest;
|
config.secrets.cloudflare-api.dest;
|
||||||
|
|
||||||
# API key must have access to modify Cloudflare DNS records
|
# API key must have access to modify Cloudflare DNS records
|
||||||
secrets.cloudflareApi = {
|
secrets.cloudflare-api = {
|
||||||
source = ../../../private/cloudflare-api.age;
|
source = ../../../private/cloudflare-api.age;
|
||||||
dest = "${config.secretsDirectory}/cloudflare-api";
|
dest = "${config.secretsDirectory}/cloudflare-api";
|
||||||
owner = "caddy";
|
owner = "caddy";
|
||||||
group = "caddy";
|
group = "caddy";
|
||||||
};
|
};
|
||||||
|
systemd.services.cloudflare-api-secret.postStop = ''
|
||||||
|
/run/current-system/sw/bin/systemctl restart caddy.service
|
||||||
|
/run/current-system/sw/bin/systemctl restart cloudflare-dyndns.service
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Wait for secret to exist
|
||||||
|
systemd.services.caddy = {
|
||||||
|
after = [ "cloudflare-api-secret.service" ];
|
||||||
|
requires = [ "cloudflare-api-secret.service" ];
|
||||||
|
};
|
||||||
|
|
||||||
# Allows Nextcloud to trust Cloudflare IPs
|
# Allows Nextcloud to trust Cloudflare IPs
|
||||||
services.nextcloud.extraOptions.trusted_proxies = cloudflareIpRanges;
|
services.nextcloud.settings.trusted_proxies = cloudflareIpRanges;
|
||||||
|
|
||||||
|
# Allows Transmission to trust Cloudflare IPs
|
||||||
|
services.transmission.settings.rpc-whitelist =
|
||||||
|
builtins.concatStringsSep "," ([ "127.0.0.1" ] ++ cloudflareIpRanges);
|
||||||
|
|
||||||
|
services.cloudflare-dyndns = {
|
||||||
|
enable = true;
|
||||||
|
proxied = true;
|
||||||
|
apiTokenFile = config.secrets.cloudflare-api.dest;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Wait for secret to exist
|
||||||
|
systemd.services.cloudflare-dyndns = {
|
||||||
|
after = [ "cloudflare-api-secret.service" ];
|
||||||
|
requires = [ "cloudflare-api-secret.service" ];
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
./calibre.nix
|
./calibre.nix
|
||||||
./cloudflare-tunnel.nix
|
./cloudflare-tunnel.nix
|
||||||
./cloudflare.nix
|
./cloudflare.nix
|
||||||
|
./identity.nix
|
||||||
|
./irc.nix
|
||||||
./gitea-runner.nix
|
./gitea-runner.nix
|
||||||
./gitea.nix
|
./gitea.nix
|
||||||
./gnupg.nix
|
./gnupg.nix
|
||||||
|
@ -50,6 +50,7 @@ in {
|
|||||||
dashboards.settings.providers = [{
|
dashboards.settings.providers = [{
|
||||||
name = "test";
|
name = "test";
|
||||||
type = "file";
|
type = "file";
|
||||||
|
allowUiUpdates = true;
|
||||||
options.path = "${
|
options.path = "${
|
||||||
(pkgs.writeTextDir "dashboards/dashboard.json" (builtins.toJSON {
|
(pkgs.writeTextDir "dashboards/dashboard.json" (builtins.toJSON {
|
||||||
annotations = {
|
annotations = {
|
||||||
|
19
modules/nixos/services/identity.nix
Normal file
19
modules/nixos/services/identity.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, ... }: {
|
||||||
|
|
||||||
|
# Wait for secret to be placed on the machine
|
||||||
|
systemd.services.wait-for-identity = {
|
||||||
|
description = "Wait until identity file exists on the machine";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = { Type = "oneshot"; };
|
||||||
|
script = ''
|
||||||
|
for i in $(seq 1 10); do
|
||||||
|
if [ -f ${config.identityFile} ]; then
|
||||||
|
echo "Identity file found."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
sleep 6
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
32
modules/nixos/services/irc.nix
Normal file
32
modules/nixos/services/irc.nix
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{ config, ... }: {
|
||||||
|
|
||||||
|
config = {
|
||||||
|
|
||||||
|
services.thelounge = {
|
||||||
|
public = false;
|
||||||
|
port = 9000;
|
||||||
|
extraConfig = {
|
||||||
|
reverseProxy = true;
|
||||||
|
maxHistory = 10000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Adding new users:
|
||||||
|
# nix shell nixpkgs#thelounge
|
||||||
|
# sudo su - thelounge -s /bin/sh -c "thelounge add myuser"
|
||||||
|
|
||||||
|
# Allow web traffic to Caddy
|
||||||
|
caddy.routes = [{
|
||||||
|
match = [{ host = [ config.hostnames.irc ]; }];
|
||||||
|
handle = [{
|
||||||
|
handler = "reverse_proxy";
|
||||||
|
upstreams = [{
|
||||||
|
dial =
|
||||||
|
"localhost:${builtins.toString config.services.thelounge.port}";
|
||||||
|
}];
|
||||||
|
}];
|
||||||
|
}];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -12,13 +12,14 @@
|
|||||||
maxUploadSize = "50G";
|
maxUploadSize = "50G";
|
||||||
config = {
|
config = {
|
||||||
adminpassFile = config.secrets.nextcloud.dest;
|
adminpassFile = config.secrets.nextcloud.dest;
|
||||||
dbtype = "mysql";
|
dbtype = "pgsql";
|
||||||
};
|
};
|
||||||
extraOptions = {
|
settings = {
|
||||||
default_phone_region = "US";
|
default_phone_region = "US";
|
||||||
# Allow access when hitting either of these hosts or IPs
|
# Allow access when hitting either of these hosts or IPs
|
||||||
trusted_domains = [ config.hostnames.content ];
|
trusted_domains = [ config.hostnames.content ];
|
||||||
trusted_proxies = [ "127.0.0.1" ];
|
trusted_proxies = [ "127.0.0.1" ];
|
||||||
|
maintenance_window_start = 4; # Run jobs at 4am UTC
|
||||||
};
|
};
|
||||||
extraAppsEnable = true;
|
extraAppsEnable = true;
|
||||||
extraApps = with config.services.nextcloud.package.packages.apps; {
|
extraApps = with config.services.nextcloud.package.packages.apps; {
|
||||||
|
@ -48,23 +48,12 @@
|
|||||||
before = [ "paperless.service" ];
|
before = [ "paperless.service" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Fix permissions on a regular schedule
|
|
||||||
systemd.timers.paperless-permissions = {
|
|
||||||
timerConfig = {
|
|
||||||
OnCalendar = "*-*-* *:0/5"; # Every 5 minutes
|
|
||||||
Unit = "paperless-permissions.service";
|
|
||||||
};
|
|
||||||
wantedBy = [ "timers.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Fix paperless shared permissions
|
# Fix paperless shared permissions
|
||||||
systemd.services.paperless-permissions = {
|
systemd.services.paperless-web.serviceConfig.UMask = lib.mkForce "0026";
|
||||||
description = "Allow group access to paperless files";
|
systemd.services.paperless-scheduler.serviceConfig.UMask =
|
||||||
serviceConfig = { Type = "oneshot"; };
|
lib.mkForce "0026";
|
||||||
script = ''
|
systemd.services.paperless-task-queue.serviceConfig.UMask =
|
||||||
find ${config.services.paperless.mediaDir} -type f -exec chmod 640 -- {} +
|
lib.mkForce "0026";
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3,9 +3,17 @@
|
|||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
package = pkgs.postgresql_15;
|
package = pkgs.postgresql_15;
|
||||||
settings = { };
|
settings = { };
|
||||||
identMap = "";
|
authentication = ''
|
||||||
|
local all postgres peer map=root
|
||||||
|
local all admin peer map=admin
|
||||||
|
'';
|
||||||
|
identMap = ''
|
||||||
|
root postgres postgres
|
||||||
|
root root postgres
|
||||||
|
admin ${config.user} admin
|
||||||
|
'';
|
||||||
ensureUsers = [{
|
ensureUsers = [{
|
||||||
name = config.user;
|
name = "admin";
|
||||||
ensureClauses = {
|
ensureClauses = {
|
||||||
createdb = true;
|
createdb = true;
|
||||||
createrole = true;
|
createrole = true;
|
||||||
|
@ -68,6 +68,7 @@
|
|||||||
|
|
||||||
description = "Decrypt secret for ${name}";
|
description = "Decrypt secret for ${name}";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
requires = [ "wait-for-identity.service" ];
|
||||||
serviceConfig.Type = "oneshot";
|
serviceConfig.Type = "oneshot";
|
||||||
script = ''
|
script = ''
|
||||||
echo "${attrs.prefix}$(
|
echo "${attrs.prefix}$(
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
{ config, pkgs, lib, ... }: {
|
{ config, pkgs, lib, ... }: {
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
publicKey = lib.mkOption {
|
publicKeys = lib.mkOption {
|
||||||
type = lib.types.nullOr lib.types.str;
|
type = lib.types.nullOr (lib.types.listOf lib.types.str);
|
||||||
description = "Public SSH key authorized for this system.";
|
description = "Public SSH key authorized for this system.";
|
||||||
default = null;
|
default = null;
|
||||||
};
|
};
|
||||||
@ -28,7 +28,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
users.users.${config.user}.openssh.authorizedKeys.keys =
|
users.users.${config.user}.openssh.authorizedKeys.keys =
|
||||||
lib.mkIf (config.publicKey != null) [ config.publicKey ];
|
lib.mkIf (config.publicKeys != null) config.publicKeys;
|
||||||
|
|
||||||
# Implement a simple fail2ban service for sshd
|
# Implement a simple fail2ban service for sshd
|
||||||
services.sshguard.enable = true;
|
services.sshguard.enable = true;
|
||||||
|
@ -3,37 +3,33 @@
|
|||||||
|
|
||||||
{ config, pkgs, lib, ... }: {
|
{ config, pkgs, lib, ... }: {
|
||||||
|
|
||||||
options = {
|
|
||||||
transmissionServer = lib.mkOption {
|
|
||||||
type = lib.types.nullOr lib.types.str;
|
|
||||||
description = "Hostname for Transmission";
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = let
|
config = let
|
||||||
namespace = config.networking.wireguard.interfaces.wg0.interfaceNamespace;
|
namespace = config.networking.wireguard.interfaces.wg0.interfaceNamespace;
|
||||||
vpnIp = lib.strings.removeSuffix "/32"
|
vpnIp = lib.strings.removeSuffix "/32"
|
||||||
(builtins.head config.networking.wireguard.interfaces.wg0.ips);
|
(builtins.head config.networking.wireguard.interfaces.wg0.ips);
|
||||||
in lib.mkIf (config.transmissionServer != null) {
|
in lib.mkIf config.services.transmission.enable {
|
||||||
|
|
||||||
# Setup transmission
|
# Setup transmission
|
||||||
services.transmission = {
|
services.transmission = {
|
||||||
enable = true;
|
|
||||||
settings = {
|
settings = {
|
||||||
port-forwarding-enabled = false;
|
port-forwarding-enabled = false;
|
||||||
rpc-authentication-required = true;
|
rpc-authentication-required = true;
|
||||||
rpc-port = 9091;
|
rpc-port = 9091;
|
||||||
rpc-bind-address = "0.0.0.0";
|
rpc-bind-address = "0.0.0.0";
|
||||||
rpc-username = config.user;
|
rpc-username = config.user;
|
||||||
rpc-host-whitelist = config.transmissionServer;
|
# This is a salted hash of the real password
|
||||||
|
# https://github.com/tomwijnroks/transmission-pwgen
|
||||||
|
rpc-password = "{c4c5145f6e18bcd3c7429214a832440a45285ce26jDOBGVW";
|
||||||
|
rpc-host-whitelist = config.hostnames.transmission;
|
||||||
rpc-host-whitelist-enabled = true;
|
rpc-host-whitelist-enabled = true;
|
||||||
rpc-whitelist = "127.0.0.1,${vpnIp}";
|
rpc-whitelist = lib.mkDefault "127.0.0.1"; # Overwritten by Cloudflare
|
||||||
rpc-whitelist-enabled = config.wireguard.enable;
|
rpc-whitelist-enabled = true;
|
||||||
};
|
};
|
||||||
credentialsFile = config.secrets.transmission.dest;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Configure Cloudflare DNS to point to this machine
|
||||||
|
services.cloudflare-dyndns.domains = [ config.hostnames.transmission ];
|
||||||
|
|
||||||
# Bind transmission to wireguard namespace
|
# Bind transmission to wireguard namespace
|
||||||
systemd.services.transmission = lib.mkIf config.wireguard.enable {
|
systemd.services.transmission = lib.mkIf config.wireguard.enable {
|
||||||
bindsTo = [ "netns@${namespace}.service" ];
|
bindsTo = [ "netns@${namespace}.service" ];
|
||||||
@ -45,17 +41,22 @@
|
|||||||
|
|
||||||
# Create reverse proxy for web UI
|
# Create reverse proxy for web UI
|
||||||
caddy.routes = lib.mkAfter [{
|
caddy.routes = lib.mkAfter [{
|
||||||
group = if (config.hostnames.download == config.transmissionServer) then
|
group =
|
||||||
"download"
|
if (config.hostnames.download == config.hostnames.transmission) then
|
||||||
else
|
"download"
|
||||||
"transmission";
|
else
|
||||||
|
"transmission";
|
||||||
match = [{
|
match = [{
|
||||||
host = [ config.transmissionServer ];
|
host = [ config.hostnames.transmission ];
|
||||||
path = [ "/transmission*" ];
|
path = [ "/transmission*" ];
|
||||||
}];
|
}];
|
||||||
handle = [{
|
handle = [{
|
||||||
handler = "reverse_proxy";
|
handler = "reverse_proxy";
|
||||||
upstreams = [{ dial = "localhost:9091"; }];
|
upstreams = [{
|
||||||
|
dial = "localhost:${
|
||||||
|
builtins.toString config.services.transmission.settings.rpc-port
|
||||||
|
}";
|
||||||
|
}];
|
||||||
}];
|
}];
|
||||||
}];
|
}];
|
||||||
|
|
||||||
@ -79,14 +80,6 @@
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
# Create credentials file for transmission
|
|
||||||
secrets.transmission = {
|
|
||||||
source = ../../../private/transmission.json.age;
|
|
||||||
dest = "${config.secretsDirectory}/transmission.json";
|
|
||||||
owner = "transmission";
|
|
||||||
group = "transmission";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
{ config, pkgs, lib, ... }: {
|
{ config, pkgs, lib, ... }: {
|
||||||
|
|
||||||
# This setting only applies to NixOS, different on Darwin
|
# This setting only applies to NixOS, different on Darwin
|
||||||
nix.gc.dates = "03:03"; # Run every morning (but before upgrade)
|
nix.gc.dates = "09:03"; # Run every morning (but before upgrade)
|
||||||
|
|
||||||
# Update the system daily by pointing it at the flake repository
|
# Update the system daily by pointing it at the flake repository
|
||||||
system.autoUpgrade = {
|
system.autoUpgrade = {
|
||||||
enable = config.server; # Only auto upgrade servers
|
enable = config.server; # Only auto upgrade servers
|
||||||
dates = "03:33";
|
dates = "09:33";
|
||||||
flake = "git+${config.dotfilesRepo}";
|
flake = "git+${config.dotfilesRepo}";
|
||||||
randomizedDelaySec = "25min";
|
randomizedDelaySec = "25min";
|
||||||
operation = "switch";
|
operation = "switch";
|
||||||
allowReboot = true;
|
allowReboot = true;
|
||||||
rebootWindow = {
|
rebootWindow = {
|
||||||
lower = "00:01";
|
lower = "09:01";
|
||||||
upper = "06:00";
|
upper = "11:00";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ config, lib, ... }: {
|
{ config, pkgs, lib, ... }: {
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
|
||||||
@ -31,11 +31,22 @@
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Allow writing custom scripts outside of Nix
|
||||||
|
# Probably shouldn't make this a habit
|
||||||
|
environment.localBinInPath = true;
|
||||||
|
|
||||||
home-manager.users.${config.user}.xdg = {
|
home-manager.users.${config.user}.xdg = {
|
||||||
|
|
||||||
# Allow Nix to manage the default applications list
|
# Allow Nix to manage the default applications list
|
||||||
mimeApps.enable = true;
|
mimeApps.enable = true;
|
||||||
|
|
||||||
|
# Create a desktop option for Burp
|
||||||
|
desktopEntries.burp = lib.mkIf pkgs.stdenv.isLinux {
|
||||||
|
name = "Burp";
|
||||||
|
exec = "${config.homePath}/.local/bin/burp.sh";
|
||||||
|
categories = [ "Application" ];
|
||||||
|
};
|
||||||
|
|
||||||
# Set directories for application defaults
|
# Set directories for application defaults
|
||||||
userDirs = {
|
userDirs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -22,7 +22,7 @@ let
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
in {
|
in {
|
||||||
caddy-cloudflare = prev.buildGo120Module {
|
caddy-cloudflare = prev.buildGo122Module {
|
||||||
pname = "caddy-cloudflare";
|
pname = "caddy-cloudflare";
|
||||||
version = prev.caddy.version;
|
version = prev.caddy.version;
|
||||||
runVend = true;
|
runVend = true;
|
||||||
@ -31,7 +31,7 @@ in {
|
|||||||
|
|
||||||
src = prev.caddy.src;
|
src = prev.caddy.src;
|
||||||
|
|
||||||
vendorHash = "sha256:pr2MI2Nv9y357lCEEh6aNdmD9FiCaJIkRfHaoWgdQIE=";
|
vendorHash = "sha256-zeuvCk7kZa/W/roC12faCQDav4RB8RT1dR2Suh2yjD8=";
|
||||||
|
|
||||||
overrideModAttrs = (_: {
|
overrideModAttrs = (_: {
|
||||||
preBuild = ''
|
preBuild = ''
|
||||||
|
13
overlays/kitty-scrollback-nvim.patch
Normal file
13
overlays/kitty-scrollback-nvim.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/lua/kitty-scrollback/health.lua b/lua/kitty-scrollback/health.lua
|
||||||
|
index 9d87dfa..a231b8d 100644
|
||||||
|
--- a/lua/kitty-scrollback/health.lua
|
||||||
|
+++ b/lua/kitty-scrollback/health.lua
|
||||||
|
@@ -234,7 +234,7 @@ local function check_kitty_debug_config()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function check_kitty_scrollback_nvim_version()
|
||||||
|
- local current_version = nil
|
||||||
|
+ local current_version = 'master'
|
||||||
|
local tag_cmd = { 'git', 'describe', '--exact-match', '--tags' }
|
||||||
|
local ksb_dir =
|
||||||
|
vim.fn.fnamemodify(vim.api.nvim_get_runtime_file('lua/kitty-scrollback', false)[1], ':h:h')
|
@ -16,26 +16,38 @@ let
|
|||||||
|
|
||||||
in {
|
in {
|
||||||
|
|
||||||
nvim-lspconfig = withSrc prev.vimPlugins.nvim-lspconfig inputs.nvim-lspconfig;
|
vimPlugins = prev.vimPlugins // {
|
||||||
cmp-nvim-lsp = withSrc prev.vimPlugins.cmp-nvim-lsp inputs.cmp-nvim-lsp;
|
|
||||||
null-ls-nvim = withSrc prev.vimPlugins.null-ls-nvim inputs.null-ls-nvim;
|
|
||||||
comment-nvim = withSrc prev.vimPlugins.comment-nvim inputs.comment-nvim;
|
|
||||||
nvim-treesitter =
|
|
||||||
withSrc prev.vimPlugins.nvim-treesitter inputs.nvim-treesitter;
|
|
||||||
telescope-nvim = withSrc prev.vimPlugins.telescope-nvim inputs.telescope-nvim;
|
|
||||||
telescope-project-nvim = withSrc prev.vimPlugins.telescope-project-nvim
|
|
||||||
inputs.telescope-project-nvim;
|
|
||||||
toggleterm-nvim =
|
|
||||||
withSrc prev.vimPlugins.toggleterm-nvim inputs.toggleterm-nvim;
|
|
||||||
bufferline-nvim =
|
|
||||||
withSrc prev.vimPlugins.bufferline-nvim inputs.bufferline-nvim;
|
|
||||||
nvim-tree-lua = withSrc prev.vimPlugins.nvim-tree-lua inputs.nvim-tree-lua;
|
|
||||||
fidget-nvim = withSrc prev.vimPlugins.fidget-nvim inputs.fidget-nvim;
|
|
||||||
|
|
||||||
# Packaging plugins entirely with Nix
|
nvim-lspconfig =
|
||||||
baleia-nvim = plugin "baleia-nvim" inputs.baleia-nvim-src;
|
withSrc prev.vimPlugins.nvim-lspconfig inputs.nvim-lspconfig-src;
|
||||||
hmts-nvim = plugin "hmts-nvim" inputs.hmts-nvim-src;
|
cmp-nvim-lsp = withSrc prev.vimPlugins.cmp-nvim-lsp inputs.cmp-nvim-lsp-src;
|
||||||
kitty-scrollback-nvim =
|
comment-nvim = withSrc prev.vimPlugins.comment-nvim inputs.comment-nvim-src;
|
||||||
plugin "kitty-scrollback-nvim" inputs.kitty-scrollback-nvim-src;
|
nvim-treesitter =
|
||||||
|
withSrc prev.vimPlugins.nvim-treesitter inputs.nvim-treesitter-src;
|
||||||
|
telescope-nvim =
|
||||||
|
withSrc prev.vimPlugins.telescope-nvim inputs.telescope-nvim-src;
|
||||||
|
telescope-project-nvim = withSrc prev.vimPlugins.telescope-project-nvim
|
||||||
|
inputs.telescope-project-nvim-src;
|
||||||
|
toggleterm-nvim =
|
||||||
|
withSrc prev.vimPlugins.toggleterm-nvim inputs.toggleterm-nvim-src;
|
||||||
|
bufferline-nvim =
|
||||||
|
withSrc prev.vimPlugins.bufferline-nvim inputs.bufferline-nvim-src;
|
||||||
|
nvim-tree-lua =
|
||||||
|
withSrc prev.vimPlugins.nvim-tree-lua inputs.nvim-tree-lua-src;
|
||||||
|
fidget-nvim = withSrc prev.vimPlugins.fidget-nvim inputs.fidget-nvim-src;
|
||||||
|
nvim-lint = withSrc prev.vimPlugins.nvim-lint inputs.nvim-lint-src;
|
||||||
|
|
||||||
|
# Packaging plugins entirely with Nix
|
||||||
|
base16-nvim = plugin "base16-nvim" inputs.base16-nvim-src;
|
||||||
|
baleia-nvim = plugin "baleia-nvim" inputs.baleia-nvim-src;
|
||||||
|
hmts-nvim = plugin "hmts-nvim" inputs.hmts-nvim-src;
|
||||||
|
kitty-scrollback-nvim = prev.vimUtils.buildVimPlugin {
|
||||||
|
pname = "kitty-scrollback-nvim";
|
||||||
|
src = inputs.kitty-scrollback-nvim-src;
|
||||||
|
version = "master";
|
||||||
|
patches = [ ./kitty-scrollback-nvim.patch ];
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,16 @@
|
|||||||
inputs: _final: prev: {
|
inputs: _final: prev: {
|
||||||
proton-ge-custom = prev.stdenv.mkDerivation (finalAttrs: rec {
|
proton-ge-custom = prev.stdenv.mkDerivation (finalAttrs: rec {
|
||||||
name = "proton-ge-custom";
|
name = "proton-ge-custom";
|
||||||
version = "0.1"; # Made up
|
version = prev.lib.removeSuffix "\n" (builtins.head
|
||||||
|
(builtins.match ".*GE-Proton(.*)"
|
||||||
|
(builtins.readFile "${inputs.proton-ge}/version")));
|
||||||
src = inputs.proton-ge;
|
src = inputs.proton-ge;
|
||||||
|
# Took from https://github.com/AtaraxiaSjel/nur/blob/cf83b14b102985a587a498ba2c56f9f2bd9b9eb6/pkgs/proton-ge/default.nix
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
runHook preBuild
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp -r ${src}/* -t $out/bin/
|
cp -r ${src}/* -t $out/bin/
|
||||||
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBhNzEr
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBDNTh4
|
||||||
aFRkQ3luWWhBbmdTTEtNOGc0c3ZPcTlRbktxd2xQZHFyMDF1c1ZVCkMwWDF5UlJH
|
dERZY3Q1cyt6d2RwODR3aWd0dUx6UUR6WWUxUERFV3Zwb1lVU0MwClZZTzY1bXd4
|
||||||
RTBhMXI0ZEhkQm5takh0QUpiZm5rbTk3M3REdUhQV0lOdmMKLT4gc3NoLWVkMjU1
|
dnVMS2haWnA3dURhZFgyWFR0c0J1SGhvUEZ3OFJtTmJObzgKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIHdGOVptZzNIRlp1NUlFY1k2b1FtN3JRczMrZ054ZlhUbVlvRVVS
|
MTkgWXlTVU1RIFNMSWJZSCtzTTBlbm4zd0hJWXJSYWdJcUd3RGY1ZkZWTmJPZGtz
|
||||||
NEZCaTQKUmMwWFBBVDdBMlBpekVCSC9EMERHdXlKNGpubXRmY0FxalRxbTNnREky
|
Ym0yUVEKWnFtSDVNZDNNd0FBUURmN1ZJbnJjNlNIdVduM1hSRmlGNlVVMWliOUE0
|
||||||
ZwotPiBzc2gtZWQyNTUxOSBuanZYNUEgeGhzMDRONFJjMEJZWUlDeHp6SHZERXJS
|
SQotPiBzc2gtZWQyNTUxOSBuanZYNUEgVEVlTkFidE1UWnh2NGJibDR6dkh6aEZY
|
||||||
VjNLb25adVJ2V0MxMm9DUE5Gawo2RlhSNDY3K2oyQ2VGZ3p1MHRreU0ydmZjRkZQ
|
eElpWE81UUNQcHlVc0JXU2RqUQpneC9ueFFVTldVZzhjN3NrK05IcXhrY1BHempF
|
||||||
bHZsbkxXdzNsN1A2alBBCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBqL2FWZis5N2l6
|
R0p2RVA3bi9XN2dVaXprCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBlR2RlN0dsQkNZ
|
||||||
T0lYUVRBcDBWQ0sxRFd5V3JydzVTVUZZaDZyL1ZGaUJvClRPazdXOWM5MUhrLys4
|
R2Ixd0YwdnE0dkhIa1RucUlOWTBLMlJRMVVuOUoreUZJClcwWDdwZVlrSkZWZ1BT
|
||||||
OWp2SVg5S0pnVE51MzRwMU1hRThKVFJZSHJzY1kKLS0tIGl1UjBtUzhVZTArZkVt
|
WjBWK2RNUDFKdXNibVJUQlVhdGs1Yk9IdC92UDAKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
RVhMMlJNQVlBS0Z5bTByQ1hpSGQvZVprL29oS0UKZGsWBbEUiDIJhoBOEaLF7cnW
|
Y1p3IGNDM1RiVWtWU1FsaG1tQVVkeGtyYlJzZldHUkZnelozVFVQcG1XQ1hSVmsK
|
||||||
FMcg1pxgmlioqsRbKdcYlZWEKDYUa0ZctJEYo0m+eGxilTV/qctyiEIYsoKU1t0Y
|
MFRMS2dNL01VY3pJVWtCWlZmM21BcFZvM1c1djdCcUxCcnQzYTJuV3FDdwotLS0g
|
||||||
+kCTYQk+RbtKfQ7xEStmJ2cdZDE=
|
MU5LTzREZ2p0dW1RMWhsWExHb1FtRUJlL0pUdFpKRThpWnVTYS8zbVdIRQrUKXp+
|
||||||
|
0HWMPJHIieCvle5qXgzr4iMUL9VxH9ydVl6gkOLM/r7DO36kVkgqr4whSsk8mihY
|
||||||
|
boq66cjj1dUVij2fMD3zf62n948EQnPZHIBwnDS05eOW4A==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBRckNo
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBkckt3
|
||||||
MkttVHF3WWhKMGtCY1ZoL251SlhEb0YxUEZSSDBLVHhQK3o1QW1rCkp5WHFTb0xE
|
c1NtVEo1bm1XREk2ZE9PL1FkOFd0LzQ1R0J4TXN4VGd2clVrZ25NCjZKenFTdHFK
|
||||||
amRrM05XRGxzMkRPUWx3Z1BVMFRsRGxvemRLckZEY0E0QmMKLT4gc3NoLWVkMjU1
|
MWVZSXI0NXdVTkhJQXRFRFBRRnIxRHZaOHY1UWVDYW9vTm8KLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIEhrV0E4b3VkOUZwYjBXTkF3UUhVVklLWXF0QkpYRjErY1l2dnFh
|
MTkgWXlTVU1RIHBmRERwcXdGanBVV0JOczg0Q0hOa1dVM09EeGMxWmJDMm9YU2Mx
|
||||||
VWZvVkEKUGd2VGtVaEFqc0lpZS9Jd0pSQ2IydHBUN1JWTGE4MzZZT2RXRUt2eVFI
|
djhxQkUKS2U2aHVza2JNdzltRW5wcWhqaTVPUEZoZGNWN2szQXlVYjZ3eXpwc2ZE
|
||||||
YwotPiBzc2gtZWQyNTUxOSBuanZYNUEgelFPWGtneFhDWmFoc2FIL0RwejZuS3Zr
|
OAotPiBzc2gtZWQyNTUxOSBuanZYNUEgbWU0WXA4RjVZWFdPcXZ5M1UwT3lON1JD
|
||||||
ZzBUREMvTUtpYlNqdmV0cHBscwpOMitLS1NoVkZwYmZFcnJRWkRWVFJ4Sm1oTmhG
|
cGhlRXZ2NEhWMHdEMitLWERqRQpKRGgwMUhISWE1Uk1ka1dteGo0dlhZcmNjVjN6
|
||||||
WHRjaWQvZWNLcVl5ZURvCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBRMTdyOTRWV3NQ
|
QmJBQWo0Mko4aE5jUm9rCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBLaU9sSmRzMlFG
|
||||||
T1I0Wk1jOE5KSVFFaUEwTm9iRElCd1pscG80czF1U0E4CmREU3BNVklzOXZKVFFp
|
NjBYYTBYeFErNXJwZGVtZ1kvVmVCOXBDZWVoNWhDZ2hrCnE2dkJJSk8rbDRvSHYy
|
||||||
UWRoYXp2UXRxR2ZhbzlYSng5akV5Zy9hZC9uWHcKLS0tIFFjdE5KN2lxMFQ2emJh
|
bEVTdXg0VTg1RzZUNi84K1ZvOVB2aUJzNHVPRkEKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
d1NwRm8xaHpZNGxQbFUzSTh3MWxJRXViUjVBUFkKr/OxDAiV2XR3YZDdT1DSPUPk
|
Y1p3IEM0Mnlockc2SlA1bXJhdnpQNXFnQ2w5bzFSTWpIajJybTBIM3VuNTN5bFUK
|
||||||
XQrbpI/urpfXPyQAzXH2IwqRU2H56JHH2Q+z1OK6/BDzpxyFf1HmK/N9p/00osK5
|
bXNIUVVhTzlRMUJTSEpJUURUMXZjRU5zczNjYnBUVVFmMDVEZllONjFjWQotLS0g
|
||||||
WPeBVcNDMmWD/RlgEyooxyajK6Q=
|
NXdIUWduN2Q2eXFzNlFueFR6OWxITVBranpsNTdXaktiSFZ0TTBxRFNlNAr9JzVO
|
||||||
|
Rhx5rG7CSGdYfeMcuzye4jyE2yiVKi5TVr/qp3vbDpyDQKZLlAUSF/K0rTY9K7Rm
|
||||||
|
ocY+y/V9ffh3LO2m1Y6BkRqWRJ7v4wcsc3jNGjDHlSB7EqnOwMCXyQAg
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyB6R2Vp
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBYY0c1
|
||||||
T2d4eDRDdGdIZVdZelRUY09oRWtwTFpDbGFEKytiOGxxQjgwakRrCnBveWptbm5P
|
bldPMVdwRGhia0xzNm1mSGQ0eVVZZzFLMWVUdFhYVW1KY3QwTERJCm1UUDBqN1Jr
|
||||||
Q2lkaG4vSWZkS0RjM0VuUWtsalovZkJVamJzV1pWbGlDTzAKLT4gc3NoLWVkMjU1
|
VjRlSjROTFZEQ3UrME81Y2FyRkxjZHFvUFN1eEZNa2cwWkUKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIEtuMnZvcGExWmJZU0tsdTJXa0ljeXYzOEJKV1Qrc0xNSnE0emJI
|
MTkgWXlTVU1RIFM4ZURETk0yQ1NKN3owaDB5S3djeThtWkphS0xUaVd2MnBlS244
|
||||||
czdQbjgKM0NFc29UZTFUbVVrbFIzUDZhUlkrbGxSSXl6SldnYXh6a0hXSVlHQ25v
|
d0V5bUUKKzE5UzZYUlpwTy9ydFQ3L2NmWFZBMEZCWWppYlFZQzhTVFhUc3BBRlpR
|
||||||
TQotPiBzc2gtZWQyNTUxOSBuanZYNUEgc3R0Qjh0Vy9mSnR1eE5rajU5ZG56OFVR
|
dwotPiBzc2gtZWQyNTUxOSBuanZYNUEgbS9HaVFFRjU4VzMvSVZ1SlExZ1BBNWxK
|
||||||
UUNLYmJyVHYxcUlsbzlTVGRUNApzcW4xVXp3dTVaVmhnVXdoUnZ2MlNESnUvVVk0
|
RVRESEVmeWxyMW5Pclk5UU4xOApaZ0hHMnlsb1BuMThsTG82d1k1Rm94VEFMcTBH
|
||||||
ZkRFVVBhdjZsMzhHRzZvCi0+IHNzaC1lZDI1NTE5IENxSU9VQSA1MW8wdXBYdXBl
|
TFoxRWpRSXJWQUJVWGN3Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBOK1AvRW5nNUlK
|
||||||
VjM3Ukc4U2tSWFc2WDJaVWo3aldvazgwckJBZXVKbkFVCjFaaHhENHVQOWx3Q25F
|
NnB1UDhKdmFibTEwV2JhOGxKRGg1SnlMdytXaVQ1eW1NCnVIcjNnclVMSEJ3eDVk
|
||||||
NnBnSXNJRjlwWk0zLzY1NVE2Z1M3dFhLMzVBT2sKLS0tIDk4TTBhNHpjS2lPRTlk
|
eExnY1EvbWg1OW4xR3FydDlzeUdLQW11UGRmclkKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
VllRbmV4YU9xYUtEaVNWRVRrb2ZheSthWTAxcVEK9nC0bUWE1W8lmXZABR8IJAnI
|
Y1p3IHNxbDlpSkpPdEZVRGhwV3NKdTNJV0NTeUZoVVg3b0ZlRWdqelNaTDRWamMK
|
||||||
to/at+EBAj4gV+UvTpqBmQ9xy5q9ih+L9VH+WolUQg5To5nzSKDbhwybzwEj1YUd
|
N1czMXlEcWZzQ1g0dkxBTnNUQjdTdnZMUE9VRGphTjB4SjJyemJiU2w5NAotLS0g
|
||||||
5Oqm1waFqasvLe4tNkNZ1aEVbc5VFY6OBCw3nVRESVR8AeuDnL8rRZyYpZjEwCZu
|
VlgyN24vMGl3a2N6ZGs1SjhOZmttWEl3WEFOK29EOUlkZ0N3blBBcHZQOArP/uJx
|
||||||
Qay0cQUSJPJQIKES/UzSrUj+HAw2LxPPAZ9xrDa+QuU36RfPHzmAoVMZ82MxtLxf
|
SBFvBV0rLzRbo/8nhhizuT2TtKsJSJDIsFJxAOtF8ZwIbYwauBt1tJudtJaXgbv5
|
||||||
vLgxoUM9INybdIoBncihj90U+o8PC8Mud2DBm/FGkx0=
|
JIk53sS3lelOwH11yx0aGcBNCR2UwpuYn1IwoW0qrt3ugi8rmQPRG8c8gSyNn2u7
|
||||||
|
PnAj/NdAjieLGGLltwdq2wJhkbv800WmKx5sGgPNT1AdBS1b84h5ipQFnFf3Fi0N
|
||||||
|
FJa9/j5qc7JtWEy4ecU6D03zcZD+CTCoN8SIW4+fldos1u7N2v2X5/YUw7T6jQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyA0bkg4
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBuU1BO
|
||||||
WkZTODJsOFN0RGtzQ0F5RzhmQ0ViUDBobXEvVFFidXNtNTRaSFI4CjBraW5mUmgy
|
ZGdOVFRTekN3SFRhQWYwcWt6OHpLZXM0aENsQ3d1VWpxYUhXN3k4CnNwNWpQcU90
|
||||||
QzJPOStxdmRXSVY4NlNkZUUrcThGUUhpZUFxVm0yVENoNVkKLT4gc3NoLWVkMjU1
|
elR0eWVyMWFUUkhORFRQeVdsdTErWUgzNW9mN1BWS2szbUUKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIDc4MCttZk5aUlNoVjZZY2RwVW54SE8xT2gyYk5KSXFFQjFjT2ln
|
MTkgWXlTVU1RIDRRS0VESG5NNWpxbm1DTjBkY2ExR3I3aE1PUTNVTXBFZ2wwVC9j
|
||||||
aUNhZ1UKSTJzdTJTTXBPZTVYVXRMb1M0c3FtSDlyd2MvdVdHYURMSHV1WUF0TTZT
|
WDIrMTgKaXkwWk1xRWp6Z3c3NFZZS0cybHFqcUVRczNMZ05tSmxPNjBlVmRHK2h3
|
||||||
MAotPiBzc2gtZWQyNTUxOSBuanZYNUEgeEd6Zy9CYWRKUFNjUHRZd3ZEMmR4VCtK
|
SQotPiBzc2gtZWQyNTUxOSBuanZYNUEgYWI1SkhBZ0Jrb3hzbDRwcnRMeHhGSlpB
|
||||||
cGR5UWdFSmRyLy9iblpJNVRtbworVEdkL01YazZyZHA0NmRXKzl1NTIyM0FZK2hW
|
aWt5ZmRxaGhmbXFDQWdNamxRbwpXMWo0TjZhbHM3ejFYNVU5WlkxWTJSbVBPOEhr
|
||||||
emlKWGhiUjl1T3lpcVhZCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBBN21XTy9qQldX
|
MUt3akxMU3QzN3Z4M0lFCi0+IHNzaC1lZDI1NTE5IENxSU9VQSA1dmdFRE1QSU55
|
||||||
enRxcE5pSVl2YXQwckIyQ1NueG5lbk1neGpDdThkSm5ZCm9HZlB2dWpSUWkrZUht
|
WUVuOU9OTHJjM0RxVWhmTlEvdk1mNU1iUEwyNlFqRFZvCldleVNGQ1RZdU1tU2J2
|
||||||
S21wMDE4anZrMUdSUUdnTFJmWnhXUks2ZmhyQzAKLS0tIE5JekNmSkdjUHcxeDdP
|
dWxGZlVkaDBWNEZRUFNBcEIvTEdkODdDS25GdGsKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
YVpLODlCemZkallwODRlOVVaOEk0UEVYY0Nxd00Km4HzHO0ciIVLi9jVf1WL0v70
|
Y1p3IG5SbVpVZldPSkJXYm9BZ3B6OXZXMlB4T2Z5RHptR1pqbVRVUS9LVEZyUzgK
|
||||||
9tdZZIXF1aklkmvwpKZyIBSJc2cDm583czRyrhy5/W2h2xLYSOXdL0NVKJyVgJj2
|
ZlVTZWlUQ2VoWVNuOGE5Wk5vZGdVVldzbUZKRERyUFN0eVJ4TWpmL2gwcwotLS0g
|
||||||
Y8Iq3+nLStZ8p0TL9MuFyY5HXkQpJzFeIrdFRj2vcQPVP1txZd90se8WrUP4k/9h
|
MlJmTlVkdHhHQ25JWm0xVmdjVDFYM1lHaE9WdnJSVkVMMnNwV0c4eXc0QQpYTchD
|
||||||
xrC+MHllDYR5lDXhAUhS42y746Ixm3iabVlPDzcccPJS7nvT4w5HBwkhWaVvb1/1
|
DCiEm4rOav4/IwK26gSgi2B4qq4RETyAbF4oa87cvFM8zVXo7W8nF+eWzeWGNZrc
|
||||||
cHD2guHpi4e3BbT5ozKADmOHajfjRy+j+gwFTl0AjGg=
|
yRFfOYf4gtlNCVLc+UAapvM1rKuw1IOQeJLAwGCHygXKWY7zSXdT2ERACXESvCCz
|
||||||
|
b7W62NVx0Pc4mAAQB3QU995HFVFuHLa939PPPlkgxqepNWCKrmUFl/qjRpOoVrV6
|
||||||
|
GwRgIo36PhcfZVCswyVXgcc4M3CCG5ZuWInuuljqTB70OzBVkKCaUeiRaRIZJg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBEVnpD
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBMMDZj
|
||||||
S3FrMlhVZXpEZ1IzMVJpTGh3UnUyaEo0VU5iR01JL0dKVWpCUGpjCmdoWHUzRzBh
|
dkdOSTc1bHgybjAwcUVHUXFhY0I0NE45K1B5SEh4NGN4T0tpREhjCnViQzVXTVk3
|
||||||
NCtMK25aNG8rVktpcDFkVW9yd1dOSExxNUo5RG9CWDgyUzgKLT4gc3NoLWVkMjU1
|
dzB5ZEY5d1hvcHVDSXVubElOdEVQQ0Fja2dnL0ZnVG4wNEUKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIE41U2Y5QUwxZVYxTEVCVlczMjlUWmxYbG5oOEd1YnR2UUJOZ0hG
|
MTkgWXlTVU1RIHRiVkNzRCs4V3EvL2szNG8zSlRYSVloRlVsSTk3a0hnSFMyUzRN
|
||||||
ZU9GemMKaS9pYzQvSG1yR242UDlFQ2M4U0F0YjlHSzZBOUtvRCsybmhOclJkZkI1
|
K0lyMzQKWDhIOTVzMGJkaGpVQmNtS0pPQnNTSjRmK1dYck1SUFd5VnVvYnJSWkhs
|
||||||
OAotPiBzc2gtZWQyNTUxOSBuanZYNUEgUVdES1BCdFljL2JRTzJSSWpFcWw2b2hQ
|
YwotPiBzc2gtZWQyNTUxOSBuanZYNUEgUy9kWmxsc0p2L0pFWDlPMGlzeVBHNjJ2
|
||||||
MFZqZTlyWC8rSzZ6RnI3ckdHbwo0cnBDNHdVNWFlMmxCZEVHWW9Tb2ZQMXc3WGw4
|
a05ycmZtbUJrOXRBVVgxVjVtZwo4RVM3Sms2M2krdjU0K1ZHREhhRkdMcENTbTJr
|
||||||
WUszNUc5aTk2MDVERXRrCi0+IHNzaC1lZDI1NTE5IENxSU9VQSB6VXJBMit0UytG
|
UEh6cWcvOGNIRUNJZUFvCi0+IHNzaC1lZDI1NTE5IENxSU9VQSA5d0FwTWJzZEpJ
|
||||||
N1l4cHd6cTZudlBzWEcvNkhHVldOMnQvK2JWWVh4VGhJCmh0VVUrd0dEMk9XNVlD
|
UEJaZi91YXZOOFhGVlVVekEvSVRnK3Y2VFdhL216SVZrCkRURE9OYnIvSGVtMWNl
|
||||||
eERYc1VtdjBHUEZZQ0pNWjF1aXRmUTFZc0phaDAKLS0tIHhVVTFDcjVucElUOHlw
|
MWFGSTEwUVBITTlnaWVXc1hpMFpqdFdMcFY2NHMKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
T0VMUWVTL0R5ek16VmlDY1dZWGk2aWV3TjdQMVkKbBB/Ixe0nuEQ4WkOguVk6oRI
|
Y1p3IDhkUk9KTE1UMysvajY3WEx5MFdLeEdlVnBmSUx6TTlnYWdqaWorYm0rRGMK
|
||||||
h7gasRs0CYNvKoIjAf66tJ4IC6CumJIo2JRkH0CU94nOJhPqdPL5VS2IrJOznrWY
|
SlhaRFNLaTZHVkpRR3U5eE5JOTBPWWM3OTFka1ZWSHJMaFFhZG1CSzNVTQotLS0g
|
||||||
bZolkeTJxq+IDUZVTNk6b/7TSmhPsKNgAZZdEQp+HSwz3sy1wZIBTkc7Lxml0Vvy
|
THNSTmNzK3JvbVN5S3RaVlQwdDRiOWFkVGZ3WUtyT2IyMWtPSVNtajF5YwoCUWHU
|
||||||
pBjh36wBjPLYJy69KAxsI13YYlT8gGw6dHQutBlVRzH6zL+To8TQ/TMDAwKHxkJA
|
KSe09W6BaVEW2x0ieBXN6KkL4FNPAP8zCom8fNVjyjAZpxd2t0kisJjJ45xg8eG4
|
||||||
6Bv3SyF5AvVYtJhnhT2Ic9fmkbbkohes6illUlpZTPU=
|
x9sj+hG9EsWIFvVpnF7LUIEXcRMjvRlNXED8HmYR0qzUhc89VQ9N4EoQPJYN1dME
|
||||||
|
kxAzH8p5HBidxfJLpACaG5QHGb97chJXTDrT+ZKt+hPfZ16OhsKBj2s0gvHbcCQH
|
||||||
|
sdqQT4+FlJshDiRiauTmqF/umnCnzl4+H4Xe8kLVrZxDOAv1iwuTX8zcaNOFNw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBzTVNj
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBiVDgy
|
||||||
R1FPalhwL01tWkg0REtwZ2M0Yno5RVVDSjJsQ1VUS1dWak9aeWgwClI2V1c2bE1w
|
QmFNcGNSeWx4bS9VVHdocFVFUndkQ2g0ZU9LdEdaTU5Mc1JGZ1I0CkExek1Pd1Ry
|
||||||
RzFyVWlibVZzV1NGWEd3OWNOWG9jRXV1dHRTV2k0RzEreUkKLT4gc3NoLWVkMjU1
|
Z3RGR3JIdXdJNHNyYTlJeEIrR1NVa3JTbjBzZmFDZk5YL00KLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIG1nZjVqbzlnUEZtSkxmTUtVNDdFS1NQanVmL1RSeWRNbk4rRjdP
|
MTkgWXlTVU1RIHUxN1BvTFJwby9mUC82QzFRMGNwaEovcnRJVE9YU2doM2djazVw
|
||||||
YWw0WEUKdFp0NGtuMEtQdUhlNTN6MmdxRDY5b3lPajhoRVAvT0llQml5cGZLdFlm
|
K2oveTAKaldCZ0haUlNoK1BtK0NQR3VyTmNDbmlKSnBlZGNSazlFYzRsV2xWNHNI
|
||||||
UQotPiBzc2gtZWQyNTUxOSBuanZYNUEgY0xkSFM5Q1pDRTlCbjRZT2FnN0JxR2h3
|
OAotPiBzc2gtZWQyNTUxOSBuanZYNUEgaVFUbnZ4eU83K0JlRXozSW5Yekc4MVlF
|
||||||
ZmM5NGJkNGo5M0tzak9iOGZUOApiVmNic2RpSjB6M3Jma1V6OGJjTGlmL0xYK3pP
|
QmdlbEV4NHpWN3BwdVVUZFhCQQpkVExtZlhKeHlVZzNtZU9vQmlNRGhqQTl3WVIz
|
||||||
a3ZHYVhMMDBGZkQ4TUlFCi0+IHNzaC1lZDI1NTE5IENxSU9VQSA2K1lBMlFaVEp3
|
cnYxMkFiT3pBZEo5Z1B3Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBGaE1YdmRaSFNK
|
||||||
cTZNZ0duTGlXc3JmUUo3MkYyK1ZVRWM2VTMxekNhNHdZClE3RDlub1Jab2VhbjFx
|
L25uSVp2SjNhME1PUVFNeVJDNDFBSnZKeVE5NGxHcEZnCmJjS0czOHA0bTIyVTMv
|
||||||
RHhOSHNnMGhEcjN0ZytsZWV4N1AzRFRDT1d6N0kKLS0tIFJSMEFkaWhMMGxQaTlL
|
SHY0blBLY3d5Y29vR2RiM3JHOVlIb01LSzNTSzQKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
MW12UldodHcrclFvQ080OEJBekh1VTZCNFEybWsKo6mw3I7uX/jwJ6moOGpqSltT
|
Y1p3IGdWRUYxbjJySXdHK2UvdnlPaWNMcTZuUklacnNwY2dKNTh0MklYYit1bTAK
|
||||||
BRsBwTeNrIdc+FR60l4sP8nRI9KV/7wyce9aFhqtiFTBNnGDXRcjJDrqactCiGcB
|
Uk1OMExEOC9DMTZRbHNOZ2R4aWI1dVppNHZGenh4dStCYzV2bjlQamVlTQotLS0g
|
||||||
Geuhsjc9ZMwjJEATbQ==
|
cUJud2k1SmxoUWxnUEJsdnNFQVlJZG9qSjVQWXA0ZWQwK09Uci9QNnh2awqOJikC
|
||||||
|
R8H3k0kHUew/tr0Oi8ASuS15La6bb6NxIpC/7edoNf996pxToLeHy8fOJlnPKSEb
|
||||||
|
hw+GvqIsP+6F7BD3rCOh2d+1ZbIHjcOkX94u
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBhUEdQ
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBkaUhZ
|
||||||
ejFtQWFabkl3YTJmUmRDS2M1elBrMU5yVHhWWlFLMHdOdlNsNEFRCmREU3ZZWlZi
|
NHE3L2gwaU8rVjlkR0JOL0d4YVdYVHdnSkJzUERTM1NyRlNmV1FnCldOTkd1Z1Jj
|
||||||
R1RLQVorT2dDbFRXc2toMExpNWR1WUEvaVlzUFJ5ZUU3azQKLT4gc3NoLWVkMjU1
|
clVxNGZzZDExdDNTMWZIQ0pKbzE2UXNpb3BhbmxuZ0FNMEUKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIDY5OGpSWlFTT2EvUzV4ajQwUG5YL3loSWhGbjV6U2J4TkFhQm5Y
|
MTkgWXlTVU1RIHZ3NXc5WDVwQXY1ODRzamQrY2JaK051WXJwYWtDYmhkOXpPWGZS
|
||||||
RWhvMXcKbUVpQm5wRmtLRGV2SWYzb2c3dnZYREdRSnRtdjJJcjRKTk0rbnMyZmVB
|
RHY4ek0KdGQ3QjhnRVRVUHNUaHNxa0I3NVFXUFZ0WjlUZXFNTnM1MGYrTXZVSGkw
|
||||||
cwotPiBzc2gtZWQyNTUxOSBuanZYNUEgd0o4WGhTQnlkVGhhWG44MmQ1UXFVWjFO
|
SQotPiBzc2gtZWQyNTUxOSBuanZYNUEga3V5MmQyMkdCYjN0cUlkRWNlTXh4ZFRW
|
||||||
MS9JcVpEOEIvd3ZuNmVmN2d3dwpYNXF5V05WbHRobVlIWVM2VHN1TjcyVG81cHp1
|
aURLK2cySk9wbmo4MGFaUHNSOAo2NFdadi9ENmZ3a3hBeUdGeVNGRkU5Y3drWXZo
|
||||||
V0pnWTduZFFWQks2ZFY0Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBkWXlRejFNdHJk
|
eEFKdEVHVk9palA2cTBVCi0+IHNzaC1lZDI1NTE5IENxSU9VQSAxazl3UkNTcFI0
|
||||||
azg0aUpzL1JMSWUvWkdXUmpLc3pVUEZTNGFwTG0rRlNrCjMyVTE5c1pjRlowVlJ4
|
MDJHQTdwZ01BdEh3czZWaWszcnZ5dmsxSjNteDluTEVRCmZidGJiT0xuWmdpQm5u
|
||||||
YmFtRzEzV1dCU0FoeUJPMjQzWHErc0h4RWhLbDgKLS0tIHhzK20vTzFPdVROVW44
|
TEpCTlF4QVVBVzFMQnRteUZ0cStZc0tRMHFMVkUKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
MkNhb2VWZHBqeXY0MWZuTDFUMXdNazMwTG8yZTQK1CrrD2tin/3ZhV2D1XJvkbUN
|
Y1p3IDhicExSMnVtNUl4L0Q3ZGlpQVF1eXlzOVZpMlR2TnVadk5XU1loK3NXQTAK
|
||||||
2Nw4ASdPdRXaQJw5CMhlrW6rgSnC81j0249F7D7ZfAlo62ANOfLyL9Lv2FVGzg==
|
bktxWkFqTitQaFdCdEtvRHNDZ21lMzl0ckliT0JsMkErdnVKWmVmeGF6YwotLS0g
|
||||||
|
VStoT1QwdmF6ZGNpbjdmeXA5bFNhWUFxamx1SXRiYVkvNGQvYkVEb29kVQoNyF4F
|
||||||
|
azoWnxojKxAIC2qBM80EdVCvcRdhKm4iSzyWYMt06cb6IrEutOzC+FCx37A6KKVU
|
||||||
|
tNYcXpGcJX2ge805
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBmTnVo
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBBWHpP
|
||||||
eFlINGttSEZYTlZucVVWemlMMk0reHNKcjF3SmhCQllXdmw5RzBBCnl0NWZVb1ZW
|
ZmxVTFpQOVhXdVRvTjZuVGlRVUpHRzk4ZTd0VTdDaUcyalJid0ZjCmtWcERqSW1k
|
||||||
MWRzc05pNVVWTlRyNzNRaDlYTm5TSVF3ZGNMclhyY0R3bUkKLT4gc3NoLWVkMjU1
|
Q3ozaEQvT0Rja1VvT3NoRWxFeWxqbzFtMEdUVkJEcURGMGMKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIEppTjJPUmxlamdLY2xxRVBwcFBmTTdOM3dLU3h3YnA2TlhRWXRu
|
MTkgWXlTVU1RIDZvWHpFRWVFVTRTSUlzcm1Ca1JNbFhNQWNISkkyTXp2SVFRVmpt
|
||||||
OGJrR28KMW9JQUFDcXFLOTk4NDVHQmJucEZuOElLaG5Eb1lyK1NGTUJaMkFONit1
|
Q0JxUXcKYThwazdBekZFdUc2aVRaSUVjUmFxWjF4NXpCSm5rME1yeUJDUUdEZXAw
|
||||||
dwotPiBzc2gtZWQyNTUxOSBuanZYNUEgZkF5MVNGK3FRV2JPVDFGMkY5SWxGWVVK
|
YwotPiBzc2gtZWQyNTUxOSBuanZYNUEga1ZZRVRSQTJpVnhzekpVQU00MlB0TzQ3
|
||||||
YThUVFk2VGZZNXN6UWx3eFJ6MAp0d3NGWTRuLzNOb0VxdVUvZ1YwR0lWemc2NDR2
|
QzBnSUZaVTIxS1Z3R1UzWm9RTQpEeHlyQm4zSWhYODYxalZXakdVZWJBeTFwVzEr
|
||||||
VFI2eWRjS242SEJrQWx3Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBpY2JoaGRKY0ZR
|
S2NVODFBTm95bnI3ZjJjCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBMbVVWamlEVU4w
|
||||||
Y2txWFM1ODJyaW03b0xuRGlJMkVidEVZMGdiU1pTZ1hVCk0yeGF6VWU5LzF0Z1dL
|
WHNWbVQ0OXBnY2ZSL005bUVuekNWTTgwd1pLditoZ3dNCmFtWk1PaXZ3c1g4eExX
|
||||||
cnlDUCtLL01EWWo2Q0dYcjdtSjRtSnFjUHNWdzAKLS0tIEI4aWpNc0xqU3ZsLzcz
|
dndXUXJqWC9lU3dVVjRqZWFVUWxyZTFiVmxpQ3MKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
TThFNXd0YjQ2MEMzc0JOQXZnTnBaTVg0V1hITzgK8GYZG8/fGXk6ELSB6rnLX0ke
|
Y1p3IGdOZHRHMkVqeWtzYldIMTRwb2w5M2lrc0FiOUdmT25kWWJ3U3dLZFpEUWcK
|
||||||
QqiztfVnV/fpgEgJ/K60Ea3aBe3ELpejzFKZfno+jesvnL5DCMGz7QRRpnThLQ==
|
UEFWMndhaDFBUzZrMHl6eUtNMXhIQ2RBQjQwTG5pQnIxZE03L3BpcUNBSQotLS0g
|
||||||
|
dXVZNWdJY2hMaHNqdHVEYzRXNlpzOVA3ZnRyaWV2SVNJaG5FL2FPVjN3QQrunATj
|
||||||
|
0/HE6CeyvFHIYDazDseUaebDS+A/CaYPpOo+3OvMRXFwbZ7KzAzZCdT1iNLWOc3E
|
||||||
|
Im2nMI/yWSLo2n5f
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyB4R0xH
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBQeWZS
|
||||||
NU0rdGUzb0FaeC9JWUtJNUd1V3dFYWpKbm1ONG5MbFE0dE1obDIwClduT1ZTL3o5
|
Wkg1TDBxZmVQS09CTE1VVzMxTHh4dnAzSlpHQkhDVU0ycm9DaHlRCnd6QXVLREx1
|
||||||
MGNHamh6cWF5S3RlTGxGRWJnRE1xU0FRYkpETDgzTUpLSGMKLT4gc3NoLWVkMjU1
|
T2xpaTlnL1V1OUJaQ1U0UWxOZnFZTlMxSHU0dGVReUFsdXcKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIFhJektxUE84aC9BeVVlalJxUDFabTM0dWRHN1ZMY2tMb1JVSDZw
|
MTkgWXlTVU1RIHp5ZCtUeWhzVWNBRXdkRkJCdERhQkxTb2I1UFhUYjlCeVcxWWN2
|
||||||
RHhTQ0UKQzhlTVU4djJKUENEVXpoQVU2azRBQU93d2JGamwzRjNxc3VCNVhEbVVH
|
bmJYeE0KYlJFdzJuRTNqWHJUVUJWWnI0dVVFUEQrYnZlb2NZZmNVbHltL3BrdU9E
|
||||||
TQotPiBzc2gtZWQyNTUxOSBuanZYNUEgZXZnUWt6ZHFxTW1mN2RtYy9IdXBtL21N
|
cwotPiBzc2gtZWQyNTUxOSBuanZYNUEgM0RVMGxqcFZ0RjJ5Y3VXWEZKaGlSL0tS
|
||||||
NG9wMEQ3WFRNTGF4M2NYU0ZtVQpRMllFVk9GV2dCeERIakpXZnIydXNLMWJwNGds
|
M2VCbmNPY0t4K0M1Z1Mwb2lRTQpvSmRnM09Lb3ZpcnNDemk1SUR0cTVaczNwZnFa
|
||||||
dEhyNjRSL29COU1uQlBNCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBiVjdTWlAwaytl
|
S2p0cStmZm0vVVJVamdvCi0+IHNzaC1lZDI1NTE5IENxSU9VQSAvR2RaVUZQeUZo
|
||||||
aWJwTkZNTTNwQVhNUGl0ejRiRHppWWhaWi9kWWk4QlhzCmJxcExjK2loWUtwZDND
|
TGRsdWh3aGtET0hrdEliRHB3YmFvU0dad2FtNndYcngwCjdZNStmTFZIZGRRUDhM
|
||||||
WjBXRUFCVGFLbTlKdlVieTdSZ1hlL0ZaTkNubFUKLS0tIDNVQ2NCdDVHNGUvZXFM
|
cDVVdVR3MkZXeFJPRGlUYXdsVDVTY0Jxc0lGRlUKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
azdWUmh6azAwMnJ4Wm5UOEdGTmRBenJSdUY1eGMKx3sYbX/g7JVCFrwVe7UNLkWn
|
Y1p3IDB4NTd2US92UmJtUEc2dUJ1RW85VlB4TVlVNXYyMUZRdzdraWtUMVR4UzAK
|
||||||
1p+MbGJcRS0ucxNIEniCBafaVnXDiRAHtaWSCqtbvZ4SVg==
|
TE5idjJFR3JlS1pLdXpjcEgwdFFkSng2YW1jUlBTbDZRSmNMRWhteSsxdwotLS0g
|
||||||
|
NWZ3WXVuWm5wSy8veTFsazM0OEJFcjRYTTM1SUpBNlRJMmxHZHFVYVpuUQrvQ8GS
|
||||||
|
sSz17HKJKfkSR1yPs9uAK8JleCgGmqemt0KTzT3beutowD6fCBYZl8nPzTsQc5J5
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBJQUVJ
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBHZTF6
|
||||||
aHZzMHNaME1zUDR2dXVHMTFvc2pqZnV2Z09YZ3FTM20wdGo4ckFrCkFOc1lCQmhv
|
RlExdGpEOXVodFV0R1FEeis0b1FJM0l3dGxnVjFQRm1jNjZXMmpFCmVWdmVtaE4v
|
||||||
STNpT2RlcWhNdzYxbEFvNzV4cmtoYm9waWc5cXhkWEM4eUkKLT4gc3NoLWVkMjU1
|
T3JaMkpocHlNYXVlai9jeEsvWXJJQUVPcUtKS3N2ZVUzajgKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIHliSURYL0syL1N5bUxWQ2NOQzhWR09kNUNqaGpWa3lrR1M5Qldv
|
MTkgWXlTVU1RIGVtT24vYWlkWldsOUNSNVk5UEsvRWZEb2pvK01ndk5NeE5FbzVj
|
||||||
KzlvM00KM3JvRjlBZHh2UzVxbW9rbUdIcUNOWkhVbEFETEN2VTdDc0lMV0EzR1kv
|
bEhta1EKc09ZUUZseEllcndOUzYyS2paZ205SmtSUUg1UVRKVDJLY1pXcHZkdlNr
|
||||||
VQotPiBzc2gtZWQyNTUxOSBuanZYNUEgK0lkMWNuUFR4ZGZmaGJpOURVS3lBbGti
|
QQotPiBzc2gtZWQyNTUxOSBuanZYNUEgd1Nnbk9GVWFNZDRsd1VpVm9WOHpUaFp0
|
||||||
aFA4anhUNEhYLzkzT3hZZTJnUQpmSEN5MzdVcWYxbTFpeGRlODAvUFVySGRoUVpE
|
ckdJR3N2UEFUbGMySGNTem5nYwp1OTVtVWg0dlZlL3h3Ty9ZQnA5NTJ4Y1ZVZHU3
|
||||||
NEd6aitiVm1vR1VNcnlNCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBiMjNoUG9jVTQ0
|
R0d4V0R5OHFZcDQ2TnZvCi0+IHNzaC1lZDI1NTE5IENxSU9VQSB6OEt2SWl2cXFN
|
||||||
akdPcXMrbVo4OU1mODhkMHlKbzEvTEJObGViVXFaUVJZClRWaXhjNzB4b3hvbkVW
|
ek5iMWNrcllVZ0o2K0Z0clI2QXlUdE1tWDE2NW8xdDNzClltWjhKaHNOWFpjSmFG
|
||||||
RUFWWnc0QkFzOEpXWVdZOG1TbDNLQ3lkdkxVRHMKLS0tIHNRNlIxVjhsMEVyK21o
|
WFRZVktvR2E4UUFEMVFkTzVuR3lMVDdRVGs4Y00KLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
a214bW1BKzVHbkZrdGhndkhnMlgrWStYbXoyVGMK8hdGLDk9xC1OnfTNtHZLbZCF
|
Y1p3IE55VWFKVlFKK3RCalg3RDFwQTBIaWpvay9iTW9RRXV3SVgrUXhtZHV5MDAK
|
||||||
KKw9JFl6b8++iwM2H8cQgWk8qZWQUvyO58ahkO/xtOCXCA==
|
RFEzMGtUZmRIQTlyRHcvSDBnbGlsRDBXVHh3amY4bzM0QmE0aU8vbnpnTQotLS0g
|
||||||
|
Q2NxNlBWT0ZmMm1MNnJvaUl5dGlUQUt2aStrdkRXRWZ6TDVOdzU0VHFDVQqTaee+
|
||||||
|
qfaK5T6tjcv7LawzcztJbdKCqFecw/BEAicpyrkGmOfr1J5PmOxOFM/Rkk2HpLuP
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBHR1lJ
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBuM3E3
|
||||||
U0gyb05HSm9kUmNjdmdGQm1XU1ZCbld0L3lxemdMK1dlUXQxM1MwCmJwRzBGM3lk
|
UnNtNUlmTGtIdm9zZGlha1B5ZVkrQjBuTStKTmlPcmFCNVM0eGlzCk1tWGJOdWtm
|
||||||
ckwzTDVqcEFOakxaMFYwWHQ4MFZ0ZjNySnVRU3FZbGxndUUKLT4gc3NoLWVkMjU1
|
TVBRMFNNRkN4TVBtVWJyUk9wZlJ2eXpHSWtLK21rc3JIYkEKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIHliMW0yaTdXTDRmcENtZUJhaE9NQWE2eGwwelRnM0ZydE1oeGtj
|
MTkgWXlTVU1RIDB3c1dHdnNTSEhva2FsT2pNL3JUVXVmTGRrVzIwWk1UdFFVaGxH
|
||||||
bkVjeGcKaUtpMVdzSVBDTklUMDFjcmo5SCtHckhLaUxHNnMyMUZrNy9MeXZtSnp3
|
MWVad2MKaUJyaUdDek45eHFEdWFsMks1VjlsTlRhWEdmNEFaUmdjNXpocS9vVWVa
|
||||||
RQotPiBzc2gtZWQyNTUxOSBuanZYNUEgaW1IZjY4VnlFUUVJSzdnVkpFMllic0Rh
|
NAotPiBzc2gtZWQyNTUxOSBuanZYNUEgRFZ1bVVCeVZTWEFqNFk5bmVBSmk0Sis2
|
||||||
eTFydGcxOGpWczhxVktxVi9ROAoyUE1PeVN6b0RDVHJGMFJwdWk2QkdwaEVVK0lU
|
TDNuZVFhTWRBSXFrWmJlQ3ZrZwpMWTlSL3hkZGNNQjFXRTFTTmJzMlBaVHJhekpD
|
||||||
Zjh5RWFSSjd3RHBNcFRBCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBFNDhwVk0relJU
|
aGdCaDJtNkxEbWgzSXdVCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBXZGIxaEFvZXpx
|
||||||
WWFlcTFPRWlZLzRsOUhWWFhydS9teE9RRU43Mng4Y3pvClcrVWIrRjl6RnM3emJp
|
Vm5CZHAwRFZFWnZIZ1h4eVh4RmNoRzh3OHN0dFhOV2xVClNXaDJxbFhlbHJmeThM
|
||||||
RFFGaEFka3VLQWg3UmUrN2M1VDVlODk5MGZvN28KLS0tIGRsdnpEc2YrdDJldmE3
|
TjgyTlEwaThwZ3NhOWNQYXV4WFZHMGR0cGxGV1EKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
S2xxck5hRlB1OEdZL0p4ZmNBMHA5bTNzUUJ6REkK4/pCDRQsb6e7TMT9I92Y6P0P
|
Y1p3IDFyK0xxREdzWk8zWkNYQUUzUUw4RmE0Vm5WQjljdmxTeTh2VktUc1NuMVkK
|
||||||
i6K/cnbu3GacXRXGdA21L3DVu5TFwKaym2pIbO5JdO/G1Ic7jQZrAg9GOHnNbSs=
|
YTRUK0hlTVltcFVXWDlDVklKRVMrRjdYUWQ4ME9YcXJBcWY1RUU0MS9pRQotLS0g
|
||||||
|
ZzNjRmVHSTByTS8vNTlRbDdYR2tFNHF6RCtiajNLY2o3eDZpdFFoRkdibwqeS82J
|
||||||
|
r4vWQBK8WvTxQb1sQdIU9/0NNX/JqbAxWiaUnzk6ilzf0leovTZkJF0JchWyW1ya
|
||||||
|
HiVoD5lVamGzGA6jRw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBtVFlY
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBsdUI0
|
||||||
bXJzdFdHZzVaZEtUd1BzWXMzbG1kUDJ1cXZKVEFBT3dQZndGTjBvClM1NXlFVU5S
|
QldaMXhRVm05U2ZsUU9oM0NSblI2SkZJbkIyaUhxeFI1NVREcjJjClBUZXJrb1pY
|
||||||
TTlvQXBZMTRSTVhybDNxMWZQeHdRRmhTbis4NWhnQkorbWcKLT4gc3NoLWVkMjU1
|
elZ6MlIyajZWNmlZbzVmUVlqWlN4bm52SVYzZVlRMTRBNnMKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIFRPa242RVMvd0Q1UmdJeU90Mk5wWEoxcnVuM2lTRXNCdEVtRExr
|
MTkgWXlTVU1RIHE0ZVZwampWazJXaHVCaTJXT09qNytGYTlGaTdIL1Fla1NPeUpl
|
||||||
NnZoamsKVCtWQXk0SkFFRDI5ZDA1MHI1NmxtMzliYllXTVQ5bkYzN2NtUmV1d21x
|
cGFVRWMKUXoydG5JRjdqek1KUW5xWUNMVTJlRXJvclk0UEZDem92bHBKK010bG00
|
||||||
YwotPiBzc2gtZWQyNTUxOSBuanZYNUEgSGRFb1hRZ2NiMGdGazUxak43aUhEZER3
|
UQotPiBzc2gtZWQyNTUxOSBuanZYNUEgR1pCc3dnU1VYbHhMNjZ4UWJxSDdSOVcz
|
||||||
MEhTcmdnZnMxT2JjcHpqbGprbwpJYU5iSkxsaldXNFZ6amdWUktqVktIWjJIT1l0
|
NEpaUkhET0YvNERpWWcvZ3prVQovV2tkV3lseEtFKzBJVkFhcHFxeUNsMmxoY0NN
|
||||||
K1hDYmNXaTVVSHI2SVE0Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBqT2NqUHJraXpu
|
QnpmczJIdnJZaHNDOUh3Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSA1MGRhUXlyMzRa
|
||||||
ZVhZM0ExV2NoeElPdjBYUnBacTcwOUpMcmtOVDRFYXdVCnpwMmxYbzB0WUZ4K29E
|
bVk2NHhCRjVISk93cmVETmdPYTl6a2VNTU9WaXdhdTE4CjVMZ1kvbkZKdE5rS2tO
|
||||||
eWxabVhiWkJXV2NUZm10c3gzK1A0V25SNkJhQlkKLS0tIHlKN2dhZVo5czA5UUVX
|
Uk1kOHZIOW9VMUJMdzRmaSt6SkloempxbnhqSG8KLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
WDJCNUY2dHhvbVJTR2I1NS8zeEtVYUNJOE85YlUKVI75zg9cgQVbLehC4/7bMPjC
|
Y1p3IGc0L2FwZUVtT1ZXa0pUUXlCQlhBSE9ZZzRXb0pqaGVjQzErVXFVT0dWbFkK
|
||||||
zqqMV0+j0OaCNwXhi+U/RbILvmg+MzLMymUQkMihcE8W3XVILswMa1Exew2gANZ4
|
UVB3NHdRRGNIeGF2VWlEelhLSldscGx5bVRMV0tYMWl6elc0bk10V253RQotLS0g
|
||||||
|
RFc5VlZWTGdPRFZGb0tjVkJZT3JRR21tanYyWjZuQXFxOUNNMVpVRE5CSQokZtMc
|
||||||
|
lJ0v6JloSS2bIMNpyozZHI0k1LGiLODjUO9YgvFp9wo5j9SXFf1t3Uv7I+Nco96l
|
||||||
|
Uzybvbj7Ay2VCvj82qE=
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBWY3N0
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBTZG1N
|
||||||
VkY0Y2tLQnNhZWdRVzFxU0plWThveUthK2NjZWNhZDd5ZGtXVVZ3CjVPc3YxbnBM
|
ckt3NjgwOThhZXRRanp3UGpvQ0xST0pmenY0Nm5lT05TZ2VkVjBnCnlCODlFeDZE
|
||||||
MmozZFlORVppQmJrQ2ovWEFVVm81ZlBpRCtQQmRiNnBCaVUKLT4gc3NoLWVkMjU1
|
R08xdStEbm1vdmY3dkVVczN4SVE1cE4ra2srdlJEZk5FbjQKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIEtvRFJEQXJLNjlyRldpM2pMdXNxWVZmVFl2NVJjRUtuQzNtbmJq
|
MTkgWXlTVU1RIERlQ0NtU3BhZ0l6NVdtakFkc1V6anFlWTN2cXczSk1WZlFQWTJm
|
||||||
UTBDR2cKQ1J4cHVkWHJZU1M4dnFIekx2ejlua0NjUUtET0EwN24rY2NPcGQ5eEp1
|
UmRKSEEKWU9LeVp6TkRDU1FHNjErM3RVa043ZWk0Q3hRMTB4b2VYNjNUK0IwVnFa
|
||||||
TQotPiBzc2gtZWQyNTUxOSBuanZYNUEgVnBQOHV5VUk0N2lyU2NkdXovQmJYVGhL
|
dwotPiBzc2gtZWQyNTUxOSBuanZYNUEgU3VkRXJlWWFRS2dvWGo0RFdXd0Zra0J3
|
||||||
dnUwTG9oZkZKOUxFWTNiZkhBbwo2WjgyNHBhaGtFREJGVDk5TzJhZjRzKytaLzZR
|
MnNtNEU0OVNodjlJckdyQnVSbwo5RFR4QnlDSmd1WnBwbExKY0tOVU55WVFPWTFv
|
||||||
TDQxeU9pY24zQnJBYmN3Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBQQ3I2YnNNZVlX
|
b3hnaWxHcjVoYzRHaDRBCi0+IHNzaC1lZDI1NTE5IENxSU9VQSAxREZKZklHQ2x1
|
||||||
TEhNbWhRSjJRbk9DYnJIRUFieDBMRUtBRVhxZ1RQcVNNClNzU0VPMnh5bUFGVTZm
|
REFHaUtTNFM2aTFsa1Z3TDN0SlU4djVUcW9TY3c2aHlzCkpFWld2Mi9nMFJ0YVpZ
|
||||||
ekJLSzFjT3dHVVdoQ3A5ZStCUk83Qk5rcWZmN3MKLS0tIFdvRG1mYzdUenhndkY2
|
NXJreE5zOFVDYVZ0elNESVJCekt0VmlhRDFJV2MKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
amo0ZGpjQkdabUdNRUJwV29CRXByVk8ySEZzTzAKsDY+DVJqZb/jCn6Xa/OqNheR
|
Y1p3IEgwTkJyeUh3YlZwYi9hSnJraFBDWWRqVlkySFFmR2hBWVJ1MG52dWpPR2cK
|
||||||
uNlV5vVKUaZu5F+MTZqZaRYdn66TJVXgz5GydbgwQGs3l0K67ikPiTOoln0FapnB
|
YVgyRVU2RzBhQVJ3MTZTOEwwbWk3QzhFRlZMa2hzZ29HeW0rVU5aN0x2MAotLS0g
|
||||||
TQ==
|
bE43VGhIcjVNenNkVW4xV1N2Zmd0L0JnNUJoOTlya0lWU2NPckNPODdsQQpDcV5M
|
||||||
|
ZQ3ZxOePeO2P5AqZuTEQk9QUZzEKnWt+aB296b8dU4rpjpKL+Btr7e9cPLs1S3ay
|
||||||
|
fpnky8e+TsczGBEEkrcQ
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyB6VXdX
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBLekNB
|
||||||
aFpYYkxJM1dJYlJJY2h0OTJqaXQzcmFMRlJyWEg2ZldrbE90Y3pNClBQMjhuaW1S
|
R0R0ekUzWTBxUlhLaDBkZWlER2NRd1RCSHFBaUwrZW1wUTJJaGdzCnFObW85eFRM
|
||||||
a0dPaCt3dnZ2YkZmZVA3NkZ1UmVSNVZUS0xIUENtYmRjMU0KLT4gc3NoLWVkMjU1
|
REgxR1NHdWMwWXdYRmZvYStTekQzcTdJZDkxamlWd1NEdzAKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIEdWTVBVSUNhVDF4RUlFUjNrZFc5L2xwMmNRaHVQalZqUkk0UGFt
|
MTkgWXlTVU1RIFZzaUZMYmJScE42RWJuMytIYWM4RU14eXFMVXNNczVXMlF3OVBu
|
||||||
Tm1BSFEKMVlBeUtPWEk3YXZ3dmo5ZFlXV3NoU25wSk94MFkwaVVpM0VIYWdmRkt6
|
di9oVmMKOXZLemtGMGNVUmU5YTcxdTk5Wmk4TDJpMUlVSDdwK2VwMmdCZmtINWV0
|
||||||
SQotPiBzc2gtZWQyNTUxOSBuanZYNUEgQjA0ZGJ6OHNybE9QVTJlZnV5WkpvdEJ2
|
MAotPiBzc2gtZWQyNTUxOSBuanZYNUEgazhZcHZ0OVkzQ01vQnlDWmMvTEdpZWJn
|
||||||
amt2dWw5TnRKT01UcXhHQm5GOAptUFB0aDUrdGJTTTM4ZVZsRDd5ZHpyOWxZVWNC
|
VVRCWXZ6enNPL3BySHRkY3gwQQpnNHRpbEZuY3pGd2R5L2hXY3FIeXpneE9nSEhM
|
||||||
MzRGdGVES2NCY213ZWhRCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBBRFMyczFWSEo0
|
MU9UWVlScCtVSWhNY3FrCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBMTDkzcUF5WXdN
|
||||||
Q2xoZGxtRWF3YnVMNmE1aStmVmRZTWk0UHpzM29LS3l3CndWMlZvbkxhQSt4cFpL
|
NTFnOUgzOEpoN3p1Uys2b2JMZVhnWThrNEFaT0N2RlFRCkhzd29qdEJLYWlyN3U5
|
||||||
U3pFKzhzUU1ldG5ldkFyRDFlYVdpSVUvclZsbVEKLS0tIEpDcG9nNmlrc3JTRXk3
|
R3dnVHJZenIvTStoeGZXYkF1TGVkcVN2Y25acTQKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
QW5xSGdGbFFDN0JhdllPdHNiRzVFbmhUcFhNSWsK5joyQar0MfzoOijEHGRvGQTo
|
Y1p3IDh5czJHQUpvc0k1eFNRZDE3ZXdha0pzY3UwNzZsT2NIUUFieG1JSEk5MkkK
|
||||||
UYLzJej6x+7TdpVEjTMoSClK9EDfGygYzNV4c7p+TjLb7ABGT8Br32oG7v8xeA==
|
SktlZDQwcm5ZYVZkOG1ybFU1RGY0bGdqSlVIRHQvaVdoQUN2MTNMNFVFMAotLS0g
|
||||||
|
U0thOXRDNXFyRmJnZE9ydWRwMnZ6VGxIZDV3SW5yUEFEUkcyNUZNWFZxNAqpA6on
|
||||||
|
uxWUMT9texQBeGLhj7tQ3QDzCKA4plpWncjvAgjcL/LzJOv90FeHV37UHY9cDo84
|
||||||
|
KZleCZs7L3thj4um
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBiK1l3
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyAzMUNW
|
||||||
cXJiNEJoV2hTbDgzRHNwREk2K1VVUDdjWHZ6cnY4TUVqYmZCeTNVCnZrc0JRbDhl
|
QnV3SGtMcmVOUG05YnloWWNnUUE2aXMxZXF4S21yTm5ZY3hsVjNRCjlhckw2MXoy
|
||||||
Z2hMOEhLMHJWakpzTjI3UEMvVFJLM1VIc3NXa3k5aUFQVmcKLT4gc3NoLWVkMjU1
|
OE9YV0xGNDhpQVlQV2k0UVQ4eEFLZXhwSHBxRXpDRnozVGsKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIFIyVGpFa2tXa0ZXN3haVVRxbXE1VGpjT1NESnZ1SUlaVG1xY3Nx
|
MTkgWXlTVU1RIEE0MEhRMExPR2tralRvZ2hDNjRLUzB3VG1HMkNEemV2ZTlrbWdW
|
||||||
YTZOaFUKZWsrZndqeFZmampSclJZUWU0Q3NLdUNKYTFNOXhmeFMwZVB1aVJodnFU
|
SGY3WGcKZ0J2MUtHdnduNFJ1YVpCd01OT1ZhRVJyd3dWRmNGQWN4VmUvdS94R2dX
|
||||||
VQotPiBzc2gtZWQyNTUxOSBuanZYNUEgZ2tYS2swYWYvRlRraVYrcGRMODVxL2dl
|
OAotPiBzc2gtZWQyNTUxOSBuanZYNUEgU3RhNjBleFJHQUhnUjNZYVo2dmdISm5B
|
||||||
bG14dFRJVHF4NVIwLzFydkt5RQpKQVQ5Q1F2cFlaWndmYnFZVWdTUHZRL0E5ZWV3
|
M2x6UkVRa0xMUTZybGlER2xCZwphaWFOOFowaUhXeVcyamlCclBhM3JZZlh2ZmRI
|
||||||
WWgvMGRwemV5ZUZPMG40Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSB5cmx0TnRaRURT
|
RlB6Q2tySkwwM0lyL3dJCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBnODdnZXVCSHl4
|
||||||
MkRoZTV4YTB6QnJKRWdaUzVBV2xRclIxWVVzRUs1b3h3Cm5FY1FHUUdjTSt5U2Zh
|
Y2JkdXJidmtqWVdQdWJTZEZjS2puMmM2UzFtcmdTZHlvCmdPSkFDWTFwdmNyc2xH
|
||||||
WE1tNERvZ09wNE40STlKZDdNT1ZuTUhhWDVlbWMKLS0tIHZTL2F6SFlubHpDS2g5
|
R0hxRXZkNTZ5b1dvaFgxdjVUWFc1aFpuWTYza2MKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
bm9qNHFxMHFwMkMzYkN4alR3NGtWUjhDTVc1YkkKjbqfpGjlQNQrKciqoC2wxgQl
|
Y1p3IFB2WVlaZ0YxenR5SDIvOEhza2c5THVldUw2dXplR0t3N1h2ZmY3NlJYZzQK
|
||||||
kdWTvPjACx+gYYybbM6yMSpqCds6Wu3DKAIVvHh66Y5fWm6NrS6K49gCjd7c00s=
|
Q0RwRlFGTVRuSzE1QVlSRWg5cHRYMElLZVlDM3NaOUVQTEl0U0VuM1VCSQotLS0g
|
||||||
|
a05hV3haWlE5QkFnMHQvWEowcEU1RExIMGdUWjQvUkFmaHFVdnJnT0g1RQrkp3VL
|
||||||
|
7YRcvkng6dO+swKzNUhPbJtYJqGtAtxo6I2v9nQl7Zc8X1vcJiaic4xaYNYfRFPS
|
||||||
|
oAd3/SnRi+sghHuTWw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBaT3Fx
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBzV2Jx
|
||||||
Nm1RNHpXQjJxZVE3RkF2S3M3KzdjK21Od0NDd2x5RmcwZXVZNVFVClBqNDRFK0hn
|
ZG5JL3oxc3Vqcmo1VE9GQ21yeGpINWJNZTYxcFpNTXJQQ0hDZFNnCk4zMkNNdmFs
|
||||||
WnpsOWFkU2l1UFhUTGhyUUFwQTZLb252VVZKV1JRWmJQODQKLT4gc3NoLWVkMjU1
|
LzFPUzFQUTYzQ2lEcUpkSlBsUFpvQUdOSmZocnVZeFlKbDgKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIHdZS2luQ201akdBTmI5ZXhCazlhcGJXSDhBZHlSQkRMdUFpN1hG
|
MTkgWXlTVU1RIFJHWGpmNTNFbkdDNEE1YVpBRWowOUIwYmRIVFYxSFFaUDVBblY2
|
||||||
azRLVlUKTWxCQmpIRy8zN3BxcGRFc3lseTI1Ymc2cGFpQXI5d1RsMkxkaGJuKzVp
|
NWxMMlkKOFh6WXVwM2lRaU5CZm5JMDN4eThoRUNkWUExcnpmRnpUa0pmUTcxWUo5
|
||||||
bwotPiBzc2gtZWQyNTUxOSBuanZYNUEgQ1FmcFp6K0Y4UXRrU0tlVVpYUG9qMDR1
|
UQotPiBzc2gtZWQyNTUxOSBuanZYNUEgRFhsWklkVmpXWTl1ZS9XVHN2dStDTXZw
|
||||||
aTRwR0tMM1hwdU05YXVPZEQyZwpYOVJoc1phZUNHV2wwOWlQUitZTU9vaVhEVE14
|
bzlpUktIdW5rLzdnOFM0N0pBNApvNmxUK3d2aWt5ZXdQeUhWdHFpclQrVENOaDdx
|
||||||
cjFNekVDaTNFQVpUNzNRCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBxMVlLSFFjQjFD
|
RTdBdHVDSnFPVkh2ellRCi0+IHNzaC1lZDI1NTE5IENxSU9VQSA4M2J4cTVnVWtq
|
||||||
RkFEVVZnT2dqd0ZMVnV4T2loT1ltVHoyNnZoZzgwNDFZCjYxUEwvUGJidDU2UnY5
|
RzBsRlR1YWhwVkF6L2wrcC9vNzdaYzVoQk8wTXVmRXowCnJkc3dyNnN3UTZyZG1q
|
||||||
c3J1NzU2d3JpaVU5eThSUGNENXhIVDZQSktzNUkKLS0tIGczblFPd1FLQmYvMUZN
|
Z2xtUzhRT3ozZHhCeXJPVUdETkhoa3lpY1QweTAKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
YUdIYXk0NmxsN2krOTFncm1MczFBT3RGOGxDOG8KfClHc8j62Vt5d0JH0CLEUAts
|
Y1p3IG1VdTd3aDkwclpZY0hBOVdiY3pIai9MSjc2ZStjb0NMaWx5RWpxR2F3elUK
|
||||||
amY7zEWKS2wGnLWk9SU2ybe0nsZ0wfUky8+PbztOomEXRxGfX5jc8j2cH6VNW9U=
|
RE1sRFBJZ0ZNSE5QN293anNXWldiZm9jV2w5SVpxU2VuTXMwTndJU0Z1RQotLS0g
|
||||||
|
dzBMKzZRYU9BQ0YvWGpLMHZLQ0YrZGJZRGZOcGNmcnJ2RGJmMit4c0NHZwrMord1
|
||||||
|
EhzFVq3Hrt+3l2vfY90fSkP+X0yQqC5m5A7F/jA7xBzBr3WGQ/DKYsxT1e/bZv2g
|
||||||
|
cTLB74cM0mVm5iGHDQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBqbWVP
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBITUVj
|
||||||
RVNIVFVJSW4rNWFNbXdxZUdTcnBQR0k5TUhKMC9CWGxGQ0hValJrClcyNXJJQzdC
|
MjN5MGljc0ZEdEdPSGdNSWZZS1VDdnp6d0dIci9GeXI0TXhUZ3lrCm5ZbjZtN1BO
|
||||||
VmFYQVkzQjZqMXpDMC9nazVhdmdQWVA4RHVBTUNOVUZJaXcKLT4gc3NoLWVkMjU1
|
ZUkzQy9ZbGp2S3Nxd1ljanBQemlwdVdDMXZOYkp0UFBVTDAKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIEhPakxYZmNsTlVYZVBjN0s2ZFc1VjFId2ExNXZEa3Fza1lKWktj
|
MTkgWXlTVU1RIG9VSStaM2RTdUF4Q2VkQ3h5S0JHeWYwdndiQmlyNytWTXplMkdE
|
||||||
MzMyaEUKczZ1SGtycFIxQjlWWWQ0RW5ka0pLN2hocTh2V0M4Z0NscDByRnJpMHlZ
|
MXpqeWsKaWhMOE5DS2RnS0VneUJHWUc3Ylhpb2ZFazJGdkJIdkxxalhVdU4wR2N4
|
||||||
OAotPiBzc2gtZWQyNTUxOSBuanZYNUEgeHZ2TnMvbWNhUzJOQ0JZNXZSK242Tldx
|
awotPiBzc2gtZWQyNTUxOSBuanZYNUEgaHMwWWZQVDdRai90S3U0SE95TW5JODcv
|
||||||
M3pJUXJPY1BWa0ltUG4yV1B6NApyRVJCOGRoYUJYNE5iVkRuSXorQjVwU25CTmkz
|
Y2Jqb0hZZC91dExCSWFCT3AxbwpzbTk3SW43OVVmY1ExemkwcXMxdUx4UWRtek1O
|
||||||
TElqRUtTRmNxT1lob2JRCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBmT2hvZGVIc2wv
|
cVJuQ3JmWHNFSUxwRXo0Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBBUVRZeHZnNm1a
|
||||||
d3V0emkydDNQRllaMDJSZmt3cE9uYXkyVlArUXJLS1VBCjUwSkR3aHd5akNQbzJS
|
OGsyK0JXbWF1RXBxUkQzRkZ1R0s1bzRNa1BHTWhOblc0Clo0VngzYTg1elNRY3Fj
|
||||||
MlVIR1phNUkvckhiblJGTysrV0JTKzF1MURkSWcKLS0tIFd6S0NJd1luVW1mMDNv
|
UEJ4cnp2MkV3ckM4R0loU3VuTGtuSEgzamNsY2sKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
MXhRSzU5NDZ4VnJIaFV4ekxxZDJGZlJUNmtnRlEKmXBlM6PkajrVUhxQLhkx3WVI
|
Y1p3IHZIOUNFME1TbDhsUDNobUdwV2RRMXQ3cDFCeEg2WTArQTlSMmYxN1liZ1EK
|
||||||
UzKD+1c0ifWwm1QT/7/jodJgef2oG2QEBOVJ/HMzgQxfiXhoscjD1Q1nS1OaQLk=
|
SXVWOGI3ejRwNUtDeUE4SDh6SGhzYWNHdiswaUFQZGd4L0VPZStQaFA4TQotLS0g
|
||||||
|
R09RR0hEeWJmb1N3SjBUemhnOGQyeTN4K3ppaFJ2MDFGR2VqNmYraHZaVQrsfqps
|
||||||
|
BUEbuwbRJOooVEMyJmUjNavhK09fgxHyyaiDVpEsTdg3dQ6sQYIV/Envmad8An+a
|
||||||
|
Cn8oklYFq/UxoMHHbA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyB5STJQ
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyA0Wkc3
|
||||||
VTh6VElvclJHWVA1dXlMYWFObEVvSDJaNFNCVjg2OERKQmUzcWtBCi9kRi9wUktm
|
cFMyN1lLanQzNm9WR0JPS2RCYjJpbndER3BmUTZOcmVOem1DWkZzCnY5S1Yyamt6
|
||||||
KzNjNlVxNHVva2MwOTBuNEFEcVp4aFdjQ1hGaDlpQldEelEKLT4gc3NoLWVkMjU1
|
ZkFUem5vT1JQYWRmTHZMREVTb3hHQ20xdUpQK2dqcjJtRmMKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIFYyNkNwNmg1UVhtaGpzWW9Ja280SXl4MjVoU3R1NHhaWktweGlK
|
MTkgWXlTVU1RIFRrUWorNVRaYkhHaWpheXZZSmRaM0d6U0tDNjgvcE5IMWk5SEhX
|
||||||
YXZhRzAKRFRDSmRwNVhOaitMNVh6VzJjUjd6dDdGVGVVSEhYVzV0TGU4WTBCb0p2
|
MzhZa0kKVEkxWlZhNytJMEdKampWY0l3NzQ2aUdNOU5rV1Zjb3FHTVovdXRpdlB4
|
||||||
awotPiBzc2gtZWQyNTUxOSBuanZYNUEgbURadUZqTXNXUFFHZ3RSOWVOSWJLL3JX
|
dwotPiBzc2gtZWQyNTUxOSBuanZYNUEgVkxtNFFoWUlaM25GVDJGMzBiWEt6Lzlj
|
||||||
ZTBNUmJoeTVTRXZQR0EyamMyMAptb1RFNk9GYStVRzhlT1daOUZrMSsrZUVCWWth
|
NFdka1dUd0ZJNzMwTTl4emdqZwo3Y0FTbzZxcUNpOTl0R09JOUVkWXVIMkFndFg0
|
||||||
c3g2TjZyUHRqalM1QlB3Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBqRDdMTnNiS2RW
|
NXFKR0lZQVhCZFRBL0lJCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBJWDZ0aFBtRUxr
|
||||||
VnVQOXBUN1JhVmlOSnc0bjgxSmdnK2VTYXZUUnZkemhjCm1HMisvQTFrTUQ4T1BF
|
dXNRaVVxOWFacmE0allBcmJleFNFOXhNNlFZL1FDUVJJCmkzeStQSGN4STdTSFJG
|
||||||
MzRFMDNZRWdLRWgvNnBFaXJnZDlpMVE1M1RkS3MKLS0tIERSaFNOcW8wSnd3N1Nj
|
eWVnRFhEL3UzNHJzWngwWWZIV25NbzZOK3pOeDgKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
TnBCWWlFcXRRaGs4ellIT2JGTWtqRFZaTHdKaTgKqliAH21whccGxY7qQlAGf/mt
|
Y1p3IG13N1RWYzFzcUxkSnJCb3duSEQ0UnpnK2U2VmZlZlBFMjFqa2Y3Q2sySHcK
|
||||||
BLsCDO82jjrDk4e9wN04lUzeqfI0kb9It5/2XqzW53vn3EdIsKV0wmraoSpwIbQ=
|
a3RURU51bGRzZllyOVpCT1RQSVpFSnB3K3RFZGJQMDNKN0wySko0OVBPcwotLS0g
|
||||||
|
eEluUUZwanRWWS8rTk1jcEpSU3Q1L05ja0lLNklhM2hHNUdBeG0rSjU5YwqEOyo/
|
||||||
|
YSIlWzZ13Vm64tqg6ksRnEuaSwUSQro0R8zRy8MNlPcX0IKtZV3H4wnvZBRIScWd
|
||||||
|
Mng3c8Wq4p3/ip+/mw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBTWlJz
|
|
||||||
K3ZITnRqTCtqdHZGbml1ZUNQbEdPdjJmUjhDSmg4dUFmeDdUaDNBCm1sT0x3OVhi
|
|
||||||
YVo4YWI4T2lKVXI5RzdDeEx4RVI1anlkZWdJY3QyL3Z5a2MKLT4gc3NoLWVkMjU1
|
|
||||||
MTkgWXlTVU1RIE5tVEdZWU42VUNxMlVxc2lyM0lXYjF2SHJ0WDRsQlRHcUxVTGwy
|
|
||||||
MWVWVVEKai9IVUN5SmJMNW5kZ3hPVGJLaHNqWTcvREdhV2IvcENGcnJvR3B2d2RO
|
|
||||||
TQotPiBzc2gtZWQyNTUxOSBuanZYNUEgV0RVN1dwZVhQKzF0L2VyaEpPd2lLVXR5
|
|
||||||
MzE4ajIxbWkrWXNnVDhyT21BawpZUTd1ZW1LVlQ3OG9zem5JWlJ1ekxwdFZSUVBq
|
|
||||||
cnlhK3F0VXBib0RNSkI4Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBqUDRNbzZsNmpD
|
|
||||||
R0p5bFVhMkpTaUZ2aUszTDUyOElCWncwczBLTTNMMW1zCm1aY0Jxd3FpMVNLVVRZ
|
|
||||||
ZFY1WjdrTVg5SzBsVWxHcUkyNUhSS1NWQmsxakkKLS0tIDFLay9ISUxPZ09VSk02
|
|
||||||
a1FCajJiNU5JUHovNEQvNGE3ekdVNzJSQTROQkkKMkyKdbFB2IqhHLxw2W1UnpmR
|
|
||||||
IzWIGHRHfrMmGU3S6rIG4OM63kNQ6wU4dNw91vzJ9Im1MCJZa7ElYfffwdbw4J7h
|
|
||||||
IdEFgivD96G274J9tzUGMc/sVKgFzw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
@ -1,15 +1,18 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyA4YWR0
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyB5OVNh
|
||||||
eVNVVkNvV2EyTWNKVGZnd1hhSWRDeHA5QUtrZENrcE02d3RlV0hjCjgvSFVid1R2
|
dTZiYVp1U2FkaUhXTUxSYkpEZDBuYnNXS1AySW12bTlHdjJ1N0hzClVrTXpOVUhF
|
||||||
QW9pK3BBNElrYXhscCtlbWxTTkNsSGlYakM2cWhSSUFHYWcKLT4gc3NoLWVkMjU1
|
b3lTU3I0cmVKdFEwNXBxTHJmeHA2Yi9wY2RYVkdVbnA4VncKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIFhxSnVVNEo4VU5uL1AzYmxia3VCYkpaM1hxU2hQUUE0NldjOUEy
|
MTkgWXlTVU1RIE9qYmV0RHB0TkJOOGRwN0ZFbnhCMmRMK1BrRWR2UmJFWm5yNVFR
|
||||||
Z1VJeEkKZWVLOEtRK2tnbWZwQ3pQU09uZUZxcGRIV1pjOFdudkVMSVI0bUJOdGh0
|
RmtuRkUKZ0pQUW5lVGdvd1psSS9FT2pRSDZqYWcxOTgwd05MT1M5dmIxRG13YVUw
|
||||||
SQotPiBzc2gtZWQyNTUxOSBuanZYNUEgNWptNHRvbHFUR0k3NmV5NU4rRjh5c3hV
|
WQotPiBzc2gtZWQyNTUxOSBuanZYNUEgbEdsdHA4S2tmV3hVcWdUeEpVT05hT0Fj
|
||||||
UDRtaHdSRDZmNWRabkFNaFpBOApWNUc0cFRSUGFxMmQ4WGQyS0NsaFBJdXdraHdT
|
cmZucnQ1bjdzbWRQbSt4TU1IdworNk8vOGtNWEllWnJNOHlGT1ErUlV1akxjNGRz
|
||||||
Rm9XTzFyay9PQ29mVENBCi0+IHNzaC1lZDI1NTE5IENxSU9VQSAzUDhxUmVlSUFO
|
YmdjRU9tM2FaSXd3ODA0Ci0+IHNzaC1lZDI1NTE5IENxSU9VQSBuYWdKMXFWeHNj
|
||||||
Z1hEUUo5SmRDV05ZbHEzVzNHcERIeTk4czBnSHNmYmxzCkY5WDVlWklBWTNxOFg2
|
OFhOK3ZCSTdtRlpxMnBPV0lGNTNXL3owOTZhYmJXL25BClJYNG1iVlg5dXRjN0Q1
|
||||||
am00ZjZaYk50V09wdkRNK281QzEzY3NGQVpPREEKLS0tIE4yWkNIS2lOK2l4MG9z
|
WmlPSE5xRFV6QXIvbWw3SnNWTVVSMmZpZW5wTzQKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
aVFjYkNvc3VSTEw5SWZ1bUZRVU9DN0lyZER6bjAKYzEI+KoTpI/pbWIfIyIMbodx
|
Y1p3IG9pT2R5YU1keGxCdElyY0ZlQmUxVTZ1bnI1MFZySVp0c0lBU3ZTWEZoRTQK
|
||||||
hKG/trp4JBn9Zmmg0YL6UA79rNDH/l89i5zxzCf4K06Sfc0P8ksAXuthXvLZ3Nqf
|
ZGZUd2YrUy8rM2ZsREVrMTJUNUlvRWg5UlVoSm5lZU5UM2ZzRXVmTkR5UQotLS0g
|
||||||
QRbEK13meeu3LJKbrRsWlgQ4g/2mDb3j0tSsTz21lturiHMVRK2KVPobUQ==
|
aURwdHRFcVZJM0RrQ0NsLzFQTUNSWjVCU24rNHIxOXVBVmxaSmU3d0FUVQrNuXSX
|
||||||
|
L9650Q0UWOdVd6wvXK0AAoV3pGosvteaHEpbPyhWUHEGd244dgXLFJA9SQuzBKQn
|
||||||
|
156UisDqjoUzqYl2f0+82CJOzaD44je/7QBWIgAQ5iok3iBC8PSlAvAo/5X5UgBI
|
||||||
|
HDXtJNPi1jfU
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBEcUgw
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBVeThD
|
||||||
QlB5alE2Q2xUMlV1dmc1Mm8zbnZFMmJXUlQ2V3ZKeGlhL3NUMENvCnBWd1pENnZG
|
cTRyOVBqeDBEajZKYzNvVkhRR3FzMVNBbGFqZG1xTktpaXpBd2hzCk9ZVTlnanZa
|
||||||
RVAyN3ZFTWJiSWJTUVpUK3pmdHJieWJkamNpK1R3c0t2dlEKLT4gc3NoLWVkMjU1
|
aVN1V255U0NzOEFCUDduMU5oNDByVWd4SWtPMkFsdHdZZ1EKLT4gc3NoLWVkMjU1
|
||||||
MTkgWXlTVU1RIFJiY1Y3QzBTVkNZZE5qTDJ5QitZY3doQnJUNWQ2dG9TTjBwdjB0
|
MTkgWXlTVU1RIG1TTy8vWFBFd21LYnZWKzhnT2dPREIvL2JvK2R3c0hSTXFOdlVx
|
||||||
WENmZzAKMnhYVmdsVk53N2p6VmszMk5iWVVLaGhPUm5CVGdYZnlVdXJGcUdVTmhT
|
WmlrMW8KVk9ubmxsNHRvSjBTNEtKRU10RytHWnRwT1ZIWS9meVc0dkhlTkxrY3NR
|
||||||
WQotPiBzc2gtZWQyNTUxOSBuanZYNUEgdXRzN1pndzJpbEdCR0MxcTB3QXAxSTNk
|
QQotPiBzc2gtZWQyNTUxOSBuanZYNUEgZW1tc2xRNEtaam5tZ1VYRjNyV0xBbkRX
|
||||||
V1pRcERkcVh1ZWxLaitEY0hXQQpJZmhicjhpSGNySnNyc0wwL0l6cGZFQzVndnVj
|
M0FuWW9SUTR3Um0yUzlBeFhFUQpWNzRpeGlTQ0FpbTI3MmROcEJmMWZ0dmlnZEFp
|
||||||
LzY5TkVrREw0clJVSGdZCi0+IHNzaC1lZDI1NTE5IENxSU9VQSB1TUtldXUvak9w
|
TmNrUGxOSzZIQnA1TTFzCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBpYzJFQ2h6OU5M
|
||||||
ZWh2ZzM4ZmJEUmZWSCtjcGl4U2FrTWtIRUZ4YnA5ZWlVCis5V0p1cXlWSmdTQlhN
|
M2FPYnJLaU9IU2tEMzhrMkJWdS9XTU42d0NrbkVIOFNvCjNPcktPc0YyeDJHeHBx
|
||||||
ZHdoamdtZXdjY0I3bXAxRW9XVWl5dXBLSk1NTkUKLS0tIFJDbGVvS3EzSlEycU9T
|
bnRVU1VQZjNPSTdrOVNZcTVXK01IK2Y4QWVRakkKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
ekhKNnYxZEVzWWFBTCtUeTZiZk84c0twc08zV28KNGsxEB4hTgrU7qDRU/pETnmR
|
Y1p3IERHK0pYT3A1ckJ6SmF0MHkzbGFjV2Q5YmN6cFJxOHZHVDN0RktualBVakkK
|
||||||
J5HcGjLsvpEU4cWrX9Cb8uFvqQZp41QD2Jqo3eZvt9g2fDuyKtXHI790Vqseh6H1
|
SnpIMzRrMmdKVllzN1dVTTRSWklpZEJrTkprSGJhVk9teHFsam5MSStnTQotLS0g
|
||||||
jQqtGyjulOODxCo=
|
TjFuK2JVc2xobzd3Z2ZHQXp6bkFkNXBaOGhwWEZmeXVLSmJNOGUxeUxMawrUo1I0
|
||||||
|
jkaYDLQjS//eqsWaBc94CtnsSkWaUroAExyWob3U5VHaby90E9HpJ5IV+8fvVqxc
|
||||||
|
LDXJF3bAnnAvqKNsWG+daUqDWhdv717Tbw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
Reference in New Issue
Block a user