Compare commits
52
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa4afea341 | ||
|
|
b12731a100 | ||
|
|
ce2c9c76a7 | ||
|
|
dc083ddf1a | ||
|
|
75e71f9ce9 | ||
|
|
19540ea1da | ||
|
|
431f78f8af | ||
|
|
95eea6fc26 | ||
|
|
387a34ffff | ||
|
|
37a833887b | ||
|
|
a69fc4240a | ||
|
|
15c586fbdb | ||
|
|
2daf74d134 | ||
|
|
1934787e80 | ||
|
|
2a476a7bfe | ||
|
|
e94137ecbf | ||
|
|
d22f543043 | ||
|
|
e5e4a38cf1 | ||
|
|
89faa7d97d | ||
|
|
fc4430e4f1 | ||
|
|
f735423d98 | ||
|
|
985dd927c4 | ||
|
|
10d6f85b5e | ||
|
|
85cdfce6a9 | ||
|
|
e62757cf1c | ||
|
|
a1fb195bf4 | ||
|
|
9eb9fdec6c | ||
|
|
a8323e2396 | ||
|
|
855ab6e277 | ||
|
|
2932e9e335 | ||
|
|
4940550c62 | ||
|
|
258934a46b | ||
|
|
2476be3799 | ||
|
|
08111e7a8a | ||
|
|
99cc8efea0 | ||
|
|
09198fda28 | ||
|
|
e16886c62c | ||
|
|
c939d67cb6 | ||
|
|
600aa885d4 | ||
|
|
8efd97599a | ||
|
|
686df31049 | ||
|
|
c3e3ca84a2 | ||
|
|
f8cc47614f | ||
|
|
904754e059 | ||
|
|
673f9b1f8b | ||
|
|
993385f1db | ||
|
|
088c1a0033 | ||
|
|
fcba03f3d0 | ||
|
|
8ba503ca5d | ||
|
|
3b78dfec41 | ||
|
|
8509fff746 | ||
|
|
fb4c6966af |
@@ -1,13 +1,13 @@
|
|||||||
name: Update flake.lock
|
name: Update flake.lock
|
||||||
|
|
||||||
on:
|
"on":
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 0 * * 0" # Every Sunday at midnight UTC
|
- cron: "0 0 * * 0" # Every Sunday at midnight UTC
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-flake-lock:
|
update-flake-lock:
|
||||||
runs-on: [bare-metal, nix-latest]
|
runs-on: nix-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
stages:
|
|
||||||
- eval
|
|
||||||
- build
|
|
||||||
- push
|
|
||||||
|
|
||||||
"Evaluate for builds":
|
|
||||||
stage: eval
|
|
||||||
tags:
|
|
||||||
- kubernetes
|
|
||||||
image: "$CI_REGISTRY/greg/ci-images/builder:latest"
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- gitlab-ci-continue.yml
|
|
||||||
script: nix run ".#gen-build" > gitlab-ci-continue.yml
|
|
||||||
|
|
||||||
"Trigger builds":
|
|
||||||
stage: build
|
|
||||||
trigger:
|
|
||||||
include:
|
|
||||||
- artifact: gitlab-ci-continue.yml
|
|
||||||
job: "Evaluate for builds"
|
|
||||||
variables:
|
|
||||||
PARENT_PIPELINE_ID: $CI_PIPELINE_ID
|
|
||||||
@@ -17,7 +17,7 @@ repos:
|
|||||||
- id: mixed-line-ending
|
- id: mixed-line-ending
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- repo: https://github.com/adrienverge/yamllint.git
|
- repo: https://github.com/adrienverge/yamllint.git
|
||||||
rev: v1.37.1
|
rev: v1.38.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: yamllint
|
- id: yamllint
|
||||||
args:
|
args:
|
||||||
@@ -30,8 +30,9 @@ repos:
|
|||||||
comments: false
|
comments: false
|
||||||
comments-indentation: false
|
comments-indentation: false
|
||||||
document-start: false
|
document-start: false
|
||||||
|
line-length: false
|
||||||
- repo: https://github.com/NixOS/nixfmt
|
- repo: https://github.com/NixOS/nixfmt
|
||||||
rev: v1.1.0
|
rev: v1.2.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: nixfmt-nix
|
- id: nixfmt-nix
|
||||||
- repo: https://github.com/astro/deadnix
|
- repo: https://github.com/astro/deadnix
|
||||||
|
|||||||
+24
-24
@@ -1,30 +1,40 @@
|
|||||||
{
|
{
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs',
|
||||||
top,
|
top,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
builder-config = {
|
system = builtins.replaceStrings [ "darwin" ] [ "linux" ] pkgs.stdenv.hostPlatform.system;
|
||||||
darwin-aarch-builder = top.self.nixosConfigurations.builder-aarch;
|
builderConfig = top.nixunstable.lib.nixosSystem {
|
||||||
darwin-x86-builder = top.self.nixosConfigurations.builder-x86;
|
inherit system;
|
||||||
|
modules = [
|
||||||
|
"${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix"
|
||||||
|
{
|
||||||
|
virtualisation = {
|
||||||
|
host.pkgs = pkgs;
|
||||||
|
darwin-builder = {
|
||||||
|
workingDirectory = "/var/lib/darwin-builder";
|
||||||
|
hostPort = 22;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
builder = arch: let
|
builder = {
|
||||||
b = builder-config."darwin-${arch}-builder";
|
command = "${builderConfig.config.system.build.macos-builder-installer}/bin/create-builder";
|
||||||
in {
|
|
||||||
command = "${b.config.system.build.macos-builder-installer}/bin/create-builder";
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
KeepAlive = true;
|
KeepAlive = true;
|
||||||
RunAtLoad = true;
|
RunAtLoad = true;
|
||||||
StandardOutPath = "/var/log/builder-vm-${arch}.log";
|
StandardOutPath = "/var/log/builder-vm-${system}.log";
|
||||||
StandardErrorPath = "/var/log/builder-vm-${arch}.stderr.log";
|
StandardErrorPath = "/var/log/builder-vm-${system}.stderr.log";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
agenix
|
agenix
|
||||||
hms
|
pkgs'.hms
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
@@ -32,23 +42,13 @@ in
|
|||||||
nerd-fonts.hack
|
nerd-fonts.hack
|
||||||
];
|
];
|
||||||
|
|
||||||
#launchd.daemons = lib.genAttrs' [ "x86" "aarch" ] (arch: lib.nameValuePair "builder-${arch}-machine" (builder arch));
|
#launchd.daemons.darwin-builder = builder;
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
|
#buildMachines = [ { systems = ["aarch64-linux"]; sshUser = "builder"; sshKey = "/etc/nix/builder_ed25519"; hostName = "localhost:31022"; protocol = "ssh-ng"; }];
|
||||||
enable = true;
|
enable = true;
|
||||||
buildMachines = [
|
|
||||||
{
|
|
||||||
hostName = "ssh-ng://builder@localhost";
|
|
||||||
system = "aarch64-linux";
|
|
||||||
maxJobs = 4;
|
|
||||||
supportedFeatures = [
|
|
||||||
"kvm"
|
|
||||||
"benchmarch"
|
|
||||||
"big-parallel"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
gc.interval.Hour = 3;
|
gc.interval.Hour = 3;
|
||||||
|
#linux-builder.enable = true;
|
||||||
settings.auto-optimise-store = false; # Darwin bugs?
|
settings.auto-optimise-store = false; # Darwin bugs?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+2
-8
@@ -19,6 +19,7 @@ let
|
|||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit metadata top;
|
inherit metadata top;
|
||||||
inherit (top) self;
|
inherit (top) self;
|
||||||
|
pkgs' = top.self.packages.${system};
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
@@ -37,11 +38,4 @@ let
|
|||||||
++ lib.optionals (builtins.pathExists ./hosts/${name}) [ ./hosts/${name} ];
|
++ lib.optionals (builtins.pathExists ./hosts/${name}) [ ./hosts/${name} ];
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
(
|
(lib.genAttrs (builtins.attrNames (builtins.readDir ./hosts)) (name: mac { inherit name; }))
|
||||||
lib.genAttrs
|
|
||||||
(builtins.attrNames (builtins.readDir ./hosts))
|
|
||||||
(
|
|
||||||
name:
|
|
||||||
mac { inherit name; }
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ in
|
|||||||
"bitwarden"
|
"bitwarden"
|
||||||
"bruno"
|
"bruno"
|
||||||
"chromium"
|
"chromium"
|
||||||
|
"claude"
|
||||||
"dbeaver-community"
|
"dbeaver-community"
|
||||||
"ghostty"
|
"ghostty"
|
||||||
"firefox"
|
"firefox"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, ... }:
|
{ ... }:
|
||||||
let
|
let
|
||||||
username = "greg";
|
username = "greg";
|
||||||
in
|
in
|
||||||
|
|||||||
Generated
+197
-104
@@ -25,19 +25,17 @@
|
|||||||
},
|
},
|
||||||
"buildbot": {
|
"buildbot": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"hercules-ci-effects": "hercules-ci-effects",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixunstable"
|
"nixunstable"
|
||||||
],
|
],
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775969270,
|
"lastModified": 1779096866,
|
||||||
"narHash": "sha256-uu+DFoqMI2g2E+QE6EQfVc4g/jibNSnVobSUhxFr20o=",
|
"narHash": "sha256-8HtF1G7OPMXzo+f+0W+7zwzhuBUSk2EMrOS4ZvFw7+I=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "buildbot-nix",
|
"repo": "buildbot-nix",
|
||||||
"rev": "df9ff85cf20cedeae2f231dc2997d2e8ca5810cf",
|
"rev": "891f2baba218f4365f0c6ef96ea33f9b277f5ed0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -97,11 +95,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775037210,
|
"lastModified": 1779036909,
|
||||||
"narHash": "sha256-KM2WYj6EA7M/FVZVCl3rqWY+TFV5QzSyyGE2gQxeODU=",
|
"narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "06648f4902343228ce2de79f291dd5a58ee12146",
|
"rev": "56c666e108467d87d13508936aade6d567f2a501",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -128,6 +126,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat_2": {
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747046372,
|
||||||
|
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_3": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767039857,
|
"lastModified": 1767039857,
|
||||||
@@ -145,17 +159,14 @@
|
|||||||
},
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
"buildbot",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775087534,
|
"lastModified": 1778716662,
|
||||||
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
|
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
|
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -166,14 +177,17 @@
|
|||||||
},
|
},
|
||||||
"flake-parts_2": {
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": [
|
||||||
|
"nixvimunstable",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775087534,
|
"lastModified": 1778716662,
|
||||||
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
|
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
|
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -183,27 +197,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_3": {
|
"flake-parts_3": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"nixvimunstable",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1775087534,
|
|
||||||
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts_4": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nurpkgs",
|
"nurpkgs",
|
||||||
@@ -239,31 +232,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hercules-ci-effects": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": [
|
|
||||||
"buildbot",
|
|
||||||
"flake-parts"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"buildbot",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1773550609,
|
|
||||||
"narHash": "sha256-neu7ixXHjV3LobVjOndkL97u+6UF6Yoh+CUnzX7kUBQ=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "hercules-ci-effects",
|
|
||||||
"rev": "554f6ed448ca74c00aa2371cde901ae1e73005b9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "hercules-ci-effects",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hmunstable": {
|
"hmunstable": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -271,11 +239,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776184304,
|
"lastModified": 1779125151,
|
||||||
"narHash": "sha256-No6QGBmIv5ChiwKCcbkxjdEQ/RO2ZS1gD7SFy6EZ7rc=",
|
"narHash": "sha256-bPHT0oJAHe5a43lkkSGAiCEg/RBqpwv5xsFrcj+Bog8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "3c7524c68348ef79ce48308e0978611a050089b2",
|
"rev": "fab3fd7327a0ac7a1fae5095bf140377704fac7f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -306,6 +274,45 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"minecraft": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778039471,
|
||||||
|
"narHash": "sha256-Arjg44jFcpSqOKK05EIxbKIjhfjou/EGF12COFU+9QA=",
|
||||||
|
"owner": "Infinidoge",
|
||||||
|
"repo": "nix-minecraft",
|
||||||
|
"rev": "87611ef4788116de05f851920c5958f0c37d5b05",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Infinidoge",
|
||||||
|
"repo": "nix-minecraft",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niks3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"treefmt-nix": "treefmt-nix_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778839878,
|
||||||
|
"narHash": "sha256-S2nSP6YWUz8I2uRZuAY93FoAAUa9TiZetLzjBv1n5vk=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "niks3",
|
||||||
|
"rev": "c29f3641de064545d75f00318cd45bea2b4ea1d0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "niks3",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nix-github-actions": {
|
"nix-github-actions": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -329,11 +336,11 @@
|
|||||||
},
|
},
|
||||||
"nix-hardware": {
|
"nix-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775490113,
|
"lastModified": 1779099457,
|
||||||
"narHash": "sha256-2ZBhDNZZwYkRmefK5XLOusCJHnoeKkoN95hoSGgMxWM=",
|
"narHash": "sha256-u73aVD/lUmmT3JV+kPDztl7zPwQKd0eobD1AbJltaGs=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "c775c2772ba56e906cbeb4e0b2db19079ef11ff7",
|
"rev": "8792fab9d4a6454a9201675f01326f827ce35ead",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -360,11 +367,26 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774748309,
|
"lastModified": 1777168982,
|
||||||
"narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=",
|
"narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "333c4e0545a6da976206c74db8773a1645b5870a",
|
"rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-lib_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778984393,
|
||||||
|
"narHash": "sha256-r755Kh5Q0XBTPNuv9rL2rsUJTq8BDhb+lIwRWhl6yYA=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"rev": "0d14a58ab7aa3f513c58ccc9e47e77ffd92be204",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -375,11 +397,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776169885,
|
"lastModified": 1769461804,
|
||||||
"narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
|
"narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9",
|
"rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -391,27 +413,59 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1766025857,
|
"lastModified": 1778491576,
|
||||||
"narHash": "sha256-Lav5jJazCW4mdg1iHcROpuXqmM94BWJvabLFWaJVJp0=",
|
"narHash": "sha256-9YOHDS9ANGbRmf3DSQ9UCvas3CyYNIBwBkKGQZTLXGY=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "1174f92bf37f1a5914be77e1b44482d6fbc75ecc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable-small",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778869304,
|
||||||
|
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "def3da69945bbe338c373fddad5a1bb49cf199ce",
|
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1777207419,
|
||||||
|
"narHash": "sha256-V3bmPWAajDiC+1ClDOp55gianW2EyRJSJOyu1RUQibc=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a7ecea3deccfbdbf22945a89984fcc5a169da8aa",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "def3da69945bbe338c373fddad5a1bb49cf199ce",
|
"rev": "a7ecea3deccfbdbf22945a89984fcc5a169da8aa",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixunstable": {
|
"nixunstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776169885,
|
"lastModified": 1778869304,
|
||||||
"narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
|
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9",
|
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -423,18 +477,18 @@
|
|||||||
},
|
},
|
||||||
"nixvimunstable": {
|
"nixvimunstable": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_3",
|
"flake-parts": "flake-parts_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixunstable"
|
"nixunstable"
|
||||||
],
|
],
|
||||||
"systems": "systems_2"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776350339,
|
"lastModified": 1779116047,
|
||||||
"narHash": "sha256-Rl+tnpvdpf66e/3m+LPNzUoebV3jpiJz7oMxas8FB3I=",
|
"narHash": "sha256-2BnXm4/BvR5B0CH8nxC4CL+y+Z7woqPbPxKO7IMH85U=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "4f75992439d3d554a3681880510e4b645ca2d15b",
|
"rev": "1367315826ebda2bebbf896029f44ac05df523f5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -446,15 +500,15 @@
|
|||||||
},
|
},
|
||||||
"nurpkgs": {
|
"nurpkgs": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_4",
|
"flake-parts": "flake-parts_3",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776350162,
|
"lastModified": 1779124721,
|
||||||
"narHash": "sha256-iGEy0sg4EPO8yivJ6YweACEM3f18rLJfM7wjG/HCz8A=",
|
"narHash": "sha256-Z1q8QkuHAdkmXh4SItOzViVVFVLb+tzaEaYCTHI2UKk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "46a3451d51a24c20062a0db7c00201cdf1cc8e7a",
|
"rev": "ad57d8faf36bb02c65c90012cd0289daa0b2d9c4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -469,9 +523,12 @@
|
|||||||
"buildbot": "buildbot",
|
"buildbot": "buildbot",
|
||||||
"colmena": "colmena",
|
"colmena": "colmena",
|
||||||
"darwin": "darwin_2",
|
"darwin": "darwin_2",
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts",
|
||||||
"hmunstable": "hmunstable",
|
"hmunstable": "hmunstable",
|
||||||
|
"minecraft": "minecraft",
|
||||||
|
"niks3": "niks3",
|
||||||
"nix-hardware": "nix-hardware",
|
"nix-hardware": "nix-hardware",
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib_2",
|
||||||
"nixunstable": "nixunstable",
|
"nixunstable": "nixunstable",
|
||||||
"nixvimunstable": "nixvimunstable",
|
"nixvimunstable": "nixvimunstable",
|
||||||
"nurpkgs": "nurpkgs",
|
"nurpkgs": "nurpkgs",
|
||||||
@@ -525,6 +582,21 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -546,16 +618,37 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vsext": {
|
"treefmt-nix_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": [
|
||||||
|
"niks3",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776310443,
|
"lastModified": 1775636079,
|
||||||
"narHash": "sha256-XQo/vlS6xak3iT3xS2Q3TUMbreeeqe+PR99feUoV0UQ=",
|
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"vsext": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_5"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1779077424,
|
||||||
|
"narHash": "sha256-2nuxPFMR1R3IlV/OlF65qjs2gGjHhASa7U0+8QX0bJg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-vscode-extensions",
|
"repo": "nix-vscode-extensions",
|
||||||
"rev": "3a6d0ea13d092493b285b9093b5ce81e79df5cee",
|
"rev": "b7bde1772cdb20e77381516fbbb5306a621d0965",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -566,17 +659,17 @@
|
|||||||
},
|
},
|
||||||
"wsl": {
|
"wsl": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_3",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixunstable"
|
"nixunstable"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776255237,
|
"lastModified": 1777732699,
|
||||||
"narHash": "sha256-LQjlc0VEn55WAT4BiI8sIsokb/2FNlcbBD+Xr3MTE24=",
|
"narHash": "sha256-2uX/XtOWZ/oy2rerRynVhqVA//ZXZ3Fo60PikLHEPQc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "9a8c2a85f1ffdcecfb0f9c52c5a73c49ceb43911",
|
"rev": "5482f113fd31ebac131d1ebeb2ae90bf0d5e41f5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -23,7 +23,10 @@
|
|||||||
url = "github:nix-community/home-manager/master";
|
url = "github:nix-community/home-manager/master";
|
||||||
inputs.nixpkgs.follows = "nixunstable";
|
inputs.nixpkgs.follows = "nixunstable";
|
||||||
};
|
};
|
||||||
|
minecraft.url = "github:Infinidoge/nix-minecraft";
|
||||||
|
niks3.url = "github:Mic92/niks3";
|
||||||
nix-hardware.url = "github:nixos/nixos-hardware";
|
nix-hardware.url = "github:nixos/nixos-hardware";
|
||||||
|
nixpkgs-lib.url = "github:nix-community/nixpkgs.lib";
|
||||||
nixvimunstable = {
|
nixvimunstable = {
|
||||||
url = "github:nix-community/nixvim/main";
|
url = "github:nix-community/nixvim/main";
|
||||||
inputs.nixpkgs.follows = "nixunstable";
|
inputs.nixpkgs.follows = "nixunstable";
|
||||||
@@ -47,6 +50,7 @@
|
|||||||
top.nixvimunstable.overlays.default
|
top.nixvimunstable.overlays.default
|
||||||
top.nurpkgs.overlays.default
|
top.nurpkgs.overlays.default
|
||||||
top.vsext.overlays.default
|
top.vsext.overlays.default
|
||||||
|
top.minecraft.overlay
|
||||||
];
|
];
|
||||||
metadata = builtins.fromJSON (builtins.readFile ./network.json);
|
metadata = builtins.fromJSON (builtins.readFile ./network.json);
|
||||||
systems = [
|
systems = [
|
||||||
@@ -65,6 +69,7 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
lib' = import ./lib { inherit (top.nixunstable) lib; };
|
||||||
in
|
in
|
||||||
top.flake-parts.lib.mkFlake { inputs = top; } {
|
top.flake-parts.lib.mkFlake { inputs = top; } {
|
||||||
inherit systems;
|
inherit systems;
|
||||||
@@ -76,10 +81,12 @@
|
|||||||
nixpkgs = imported_packages.x86_64-linux;
|
nixpkgs = imported_packages.x86_64-linux;
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit
|
inherit
|
||||||
|
lib'
|
||||||
metadata
|
metadata
|
||||||
self
|
self
|
||||||
top
|
top
|
||||||
;
|
;
|
||||||
|
pkgs' = top.self.packages.x86_64-linux;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -112,7 +119,7 @@
|
|||||||
|
|
||||||
nixosConfigurations = (
|
nixosConfigurations = (
|
||||||
import ./hosts {
|
import ./hosts {
|
||||||
inherit top metadata;
|
inherit top metadata lib';
|
||||||
nixpkgs = imported_packages;
|
nixpkgs = imported_packages;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -141,16 +148,17 @@
|
|||||||
pkgs = imported_packages.${system};
|
pkgs = imported_packages.${system};
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = (import ./pkgs { inherit pkgs; });
|
packages = (import ./pkgs { inherit pkgs top; });
|
||||||
|
|
||||||
checks = import ./checks.nix {
|
checks = import ./checks.nix {
|
||||||
inherit system top self';
|
inherit system top self';
|
||||||
inherit (pkgs) lib;
|
inherit (top.nixpkgs-lib) lib;
|
||||||
};
|
};
|
||||||
|
|
||||||
devShells = import ./shells.nix {
|
devShells = import ./shells.nix {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit (top) colmena;
|
inherit (top) colmena;
|
||||||
|
inherit (self') packages;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
+22
-23
@@ -1,24 +1,23 @@
|
|||||||
builds:
|
builds:
|
||||||
exclude:
|
# Exclude most things, as I locally build x86_64-linux and aarch64-linux
|
||||||
- "homeConfigurations.*"
|
- exclude:
|
||||||
- "nixosConfigurations.*"
|
- "homeConfigurations.*"
|
||||||
- "packages.*"
|
- "nixosConfigurations.*"
|
||||||
# bitwarden-cli package is broken on aarch64-darwin
|
- "packages.*"
|
||||||
- "packages.aarch64-darwin.img-bitwarden"
|
# These are just images which I will build when
|
||||||
# kmod-31 is not a thing on Darwin
|
# I feel like it
|
||||||
- "packages.aarch64-darwin.qemu-hook"
|
- "devShells.*"
|
||||||
- "packages.aarch64-darwin.vfio_shutdown"
|
include:
|
||||||
- "packages.aarch64-darwin.vfio_startup"
|
- "packages.aarch64-darwin.*"
|
||||||
# This one is a bit of a beast and shouldn't take up Garnix time
|
- darwinConfigurations.MacBook-Pro
|
||||||
- "packages.aarch64-darwin.zim"
|
- darwinConfigurations.MacBook-Prolocal
|
||||||
# These are just images which I will build when
|
- darwinConfigurations.li
|
||||||
# I feel like it
|
# Some specific includes which are not specific enough to override the rules
|
||||||
- "devShells.*"
|
# above, due to the intrepretation of the glob excludes, but which I still
|
||||||
include:
|
# need included
|
||||||
- "packages.aarch64-darwin.*"
|
- include:
|
||||||
- homeConfigurations.exodus
|
# These are Mac homeConfigurations, which I do not have the infra
|
||||||
- darwinConfigurations.MacBook-Pro
|
# to build at home
|
||||||
- darwinConfigurations.MacBook-Prolocal
|
- homeConfigurations."gregory.hellings-mbp"
|
||||||
- darwinConfigurations.li
|
- homeConfigurations.gregs-MacBook-Pro-16-inch-Nov-2024
|
||||||
- nixosConfigurations.builder-x86
|
- homeConfigurations.ivr
|
||||||
- nixosConfigurations.builder-aarch
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# vim: set filetype=nushell :
|
# vim: set filetype=nushell :
|
||||||
let servers = [isaiah jeremiah zeke genesis vm-gitlab]
|
let servers = [isaiah jeremiah zeke genesis]
|
||||||
|
|
||||||
def par-map [ items: list, c: closure ] {
|
def par-map [ items: list, c: closure ] {
|
||||||
let results = $items | par-each -k $c
|
let results = $items | par-each -k $c
|
||||||
@@ -71,6 +71,8 @@ def dc [ $cmd: string = "sh" ] {
|
|||||||
|
|
||||||
def claude [ ] {
|
def claude [ ] {
|
||||||
unlock
|
unlock
|
||||||
|
$env.GITLAB_TOKEN = ^bw get item 7d3da4e9-5f9a-49d0-8e14-b39c010a4001 | from json | get fields | find claudeapi | get value
|
||||||
|
#$env.ANTHROPIC_API_KEY = ^bw get item e122fd08-3506-4f21-9c6a-b42b00fe5be1 | from json | get login.password
|
||||||
^claude
|
^claude
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
nixcopy = "nix copy --to \"s3://binary-cache/?profile=default&endpoint=nas.home%3A9000&scheme=http\"";
|
nixcopy = "nix copy --to \"s3://binary-cache/?profile=default&endpoint=nas.home%3A9000&scheme=http\"";
|
||||||
r = "run0";
|
r = "run0";
|
||||||
updateScript = "nix-shell maintainers/scripts/update.nix --argstr package";
|
updateScript = "nix-shell maintainers/scripts/update.nix --argstr package";
|
||||||
|
p = "${lib.getExe pkgs.podman-tui}";
|
||||||
|
|
||||||
# General
|
# General
|
||||||
k = "kubectl";
|
k = "kubectl";
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
# This allows things like SSH in distrobox to read the config file just fine
|
# This allows things like SSH in distrobox to read the config file just fine
|
||||||
home.file.".ssh/config" = {
|
home.file.".ssh/config" = {
|
||||||
target = ".ssh/config_source";
|
target = ".ssh/config_source";
|
||||||
onChange = ''cat ~/.ssh/config_source > ~/.ssh/config && chmod 600 ~/.ssh/config'';
|
onChange = "cat ~/.ssh/config_source > ~/.ssh/config && chmod 600 ~/.ssh/config";
|
||||||
};
|
};
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -38,11 +38,6 @@ def _ivr2(args):
|
|||||||
vpn("gregory_hellings@ra.ivrtechnology.com", "IVR Technology")
|
vpn("gregory_hellings@ra.ivrtechnology.com", "IVR Technology")
|
||||||
aliases['ivr2'] = _ivr2
|
aliases['ivr2'] = _ivr2
|
||||||
|
|
||||||
def _glrestart(args):
|
|
||||||
sudo nixos-container run gitlab -- systemctl restart gitlab
|
|
||||||
sudo nixos-container run gitlab -- systemctl restart nginx
|
|
||||||
aliases['glrestart'] = _glrestart
|
|
||||||
|
|
||||||
def _aws_creds(args):
|
def _aws_creds(args):
|
||||||
$AWS_ACCESS_KEY_ID=$(bw get username "AWS Access Key")
|
$AWS_ACCESS_KEY_ID=$(bw get username "AWS Access Key")
|
||||||
$AWS_SECRET_ACCESS_KEY=$(bw get password "AWS Access Key")
|
$AWS_SECRET_ACCESS_KEY=$(bw get password "AWS Access Key")
|
||||||
|
|||||||
+5
-6
@@ -10,7 +10,9 @@ let
|
|||||||
let
|
let
|
||||||
inherit (metadata.hosts.${host}) system;
|
inherit (metadata.hosts.${host}) system;
|
||||||
pkgs = nixpkgs.${system};
|
pkgs = nixpkgs.${system};
|
||||||
username = if builtins.hasAttr "user" metadata.hosts.${host} then metadata.hosts.${host}.user else "greg";
|
pkgs' = top.self.packages.${system};
|
||||||
|
username =
|
||||||
|
if builtins.hasAttr "user" metadata.hosts.${host} then metadata.hosts.${host}.user else "greg";
|
||||||
in
|
in
|
||||||
top.hmunstable.lib.homeManagerConfiguration {
|
top.hmunstable.lib.homeManagerConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
@@ -24,6 +26,7 @@ let
|
|||||||
host
|
host
|
||||||
username
|
username
|
||||||
metadata
|
metadata
|
||||||
|
pkgs'
|
||||||
;
|
;
|
||||||
nixvim = top.nixvimunstable;
|
nixvim = top.nixvimunstable;
|
||||||
gui = false;
|
gui = false;
|
||||||
@@ -31,8 +34,4 @@ let
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
(
|
(lib.genAttrs (builtins.attrNames (builtins.readDir ./hosts)) user)
|
||||||
lib.genAttrs
|
|
||||||
(builtins.attrNames (builtins.readDir ./hosts))
|
|
||||||
user
|
|
||||||
)
|
|
||||||
|
|||||||
+3
-2
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs',
|
||||||
lib,
|
lib,
|
||||||
host ? "most",
|
host ? "most",
|
||||||
top,
|
top,
|
||||||
@@ -38,7 +39,7 @@ in
|
|||||||
gh
|
gh
|
||||||
git
|
git
|
||||||
gnupatch
|
gnupatch
|
||||||
hms
|
pkgs'.hms
|
||||||
btop
|
btop
|
||||||
inetutils
|
inetutils
|
||||||
jq
|
jq
|
||||||
@@ -46,7 +47,7 @@ in
|
|||||||
nix-prefetch
|
nix-prefetch
|
||||||
nmap
|
nmap
|
||||||
openssl
|
openssl
|
||||||
setup-ssh
|
pkgs'.setup-ssh
|
||||||
tmux
|
tmux
|
||||||
tree
|
tree
|
||||||
unzip
|
unzip
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, ... }:
|
{ lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
greg = {
|
greg = {
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
minio-client
|
minio-client
|
||||||
mumble
|
mumble
|
||||||
pre-commit
|
pre-commit
|
||||||
|
prismlauncher
|
||||||
restic
|
restic
|
||||||
restic-browser
|
restic-browser
|
||||||
tea
|
tea
|
||||||
@@ -35,4 +36,13 @@
|
|||||||
settings.SKIP_HOST_UPDATE = true;
|
settings.SKIP_HOST_UPDATE = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
xdg.desktopEntries = {
|
||||||
|
prismlauncher = {
|
||||||
|
name = "Prism Launcher - Minecraft";
|
||||||
|
actions.minecraft = {
|
||||||
|
name = "Minecraft";
|
||||||
|
exec = lib.getExe pkgs.prismlauncher;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,11 +22,11 @@
|
|||||||
home-manager
|
home-manager
|
||||||
python3Packages.ipython
|
python3Packages.ipython
|
||||||
just
|
just
|
||||||
|
glab
|
||||||
go
|
go
|
||||||
gopls
|
gopls
|
||||||
mariadb
|
mariadb
|
||||||
nixVersions.stable
|
nixVersions.stable
|
||||||
pipenv-ivr
|
|
||||||
pre-commit
|
pre-commit
|
||||||
python311
|
python311
|
||||||
python3Packages.flake8
|
python3Packages.flake8
|
||||||
|
|||||||
@@ -4,9 +4,11 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
python = pkgs.python312.withPackages (p: with p; [
|
python = pkgs.python312.withPackages (
|
||||||
ipython
|
p: with p; [
|
||||||
]);
|
ipython
|
||||||
|
]
|
||||||
|
);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Disables hitting local cache
|
# Disables hitting local cache
|
||||||
@@ -27,17 +29,23 @@ in
|
|||||||
direnv
|
direnv
|
||||||
home-manager
|
home-manager
|
||||||
just
|
just
|
||||||
|
mcp-grafana
|
||||||
nixVersions.stable
|
nixVersions.stable
|
||||||
|
podman
|
||||||
|
poetry
|
||||||
pre-commit
|
pre-commit
|
||||||
(pulumi.withPackages (p: with p; [
|
(pulumi.withPackages (
|
||||||
pulumi-aws-native
|
p: with p; [
|
||||||
pulumi-command
|
pulumi-aws-native
|
||||||
pulumi-go
|
pulumi-command
|
||||||
pulumi-nodejs
|
pulumi-go
|
||||||
pulumi-python
|
pulumi-nodejs
|
||||||
]))
|
pulumi-python
|
||||||
|
]
|
||||||
|
))
|
||||||
python
|
python
|
||||||
rustc
|
rustc
|
||||||
|
terraform
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+12
-2
@@ -3,19 +3,24 @@
|
|||||||
lib,
|
lib,
|
||||||
metadata,
|
metadata,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
top,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../modules/nix-conf.nix
|
../modules/nix-conf.nix
|
||||||
|
top.niks3.nixosModules.niks3-auto-upload
|
||||||
];
|
];
|
||||||
|
|
||||||
|
age.secrets.niks3-api-token.file = ../secrets/niks3/api_token.age;
|
||||||
|
|
||||||
console = {
|
console = {
|
||||||
font = "Lat2-Terminus16";
|
font = "Lat2-Terminus16";
|
||||||
keyMap = "us";
|
keyMap = "us";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
top.niks3.packages.${pkgs.stdenv.hostPlatform.system}.niks3
|
||||||
agenix
|
agenix
|
||||||
bitwarden-cli
|
bitwarden-cli
|
||||||
bmon
|
bmon
|
||||||
@@ -26,10 +31,9 @@
|
|||||||
efibootmgr
|
efibootmgr
|
||||||
findutils
|
findutils
|
||||||
file
|
file
|
||||||
gcc-tune
|
|
||||||
git
|
git
|
||||||
gnupatch
|
gnupatch
|
||||||
hms # My own home manager switcher
|
top.self.packages.${pkgs.stdenv.hostPlatform.system}.hms # My own home manager switcher
|
||||||
iperf
|
iperf
|
||||||
killall
|
killall
|
||||||
nano
|
nano
|
||||||
@@ -97,6 +101,12 @@
|
|||||||
# Enable the OpenSSH daemon for remote control
|
# Enable the OpenSSH daemon for remote control
|
||||||
services = {
|
services = {
|
||||||
locate.enable = true;
|
locate.enable = true;
|
||||||
|
niks3-auto-upload = {
|
||||||
|
enable = config.greg.nix.cache;
|
||||||
|
authTokenFile = config.age.secrets.niks3-api-token.path;
|
||||||
|
serverUrl = "http://hosea.nebula.thehellings.com:5751";
|
||||||
|
verifyS3Integrity = true;
|
||||||
|
};
|
||||||
openssh = {
|
openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.X11Forwarding = true;
|
settings.X11Forwarding = true;
|
||||||
|
|||||||
+8
-33
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
top,
|
top,
|
||||||
|
lib',
|
||||||
metadata,
|
metadata,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
}:
|
}:
|
||||||
@@ -14,11 +15,17 @@ let
|
|||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (metadata.hosts.${name}) system;
|
inherit (metadata.hosts.${name}) system;
|
||||||
|
pkgs' = top.self.packages.${system};
|
||||||
in
|
in
|
||||||
channel.lib.nixosSystem {
|
channel.lib.nixosSystem {
|
||||||
pkgs = nixpkgs.${system};
|
pkgs = nixpkgs.${system};
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit metadata top;
|
inherit
|
||||||
|
metadata
|
||||||
|
top
|
||||||
|
lib'
|
||||||
|
pkgs'
|
||||||
|
;
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
@@ -44,16 +51,6 @@ in
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
// (lib.genAttrs
|
|
||||||
(builtins.attrNames (lib.filterAttrs (_: v: v == "directory") (builtins.readDir ./vm)))
|
|
||||||
(
|
|
||||||
name:
|
|
||||||
(unstable {
|
|
||||||
inherit name;
|
|
||||||
extraMods = [ ./vm/${name} ];
|
|
||||||
})
|
|
||||||
)
|
|
||||||
)
|
|
||||||
// {
|
// {
|
||||||
# nix build '.#nixosConfigurations.wsl.config.system.build.installer'
|
# nix build '.#nixosConfigurations.wsl.config.system.build.installer'
|
||||||
#nixos = wsl { name = "wsl"; };
|
#nixos = wsl { name = "wsl"; };
|
||||||
@@ -62,26 +59,4 @@ in
|
|||||||
# name = "wsl";
|
# name = "wsl";
|
||||||
# system = "aarch64-linux";
|
# system = "aarch64-linux";
|
||||||
#};
|
#};
|
||||||
|
|
||||||
builder-aarch = lib.nixosSystem {
|
|
||||||
system = "aarch64-linux";
|
|
||||||
modules = [
|
|
||||||
"${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix"
|
|
||||||
{
|
|
||||||
virtualisation.host.pkgs = import top.nixunstable { system = "aarch64-darwin"; };
|
|
||||||
boot.loader.grub.devices = [ "/dev/vda" ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
builder-x86 = lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
modules = [
|
|
||||||
"${top.nixunstable}/nixos/modules/profiles/nix-builder-vm.nix"
|
|
||||||
{
|
|
||||||
virtualisation.host.pkgs = import top.nixunstable { system = "aarch64-darwin"; };
|
|
||||||
boot.loader.grub.devices = [ "/dev/vda" ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,10 +43,6 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
tags = [ "mobile" ];
|
tags = [ "mobile" ];
|
||||||
};
|
};
|
||||||
runner = {
|
|
||||||
enable = true;
|
|
||||||
qemu = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
|||||||
@@ -2,48 +2,23 @@
|
|||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
{ lib, pkgs, ... }:
|
{
|
||||||
|
top,
|
||||||
let
|
pkgs,
|
||||||
adblockUpdate = pkgs.writeShellApplication {
|
pkgs',
|
||||||
name = "adblock-update";
|
...
|
||||||
runtimeInputs = with pkgs; [
|
}:
|
||||||
curl
|
|
||||||
gnused
|
|
||||||
systemd
|
|
||||||
];
|
|
||||||
text = ''
|
|
||||||
curl -s https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | sed '1,33d' > /etc/adblock_hosts
|
|
||||||
curl -s https://adaway.org/hosts.txt | sed '1,24d' | sed 's/127.0.0.1/0.0.0.0/' >> /etc/adblock_hosts
|
|
||||||
|
|
||||||
# Custom domains that I need to preserve for some reason
|
|
||||||
for f in "segment.com" "segment.io" "branch.io" "dev.visualwebsiteoptimizer.com" "click.discord.com"; do
|
|
||||||
sed -i -e "/''${f}/d" /etc/adblock_hosts # Blocks Trelly content for house investors
|
|
||||||
done
|
|
||||||
|
|
||||||
systemctl restart dnsmasq
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# Include the results of the hardware scan.
|
# Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./networking.nix
|
./networking.nix
|
||||||
|
top.minecraft.nixosModules.minecraft-servers
|
||||||
];
|
];
|
||||||
|
|
||||||
greg = {
|
greg = {
|
||||||
home = true;
|
home = true;
|
||||||
gnome.enable = false;
|
gnome.enable = false;
|
||||||
nebula = {
|
|
||||||
enable = true;
|
|
||||||
# genesis IS the routing node for the home LAN — it does not route through itself.
|
|
||||||
# Override the module default (which points at genesis) to avoid a routing loop.
|
|
||||||
unsafeRoutes = [ ];
|
|
||||||
# genesis routes the home LAN (10.42.0.0/16) into the Nebula overlay.
|
|
||||||
# Sign genesis's cert with -subnets '10.42.0.0/16' (see secrets/nebula/README.md).
|
|
||||||
routesSubnet = "10.42.0.0/16";
|
|
||||||
};
|
|
||||||
proxies = {
|
proxies = {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -61,26 +36,121 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
create_ssl
|
pkgs'.create_ssl
|
||||||
step-ca
|
step-ca
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "genesis"; # Define your hostname.
|
networking.hostName = "genesis"; # Define your hostname.
|
||||||
|
|
||||||
systemd = {
|
services = {
|
||||||
services.adblock-update = {
|
minecraft-servers = {
|
||||||
after = [ "network-online.target" ];
|
enable = true;
|
||||||
requires = [ "network-online.target" ];
|
eula = true;
|
||||||
script = lib.getExe adblockUpdate;
|
openFirewall = true;
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
};
|
servers = {
|
||||||
timers.adblock-update = {
|
maya = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
enable = true;
|
||||||
after = [ "network-online.target" ];
|
operators = {
|
||||||
requires = [ "network-online.target" ];
|
Almec = {
|
||||||
timerConfig = {
|
bypassesPlayerLimit = true;
|
||||||
OnCalendar = "daily";
|
uuid = "7884dc5a-ae21-43d5-9506-a934d59be19a";
|
||||||
Unit = "adblock-update.service";
|
};
|
||||||
|
};
|
||||||
|
package = pkgs.fabricServers.fabric.override { jre_headless = pkgs.openjdk25_headless; };
|
||||||
|
|
||||||
|
serverProperties = {
|
||||||
|
allow-flight = true;
|
||||||
|
motd = "Maya's Minecraft World";
|
||||||
|
online-mode = true;
|
||||||
|
};
|
||||||
|
whitelist = { };
|
||||||
|
|
||||||
|
jvmOpts = "-Xms4092M -Xmx4092M";
|
||||||
|
|
||||||
|
symlinks = {
|
||||||
|
mods = pkgs.linkFarmFromDrvs "mods" (
|
||||||
|
builtins.attrValues {
|
||||||
|
# Health info
|
||||||
|
appleskin = pkgs.fetchurl {
|
||||||
|
url = "https://cdn.modrinth.com/data/EsAfCjCV/versions/HwaLJe3v/appleskin-fabric-mc26.1-3.0.9.jar";
|
||||||
|
hash = "sha256-iNCycR/oxqFpbPGfIcfgfWOm7PzPiIu5AmBWb8asTb4=";
|
||||||
|
};
|
||||||
|
# Needed by survivalfly
|
||||||
|
balm = pkgs.fetchurl {
|
||||||
|
url = "https://mediafilez.forgecdn.net/files/7959/843/balm-fabric-26.1.2-26.1.2.4.jar";
|
||||||
|
hash = "sha256-zDtDxkxOftpW0wUIap7l6abGCjXNczwrF2wLZDztyA0=";
|
||||||
|
};
|
||||||
|
# Adds more diverse biomes
|
||||||
|
# https://www.curseforge.com/minecraft/mc-mods/biomes-o-plenty
|
||||||
|
biomes = pkgs.fetchurl {
|
||||||
|
url = "https://mediafilez.forgecdn.net/files/7977/180/BiomesOPlenty-fabric-26.1.2-26.1.2.0.3.jar";
|
||||||
|
hash = "sha256-0aPtsRep0ftbkKqbp69PgUnNJyOBLY9vcPsB1mhOy/M=";
|
||||||
|
};
|
||||||
|
# Automation engines
|
||||||
|
# https://www.curseforge.com/minecraft/mc-mods/create
|
||||||
|
#create = pkgs.fetchurl {
|
||||||
|
# url = "https://mediafilez.forgecdn.net/files/7963/363/create-1.21.1-6.0.10.jar";
|
||||||
|
# hash = "sha256-74f+Vwnxuh9bi7IKKSW1r7RmnheP1ti/EMFndZ7v43o=";
|
||||||
|
#};
|
||||||
|
fabric_api = pkgs.fetchurl {
|
||||||
|
url = "https://cdn.modrinth.com/data/P7dR8mSH/versions/tnmuHGZA/fabric-api-0.146.1%2B26.1.2.jar";
|
||||||
|
hash = "sha256-8Jy/xmxRtw4z4GJ+38wwbXHVn4NGYp4w/mFvW9cmvKg=";
|
||||||
|
};
|
||||||
|
# Required by biomes-o-plenty
|
||||||
|
# https://www.curseforge.com/minecraft/mc-mods/glitchcore
|
||||||
|
glitchcore = pkgs.fetchurl {
|
||||||
|
url = "https://mediafilez.forgecdn.net/files/7975/608/GlitchCore-fabric-26.1.2-26.1.2.0.0.jar";
|
||||||
|
hash = "sha256-IDz+TblWvgt4UxFg3L3DhFMEESoX7y5cTOvXhyccQm8=";
|
||||||
|
};
|
||||||
|
# Tooltips
|
||||||
|
# https://www.curseforge.com/minecraft/mc-mods/jade/
|
||||||
|
jade = pkgs.fetchurl {
|
||||||
|
url = "https://mediafilez.forgecdn.net/files/7886/518/Jade-mc26.1-Fabric-26.0.8.jar";
|
||||||
|
hash = "sha256-Pc3R5eO4Jf+94mNMPtY/vvpbomp+S+qnAUAVbQk1r2Y=";
|
||||||
|
};
|
||||||
|
# Gives info on crafting recipes
|
||||||
|
# https://www.curseforge.com/minecraft/mc-mods/jei
|
||||||
|
jei = pkgs.fetchurl {
|
||||||
|
url = "https://mediafilez.forgecdn.net/files/7920/925/jei-26.1.2-fabric-29.5.0.26.jar";
|
||||||
|
hash = "sha256-7nF7fXYPIg9the/mxi6pUYEmKtosZO6yL2b0Dgf8+fI=";
|
||||||
|
};
|
||||||
|
# Machines
|
||||||
|
# https://www.curseforge.com/minecraft/mc-mods/mekanism
|
||||||
|
#mekanism = pkgs.fetchurl {
|
||||||
|
# url = "https://mediafilez.forgecdn.net/files/7904/58/Mekanism-1.21.1-10.7.19.85.jar";
|
||||||
|
# hash = "sha256-AE28nzEG9NGSrqoe4RkN0W7JyoBZ7T0JO4ADT0xXT0M=";
|
||||||
|
#};
|
||||||
|
# Shows installed mods
|
||||||
|
modmenu = pkgs.fetchurl {
|
||||||
|
url = "https://cdn.modrinth.com/data/mOgUt4GM/versions/jvjwXH6l/modmenu-18.0.0-alpha.8.jar";
|
||||||
|
hash = "sha256-u0gtCOVAnNxyHcslo+y9l/jCGsFb+U/Y8soiUilhZDA=";
|
||||||
|
};
|
||||||
|
# Better storage engines
|
||||||
|
# https://www.curseforge.com/minecraft/mc-mods/refined-storage
|
||||||
|
refined-storage = pkgs.fetchurl {
|
||||||
|
url = "https://mediafilez.forgecdn.net/files/8086/588/refinedstorage-fabric-3.0.0.jar";
|
||||||
|
hash = "sha256-LuOF0aYQon78AQeD5fQ8OXHCnekfa+PNKpH7cqimFNs=";
|
||||||
|
};
|
||||||
|
# https://www.curseforge.com/minecraft/mc-mods/storage-drawers
|
||||||
|
#storagedrawers = pkgs.fetchurl {
|
||||||
|
#url = "https://mediafilez.forgecdn.net/files/7352/799/StorageDrawers-fabric-1.21.11-20.0.0.jar";
|
||||||
|
#hash = "sha256-eBKCmAtjAhdAjOyLMRneu/NZnNt+orIezxPy6V8g/S8=";
|
||||||
|
#};
|
||||||
|
survivalfly = pkgs.fetchurl {
|
||||||
|
url = "https://mediafilez.forgecdn.net/files/7870/312/survivalfly-1.3_fabric-mc26.1.1.jar";
|
||||||
|
hash = "sha256-Kai4wSxckpXbs1yLp8wJ4BmmjNkdDbeqerqWGIz3+Zk=";
|
||||||
|
};
|
||||||
|
# Also needed by biomes
|
||||||
|
# https://www.curseforge.com/minecraft/mc-mods/terrablender-fabric
|
||||||
|
terrablender = pkgs.fetchurl {
|
||||||
|
url = "https://mediafilez.forgecdn.net/files/7933/873/TerraBlender-fabric-26.1.2-26.1.2.0.1.jar";
|
||||||
|
hash = "sha256-lUrkmMIod54Qj78H0rzT4EYoEeiBG7w6sVOJlRvsnQ4=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -22,8 +22,6 @@
|
|||||||
|
|
||||||
# VMs
|
# VMs
|
||||||
10.42.4.1 matrix matrix.thehellings.lan
|
10.42.4.1 matrix matrix.thehellings.lan
|
||||||
#10.42.4.2 vm-jellyfin vm-jellyfin.thehellings.lan
|
|
||||||
10.42.4.3 git gitlab git.thehellings.lan gitlab.thehellings.lan
|
|
||||||
|
|
||||||
# VIP
|
# VIP
|
||||||
10.42.5.1 longhorn.cluster matrix.cluster pgadmin.cluter postgres.cluster immich.cluster
|
10.42.5.1 longhorn.cluster matrix.cluster pgadmin.cluter postgres.cluster immich.cluster
|
||||||
@@ -37,7 +35,6 @@
|
|||||||
100.88.91.27 dns.home
|
100.88.91.27 dns.home
|
||||||
100.70.99.91 exodus.home exodus.shire-zebra.ts.net
|
100.70.99.91 exodus.home exodus.shire-zebra.ts.net
|
||||||
100.96.198.104 genesis.home genesis.shire-zebra.ts.net smart.home zwave.home nixcache.home gitcache.home dashy.home uptime.home speed.home
|
100.96.198.104 genesis.home genesis.shire-zebra.ts.net smart.home zwave.home nixcache.home gitcache.home dashy.home uptime.home speed.home
|
||||||
100.117.28.111 gitlab.home gitlab.shire-zebra.ts.net gitlab.thehellings.lan registry.thehellings.lan git.thehellings.lan
|
|
||||||
100.68.203.1 hosea.home hosea.shire-zebra.ts.net grafana.home
|
100.68.203.1 hosea.home hosea.shire-zebra.ts.net grafana.home
|
||||||
100.84.183.79 isaiah.home isaiah.shire-zebra.ts.net pgadmin.kubernetes longhorn.kubernetes
|
100.84.183.79 isaiah.home isaiah.shire-zebra.ts.net pgadmin.kubernetes longhorn.kubernetes
|
||||||
100.102.186.39 jeremiah.home jeremiah.shire-zebra.ts.net matrix.kubernetes immich.kubernetes postgres.kubernetes buildbot.home
|
100.102.186.39 jeremiah.home jeremiah.shire-zebra.ts.net matrix.kubernetes immich.kubernetes postgres.kubernetes buildbot.home
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
lib,
|
||||||
|
lib',
|
||||||
metadata,
|
metadata,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -9,7 +11,6 @@ let
|
|||||||
lanIP = metadata.hosts.${config.networking.hostName}.ip;
|
lanIP = metadata.hosts.${config.networking.hostName}.ip;
|
||||||
iot = "enp2s0";
|
iot = "enp2s0";
|
||||||
iotIP = "192.168.66.250";
|
iotIP = "192.168.66.250";
|
||||||
#routerIP = metadata.infra.gw;
|
|
||||||
extraHosts = builtins.readFile ./net/hosts;
|
extraHosts = builtins.readFile ./net/hosts;
|
||||||
|
|
||||||
proxyPort = 3128;
|
proxyPort = 3128;
|
||||||
@@ -24,9 +25,20 @@ let
|
|||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
greg.tailscale = {
|
greg = {
|
||||||
enable = true;
|
nebula = {
|
||||||
tags = [ "home" ];
|
enable = true;
|
||||||
|
# genesis IS the routing node for the home LAN — it does not route through itself.
|
||||||
|
# Override the module default (which points at genesis) to avoid a routing loop.
|
||||||
|
unsafeRoutes = [ ];
|
||||||
|
# genesis routes the home LAN (10.42.0.0/16) into the Nebula overlay.
|
||||||
|
# Sign genesis's cert with -subnets '10.42.0.0/16' (see secrets/nebula/README.md).
|
||||||
|
routesSubnet = "10.42.0.0/16";
|
||||||
|
};
|
||||||
|
tailscale = {
|
||||||
|
enable = true;
|
||||||
|
tags = [ "home" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Really, why do I still have to force-disable this crap?
|
# Really, why do I still have to force-disable this crap?
|
||||||
@@ -84,33 +96,48 @@ in
|
|||||||
#########
|
#########
|
||||||
# dnsmasq config
|
# dnsmasq config
|
||||||
########
|
########
|
||||||
dnsmasq = {
|
bind = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
cacheNetworks = [
|
||||||
domain = "thehellings.lan";
|
metadata.infra.lan
|
||||||
expand-hosts = true;
|
metadata.infra.tailscale
|
||||||
log-queries = true;
|
metadata.infra.nebula
|
||||||
no-hosts = true; # Do not read /etc/hosts, which makes genesis resolve to 127.0.0.2
|
"127.0.0.0/8"
|
||||||
addn-hosts = "/etc/adblock_hosts";
|
];
|
||||||
hostsdir = "/etc/hosts.d/";
|
zones =
|
||||||
server = dnsServers;
|
let
|
||||||
};
|
makeZoneFile =
|
||||||
};
|
hosts: domain:
|
||||||
|
let
|
||||||
prometheus.exporters = {
|
preamble = [
|
||||||
dnsmasq.enable = true;
|
"$ORIGIN\t${domain}."
|
||||||
blackbox = {
|
"$TTL\t1h"
|
||||||
enable = true;
|
"@\tIN\tSOA\t${config.networking.hostName}\tgreg@thehellings.com (1 1m 1m 1m 1m)"
|
||||||
openFirewall = true;
|
"\tIN\tNS\t${config.networking.hostName}"
|
||||||
configFile = pkgs.writeText "blackbox.yml" ''
|
];
|
||||||
modules:
|
makeHost =
|
||||||
icmp:
|
host:
|
||||||
prober: icmp
|
[ "${host.name}\tIN\tA\t${host.address}" ]
|
||||||
timeout: 5s
|
++ lib.map (a: "${a}\tIN\tA\t${host.address}") (
|
||||||
icmp:
|
if builtins.hasAttr "aliases" host then host.aliases else [ ]
|
||||||
preferred_ip_protocol: ip4
|
);
|
||||||
'';
|
in
|
||||||
};
|
pkgs.writeText "${domain}" (
|
||||||
|
builtins.concatStringsSep "\n" (preamble ++ (lib.flatten (lib.map makeHost hosts)) ++ [ "" ])
|
||||||
|
);
|
||||||
|
in
|
||||||
|
lib.mapAttrs
|
||||||
|
(domain: net: {
|
||||||
|
master = true;
|
||||||
|
file = makeZoneFile (lib'.hostsByNet net metadata.hosts) domain;
|
||||||
|
})
|
||||||
|
{
|
||||||
|
"shire-zebra.ts.net" = "tailscale";
|
||||||
|
"nebula.thehellings.com" = "nebula";
|
||||||
|
nebula = "nebula";
|
||||||
|
"thehellings.lan" = "lan";
|
||||||
|
lan = "lan";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}; # End of services configuration
|
}; # End of services configuration
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
config,
|
config,
|
||||||
metadata,
|
metadata,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
top,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -19,11 +20,30 @@ in
|
|||||||
# Include the results of the hardware scan.
|
# Include the results of the hardware scan.
|
||||||
./arr.nix
|
./arr.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
top.niks3.nixosModules.niks3
|
||||||
];
|
];
|
||||||
|
|
||||||
age.secrets.grafana-secret-key = {
|
age.secrets = {
|
||||||
file = ../../../secrets/grafana-secret-key.age;
|
cache-private-key = {
|
||||||
owner = "grafana";
|
file = ../../../secrets/cache-private-key.age;
|
||||||
|
owner = "niks3";
|
||||||
|
};
|
||||||
|
grafana-secret-key = {
|
||||||
|
file = ../../../secrets/grafana-secret-key.age;
|
||||||
|
owner = "grafana";
|
||||||
|
};
|
||||||
|
niks3-access-key-id = {
|
||||||
|
file = ../../../secrets/niks3/access_key_id.age;
|
||||||
|
owner = "niks3";
|
||||||
|
};
|
||||||
|
niks3-api-token = {
|
||||||
|
file = ../../../secrets/niks3/api_token.age;
|
||||||
|
owner = "niks3";
|
||||||
|
};
|
||||||
|
niks3-secret-access-key = {
|
||||||
|
file = ../../../secrets/niks3/secret_access_key.age;
|
||||||
|
owner = "niks3";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Bootloader
|
# Bootloader
|
||||||
@@ -98,6 +118,7 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
firewall.interfaces.nebula0.allowedTCPPorts = [ 5751 ];
|
||||||
nameservers = [ metadata.infra.dns ];
|
nameservers = [ metadata.infra.dns ];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -150,6 +171,27 @@ in
|
|||||||
analytics.reporting_enabled = false;
|
analytics.reporting_enabled = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
niks3 = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
apiTokenFile = config.age.secrets.niks3-api-token.path;
|
||||||
|
gc.enable = false;
|
||||||
|
httpAddr = "${metadata.hosts.hosea.nebulaIp}:5751";
|
||||||
|
nginx = {
|
||||||
|
enable = true;
|
||||||
|
domain = "hosea.nebula";
|
||||||
|
enableACME = false;
|
||||||
|
forceSSL = false;
|
||||||
|
};
|
||||||
|
s3 = {
|
||||||
|
accessKeyFile = config.age.secrets.niks3-access-key-id.path;
|
||||||
|
bucket = "niks3";
|
||||||
|
endpoint = "nas1.shire-zebra.ts.net:9000";
|
||||||
|
secretKeyFile = config.age.secrets.niks3-secret-access-key.path;
|
||||||
|
useSSL = false;
|
||||||
|
};
|
||||||
|
signKeyFiles = [ config.age.secrets.cache-private-key.path ];
|
||||||
|
};
|
||||||
prometheus.exporters.graphite.enable = true;
|
prometheus.exporters.graphite.enable = true;
|
||||||
# Configure keymap
|
# Configure keymap
|
||||||
xserver.xkb = {
|
xserver.xkb = {
|
||||||
|
|||||||
@@ -43,10 +43,6 @@
|
|||||||
tags = [ "home" ];
|
tags = [ "home" ];
|
||||||
};
|
};
|
||||||
remote-builder.enable = true;
|
remote-builder.enable = true;
|
||||||
runner = {
|
|
||||||
enable = true;
|
|
||||||
qemu = true;
|
|
||||||
};
|
|
||||||
gitea-runner = {
|
gitea-runner = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraLabels = [ "bare-metal:host" ];
|
extraLabels = [ "bare-metal:host" ];
|
||||||
|
|||||||
@@ -22,8 +22,6 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
runner-reg.file = ../../../secrets/gitlab/nixos-qemu-shell.age;
|
|
||||||
|
|
||||||
gitea-buildbotWorkersFile = mk ../../../secrets/gitea/buildbotWorkersFile.age;
|
gitea-buildbotWorkersFile = mk ../../../secrets/gitea/buildbotWorkersFile.age;
|
||||||
gitea-oauthToken = mk ../../../secrets/gitea/oauthToken.age;
|
gitea-oauthToken = mk ../../../secrets/gitea/oauthToken.age;
|
||||||
gitea-oauthSecret = mk ../../../secrets/gitea/oauthSecret.age;
|
gitea-oauthSecret = mk ../../../secrets/gitea/oauthSecret.age;
|
||||||
@@ -95,11 +93,6 @@ in
|
|||||||
tags = [ "home" ];
|
tags = [ "home" ];
|
||||||
};
|
};
|
||||||
remote-builder.enable = true;
|
remote-builder.enable = true;
|
||||||
runner = {
|
|
||||||
enable = true;
|
|
||||||
threads = 3;
|
|
||||||
qemu = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
|||||||
@@ -66,20 +66,4 @@
|
|||||||
immichUrl = "https://immich.shire-zebra.ts.net";
|
immichUrl = "https://immich.shire-zebra.ts.net";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
security.sudo.extraRules = [
|
|
||||||
{
|
|
||||||
users = [ "gitlab-runner" ];
|
|
||||||
commands = [
|
|
||||||
{
|
|
||||||
command = "/run/current-system/sw/bin/systemctl";
|
|
||||||
options = [ "NOPASSWD" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "/run/current-system/sw/bin/podman";
|
|
||||||
options = [ "NOPASSWD" ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,24 @@
|
|||||||
# them by the following commands:
|
# them by the following commands:
|
||||||
# nix run nixpkgs.matrix-synapse
|
# nix run nixpkgs.matrix-synapse
|
||||||
# register_new_matrix_user -k "B9EoPr2WV9hzwc7uL2Sx1JmvCeKDEOGCpB0uginQcQtEH4wzRtkSIdo7lltrjSQa" http://localhost:8448
|
# register_new_matrix_user -k "B9EoPr2WV9hzwc7uL2Sx1JmvCeKDEOGCpB0uginQcQtEH4wzRtkSIdo7lltrjSQa" http://localhost:8448
|
||||||
{ config, lib, ... }:
|
{ config, ... }:
|
||||||
let
|
let
|
||||||
domain = "${config.networking.domain}";
|
domain = "${config.networking.domain}";
|
||||||
fqdn = "matrix.${domain}";
|
fqdn = "matrix.${domain}";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
greg.proxies."${fqdn}" = {
|
||||||
|
extraConfig = ''
|
||||||
|
error_log /var/log/nginx/debug.log debug;
|
||||||
|
proxy_ssl_verify off;
|
||||||
|
proxy_ssl_server_name on;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Forwarded-Ssl on;
|
||||||
|
'';
|
||||||
|
genAliases = false;
|
||||||
|
ssl = true;
|
||||||
|
target = "https://matrix.shire-zebra.ts.net";
|
||||||
|
};
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
# Server the '.well-known' files to find the Matrix API server
|
# Server the '.well-known' files to find the Matrix API server
|
||||||
@@ -44,36 +56,6 @@ in
|
|||||||
return 200 '${builtins.toJSON client}';
|
return 200 '${builtins.toJSON client}';
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
# Reverse proxy in front of the actual Matrix server
|
|
||||||
"${fqdn}" = {
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
error_log /var/log/nginx/debug.log debug;
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Not the appropriate place for the chat client
|
|
||||||
locations =
|
|
||||||
(builtins.listToAttrs (
|
|
||||||
builtins.map
|
|
||||||
(
|
|
||||||
val:
|
|
||||||
lib.nameValuePair "/_${val}" {
|
|
||||||
proxyPass = "http://matrix.kubernetes";
|
|
||||||
}
|
|
||||||
)
|
|
||||||
[
|
|
||||||
"matrix"
|
|
||||||
"synapse"
|
|
||||||
"dendrite"
|
|
||||||
]
|
|
||||||
))
|
|
||||||
// {
|
|
||||||
"/".extraConfig = "return 404;";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud32;
|
package = pkgs.nextcloud33;
|
||||||
appstoreEnable = true;
|
appstoreEnable = true;
|
||||||
hostName = "next.${config.networking.domain}";
|
hostName = "next.${config.networking.domain}";
|
||||||
https = true;
|
https = true;
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ in
|
|||||||
virtualisation.oci-containers = {
|
virtualisation.oci-containers = {
|
||||||
backend = "podman";
|
backend = "podman";
|
||||||
containers."homepage" = {
|
containers."homepage" = {
|
||||||
# needs explicit port to match what gitlab-runner sees when pulling
|
|
||||||
image = "registry.thehellings.com:443/greg/homepage/gregs-homepage:latest";
|
image = "registry.thehellings.com:443/greg/homepage/gregs-homepage:latest";
|
||||||
ports = [ "${homepage}:80" ];
|
ports = [ "${homepage}:80" ];
|
||||||
};
|
};
|
||||||
@@ -35,10 +34,5 @@ in
|
|||||||
ssl = true;
|
ssl = true;
|
||||||
genAliases = false;
|
genAliases = false;
|
||||||
};
|
};
|
||||||
"doubles.thehellings.com" = {
|
|
||||||
target = "http://localhost:8081";
|
|
||||||
ssl = true;
|
|
||||||
genAliases = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
{ config, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
pkgs',
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
environment.systemPackages = [ pkgs.upgrade-pg-cluster ];
|
environment.systemPackages = [ pkgs'.upgrade-pg-cluster ];
|
||||||
|
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -28,10 +28,6 @@
|
|||||||
};
|
};
|
||||||
nebula.enable = true;
|
nebula.enable = true;
|
||||||
remote-builder.enable = true;
|
remote-builder.enable = true;
|
||||||
runner = {
|
|
||||||
enable = true;
|
|
||||||
vbox = false;
|
|
||||||
};
|
|
||||||
tailscale = {
|
tailscale = {
|
||||||
enable = true;
|
enable = true;
|
||||||
tags = [ "home" ];
|
tags = [ "home" ];
|
||||||
|
|||||||
@@ -35,10 +35,11 @@
|
|||||||
device = "/dev/nvme0n1p1";
|
device = "/dev/nvme0n1p1";
|
||||||
fsType = "auto";
|
fsType = "auto";
|
||||||
};
|
};
|
||||||
#"/mnt/disk1" = {
|
"/mnt/disk1" = {
|
||||||
#device = "/dev/disk/by-uuid/0bb64e76-8811-499a-b60e-cc97808f2b0e";
|
device = "/dev/disk/by-uuid/bd04e868-034e-46e8-84ae-cd7347448bbd";
|
||||||
#fsType = "btrfs";
|
fsType = "xfs";
|
||||||
#};
|
options = [ "nofail" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|||||||
@@ -1,273 +0,0 @@
|
|||||||
# Edit this configuration file to define what should be installed on
|
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
|
||||||
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
registryPort = 5000;
|
|
||||||
vpnIp = "100.117.28.111";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
age.secrets =
|
|
||||||
let
|
|
||||||
cfg = n: {
|
|
||||||
file = ../../../secrets/gitlab/${n}.age;
|
|
||||||
owner = "gitlab";
|
|
||||||
group = "gitlab";
|
|
||||||
mode = "0444";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
gitlab-secret = cfg "secret";
|
|
||||||
gitlab-otp = cfg "otp";
|
|
||||||
gitlab-db = cfg "db";
|
|
||||||
gitlab-db-password = cfg "db-password";
|
|
||||||
gitlab-jws = cfg "jws";
|
|
||||||
gitlab-key = cfg "key";
|
|
||||||
gitlab-cert = cfg "cert";
|
|
||||||
gitlab-salt = cfg "salt";
|
|
||||||
gitlab-primary-key = cfg "primary-key";
|
|
||||||
gitlab-deterministic-key = cfg "deterministic-key";
|
|
||||||
|
|
||||||
minio_access_key_id = {
|
|
||||||
file = ../../../secrets/minio_access_key_id.age;
|
|
||||||
owner = "gitlab";
|
|
||||||
group = "gitlab";
|
|
||||||
mode = "0444";
|
|
||||||
};
|
|
||||||
minio_secret_access_key = {
|
|
||||||
file = ../../../secrets/minio_secret_access_key.age;
|
|
||||||
owner = "gitlab";
|
|
||||||
group = "gitlab";
|
|
||||||
mode = "0444";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
greg = {
|
|
||||||
backup.jobs.nas-backup = {
|
|
||||||
src = "/var/gitlab/state/backup/";
|
|
||||||
dest = "gitlab";
|
|
||||||
};
|
|
||||||
home = true;
|
|
||||||
tailscale = {
|
|
||||||
enable = true;
|
|
||||||
tags = [ "home" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = "gitlab"; # Define your hostname.
|
|
||||||
firewall.allowedTCPPorts = [
|
|
||||||
80
|
|
||||||
registryPort
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
gitlab = {
|
|
||||||
enable = true;
|
|
||||||
backup = {
|
|
||||||
keepTime = 288;
|
|
||||||
startAt = [ "03:00" ];
|
|
||||||
};
|
|
||||||
databaseHost = "postgres.kubernetes";
|
|
||||||
databaseName = "gitlab";
|
|
||||||
databaseUsername = "gitlab";
|
|
||||||
databasePasswordFile = config.age.secrets.gitlab-db-password.path;
|
|
||||||
databaseCreateLocally = false;
|
|
||||||
extraConfig = {
|
|
||||||
registry.port = null;
|
|
||||||
gitlab = {
|
|
||||||
trustedProxies = [
|
|
||||||
"${vpnIp}/32" # The system itself
|
|
||||||
"100.109.86.8/32" # Public server's IP
|
|
||||||
];
|
|
||||||
};
|
|
||||||
object_store = {
|
|
||||||
enabled = true;
|
|
||||||
proxy_download = true; # Tell them to reach out to object storage themselves!
|
|
||||||
connection = {
|
|
||||||
provider = "AWS";
|
|
||||||
endpoint = "http://s3.thehellings.lan:9000";
|
|
||||||
region = "us-east-1";
|
|
||||||
aws_access_key_id = {
|
|
||||||
_secret = config.age.secrets.minio_access_key_id.path;
|
|
||||||
};
|
|
||||||
aws_secret_access_key = {
|
|
||||||
_secret = config.age.secrets.minio_secret_access_key.path;
|
|
||||||
};
|
|
||||||
path_style = true; # True for MinIO
|
|
||||||
aws_signature_version = 2;
|
|
||||||
};
|
|
||||||
#storage_options = ...;
|
|
||||||
objects = builtins.listToAttrs (
|
|
||||||
builtins.map
|
|
||||||
(
|
|
||||||
x: lib.attrsets.nameValuePair x { bucket = "gitlab-${builtins.replaceStrings [ "_" ] [ "-" ] x}"; }
|
|
||||||
)
|
|
||||||
[
|
|
||||||
"artifacts"
|
|
||||||
"ci_secure_files"
|
|
||||||
"dependency_proxy"
|
|
||||||
"external_diffs"
|
|
||||||
"lfs"
|
|
||||||
"packages"
|
|
||||||
"pages"
|
|
||||||
"terraform_state"
|
|
||||||
"uploads"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
host = "src.thehellings.com";
|
|
||||||
https = true;
|
|
||||||
initialRootEmail = "greg@thehellings.com";
|
|
||||||
initialRootPasswordFile = pkgs.writeText "initialRootPassword" "root_password";
|
|
||||||
pages = {
|
|
||||||
enable = true;
|
|
||||||
settings.pages-domain = "pages.thehellings.com";
|
|
||||||
};
|
|
||||||
port = 443;
|
|
||||||
puma = {
|
|
||||||
threadsMax = 6;
|
|
||||||
threadsMin = 2;
|
|
||||||
workers = 6;
|
|
||||||
};
|
|
||||||
redisUrl = "unix:${config.services.redis.servers.gitlab.unixSocket}";
|
|
||||||
registry = {
|
|
||||||
enable = true;
|
|
||||||
certFile = config.age.secrets.gitlab-cert.path;
|
|
||||||
keyFile = config.age.secrets.gitlab-key.path;
|
|
||||||
externalAddress = "registry.thehellings.com";
|
|
||||||
externalPort = 443;
|
|
||||||
};
|
|
||||||
secrets = {
|
|
||||||
activeRecordDeterministicKeyFile = config.age.secrets.gitlab-deterministic-key.path;
|
|
||||||
activeRecordPrimaryKeyFile = config.age.secrets.gitlab-primary-key.path;
|
|
||||||
activeRecordSaltFile = config.age.secrets.gitlab-salt.path;
|
|
||||||
dbFile = config.age.secrets.gitlab-db.path;
|
|
||||||
jwsFile = config.age.secrets.gitlab-jws.path;
|
|
||||||
otpFile = config.age.secrets.gitlab-otp.path;
|
|
||||||
secretFile = config.age.secrets.gitlab-secret.path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nginx = {
|
|
||||||
enable = true;
|
|
||||||
clientMaxBodySize = "25000m";
|
|
||||||
virtualHosts = {
|
|
||||||
"vm-gitlab.shire-zebra.ts.net" = {
|
|
||||||
listen = [
|
|
||||||
{
|
|
||||||
addr = "0.0.0.0";
|
|
||||||
port = 443;
|
|
||||||
ssl = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket";
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
ssl_certificate /etc/certs/vm-gitlab.shire-zebra.ts.net.crt ;
|
|
||||||
ssl_certificate_key /etc/certs/vm-gitlab.shire-zebra.ts.net.key ;
|
|
||||||
client_max_body_size 10000m ;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"registry" = {
|
|
||||||
listen = [
|
|
||||||
{
|
|
||||||
addr = "0.0.0.0";
|
|
||||||
port = registryPort;
|
|
||||||
ssl = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://127.0.0.1:4567/";
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
ssl_certificate /etc/certs/vm-gitlab.shire-zebra.ts.net.crt ;
|
|
||||||
ssl_certificate_key /etc/certs/vm-gitlab.shire-zebra.ts.net.key ;
|
|
||||||
client_max_body_size 25000m ;
|
|
||||||
'';
|
|
||||||
serverAliases = [
|
|
||||||
"vm-gitlab.shire-zebra.ts.net"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
openssh.enable = true;
|
|
||||||
|
|
||||||
postgresql.enable = true;
|
|
||||||
|
|
||||||
qemuGuest.enable = true;
|
|
||||||
|
|
||||||
redis.servers.gitlab = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
#resolved.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Do not start nginx until we have tailscaled up and running, so it can bind
|
|
||||||
# to the 100.* addresses
|
|
||||||
systemd = {
|
|
||||||
services = {
|
|
||||||
certRefresh =
|
|
||||||
let
|
|
||||||
script = pkgs.writeShellApplication {
|
|
||||||
name = "cert-refresh";
|
|
||||||
runtimeInputs = [ pkgs.tailscale ];
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
cd /etc/certs
|
|
||||||
tailscale cert vm-gitlab.shire-zebra.ts.net
|
|
||||||
chown nginx ./*
|
|
||||||
systemctl reload nginx
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
script = lib.getExe script;
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
User = "root";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nginx = rec {
|
|
||||||
after = [ "network-online.target" ];
|
|
||||||
requires = [ "network-online.target" ];
|
|
||||||
wants = after;
|
|
||||||
serviceConfig = {
|
|
||||||
RestartMaxDelaySec = "30s";
|
|
||||||
RestartSteps = "5";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
tailscaled.partOf = [ "network-online.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
timers = {
|
|
||||||
"cert-refresh" = {
|
|
||||||
wantedBy = [ "cert-refresh.service" ];
|
|
||||||
timerConfig = {
|
|
||||||
OnCalendar = "monthly";
|
|
||||||
Persistent = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
system.stateVersion = lib.mkForce "24.11";
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{
|
|
||||||
lib,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
boot = {
|
|
||||||
extraModulePackages = [ ];
|
|
||||||
initrd = {
|
|
||||||
availableKernelModules = [
|
|
||||||
"uhci_hcd"
|
|
||||||
"ehci_pci"
|
|
||||||
"ahci"
|
|
||||||
"virtio_pci"
|
|
||||||
"virtio_scsi"
|
|
||||||
"sd_mod"
|
|
||||||
"sr_mod"
|
|
||||||
];
|
|
||||||
kernelModules = [ ];
|
|
||||||
};
|
|
||||||
loader = {
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
systemd-boot.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = lib.mkDefault "/dev/disk/by-uuid/1fdbe86e-ce6f-4af3-a876-aec35731adab";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/1E6A-C3BB";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [
|
|
||||||
"fmask=0077"
|
|
||||||
"dmask=0077"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp6s18.useDHCP = lib.mkDefault true;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
hostsByNet =
|
||||||
|
net: hosts:
|
||||||
|
let
|
||||||
|
netAttr =
|
||||||
|
{
|
||||||
|
lan = "ip";
|
||||||
|
nebula = "nebulaIp";
|
||||||
|
tailscale = "ts";
|
||||||
|
}
|
||||||
|
.${net};
|
||||||
|
in
|
||||||
|
lib.mapAttrsToList
|
||||||
|
(name: value: {
|
||||||
|
inherit name;
|
||||||
|
address = builtins.getAttr netAttr value;
|
||||||
|
aliases = lib.optionals (builtins.hasAttr "aliases" value) (builtins.getAttr "aliases" value);
|
||||||
|
})
|
||||||
|
(
|
||||||
|
lib.filterAttrs (
|
||||||
|
_host: settings: (builtins.hasAttr netAttr settings) && (builtins.getAttr netAttr settings) != null
|
||||||
|
) hosts
|
||||||
|
);
|
||||||
|
}
|
||||||
BIN
Binary file not shown.
@@ -40,7 +40,7 @@ metadata:
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "/mnt/disk1",
|
"path": "/mnt/disk1",
|
||||||
"allowScheduling": false,
|
"allowScheduling": true,
|
||||||
"tags": ["hdd", "large"]
|
"tags": ["hdd", "large"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -21,9 +21,6 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: bitwarden-cli
|
- name: bitwarden-cli
|
||||||
# Since my gitlab instance depends on the database hosted in k3s, and
|
|
||||||
# the database depends on this image, I need a way to bootstrap the
|
|
||||||
# system if # I am doing disaster recovery. And this is it.
|
|
||||||
image: "ghcr.io/greg-hellings/nixos-config/img-bitwarden:latest"
|
image: "ghcr.io/greg-hellings/nixos-config/img-bitwarden:latest"
|
||||||
#image: >-
|
#image: >-
|
||||||
# registry.thehellings.com/greg/nixos-config/img-bitwarden:latest
|
# registry.thehellings.com/greg/nixos-config/img-bitwarden:latest
|
||||||
|
|||||||
@@ -1,32 +1,21 @@
|
|||||||
apiVersion: source.toolkit.fluxcd.io/v1
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
metadata:
|
metadata:
|
||||||
name: kubernetes-dashboard
|
name: headlamp
|
||||||
spec:
|
spec:
|
||||||
url: https://kubernetes.github.io/dashboard/
|
url: "https://kubernetes-sigs.github.io/headlamp/"
|
||||||
interval: "24h"
|
interval: "24h"
|
||||||
---
|
---
|
||||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
kind: HelmRelease
|
kind: HelmRelease
|
||||||
metadata:
|
metadata:
|
||||||
name: kubernetes-dashboard
|
name: headlamp
|
||||||
spec:
|
spec:
|
||||||
interval: "24h"
|
interval: "24h"
|
||||||
chart:
|
chart:
|
||||||
spec:
|
spec:
|
||||||
chart: kubernetes-dashboard
|
chart: headlamp
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: kubernetes-dashboard
|
name: headlamp
|
||||||
interval: "24h"
|
interval: "24h"
|
||||||
values:
|
|
||||||
app:
|
|
||||||
settings:
|
|
||||||
global:
|
|
||||||
clusterName: Hellings Home
|
|
||||||
itemsPerPage: 25
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
hosts:
|
|
||||||
- dashboard.shire-zebra.ts.net
|
|
||||||
ingressClassName: tailscale
|
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: dashboard-tailscale
|
||||||
|
spec:
|
||||||
|
ingressClassName: tailscale
|
||||||
|
defaultBackend:
|
||||||
|
service:
|
||||||
|
name: headlamp
|
||||||
|
port:
|
||||||
|
number: 3001
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- headlamp
|
||||||
@@ -4,3 +4,4 @@ resources:
|
|||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
- chart.yaml
|
- chart.yaml
|
||||||
- user.yaml
|
- user.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
|||||||
@@ -1,89 +0,0 @@
|
|||||||
apiVersion: postgresql.cnpg.io/v1
|
|
||||||
kind: Cluster
|
|
||||||
metadata:
|
|
||||||
name: immich
|
|
||||||
spec:
|
|
||||||
imageName: "ghcr.io/corentingiraud/cnpg-pgvector-vectorchord:16-migration"
|
|
||||||
#imageName: "ghcr.io/tensorchord/cloudnative-pgvecto.rs:16-v0.3.0"
|
|
||||||
#postgresUID: 1
|
|
||||||
instances: 1
|
|
||||||
storage:
|
|
||||||
size: 60Gi
|
|
||||||
primaryUpdateStrategy: unsupervised
|
|
||||||
postgresql:
|
|
||||||
shared_preload_libraries:
|
|
||||||
- vectors.so
|
|
||||||
- vchord.so
|
|
||||||
|
|
||||||
bootstrap:
|
|
||||||
recovery:
|
|
||||||
source: origin
|
|
||||||
# initdb:
|
|
||||||
# database: immich
|
|
||||||
# owner: immich
|
|
||||||
# secret:
|
|
||||||
# name: postgres-user-immich
|
|
||||||
# dataChecksums: true
|
|
||||||
# postInitApplicationSQL:
|
|
||||||
# - ALTER SYSTEM SET search_path TO "$user", public, vectors;
|
|
||||||
# - SET search_path TO "$user", public, vectors;
|
|
||||||
# - CREATE EXTENSION IF NOT EXISTS "cube";
|
|
||||||
# - CREATE EXTENSION IF NOT EXISTS "earthdistance";
|
|
||||||
# - GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "immich";
|
|
||||||
|
|
||||||
externalClusters:
|
|
||||||
- name: origin
|
|
||||||
plugin:
|
|
||||||
name: barman-cloud.cloudnative-pg.io
|
|
||||||
parameters:
|
|
||||||
barmanObjectName: k3sbackup-objectstore
|
|
||||||
serverName: pgvector
|
|
||||||
|
|
||||||
managed:
|
|
||||||
roles:
|
|
||||||
- name: immich
|
|
||||||
ensure: present
|
|
||||||
comment: Immich DB user
|
|
||||||
login: true
|
|
||||||
superuser: true
|
|
||||||
passwordSecret:
|
|
||||||
name: postgres-user-immich
|
|
||||||
|
|
||||||
plugins:
|
|
||||||
- name: barman-cloud.cloudnative-pg.io
|
|
||||||
isWALArchiver: true
|
|
||||||
parameters:
|
|
||||||
barmanObjectName: k3sbackup-objectstore
|
|
||||||
---
|
|
||||||
apiVersion: postgresql.cnpg.io/v1
|
|
||||||
kind: Database
|
|
||||||
metadata:
|
|
||||||
name: database-immich
|
|
||||||
spec:
|
|
||||||
name: immich
|
|
||||||
owner: immich
|
|
||||||
cluster:
|
|
||||||
name: immich
|
|
||||||
extensions:
|
|
||||||
- name: vectors
|
|
||||||
ensure: present
|
|
||||||
- name: vectorchord
|
|
||||||
ensure: present
|
|
||||||
- name: cube
|
|
||||||
ensure: present
|
|
||||||
- name: earthdistance
|
|
||||||
ensure: present
|
|
||||||
---
|
|
||||||
apiVersion: postgresql.cnpg.io/v1
|
|
||||||
kind: ScheduledBackup
|
|
||||||
metadata:
|
|
||||||
name: immich-backup
|
|
||||||
spec:
|
|
||||||
immediate: true # Create one when this is added to the cluster
|
|
||||||
schedule: "0 2 0 * * *" # 1AM, nightly
|
|
||||||
backupOwnerReference: self
|
|
||||||
cluster:
|
|
||||||
name: immich
|
|
||||||
method: plugin
|
|
||||||
pluginConfiguration:
|
|
||||||
name: barman-cloud.cloudnative-pg.io
|
|
||||||
@@ -14,14 +14,12 @@ spec:
|
|||||||
- 100.88.91.27 # dns?
|
- 100.88.91.27 # dns?
|
||||||
- 100.80.99.48 # exodus
|
- 100.80.99.48 # exodus
|
||||||
- 100.88.91.27 # genesis
|
- 100.88.91.27 # genesis
|
||||||
- 100.117.28.111 # gitlab
|
|
||||||
- 100.68.203.1 # hosea
|
- 100.68.203.1 # hosea
|
||||||
- 100.84.183.79 # isaiah
|
- 100.84.183.79 # isaiah
|
||||||
- 100.102.186.39 # jeremiah
|
- 100.102.186.39 # jeremiah
|
||||||
- 100.90.74.19 # zeke
|
- 100.90.74.19 # zeke
|
||||||
- 100.115.57.8 # linode
|
- 100.115.57.8 # linode
|
||||||
- 100.65.5.38 # matrix
|
- 100.65.5.38 # matrix
|
||||||
#- 100.127.55.22 # jellyfin
|
|
||||||
---
|
---
|
||||||
apiVersion: traefik.io/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: IngressRouteTCP
|
kind: IngressRouteTCP
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ resources:
|
|||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
- secrets.yaml
|
- secrets.yaml
|
||||||
- postgres-cluster.yaml
|
- postgres-cluster.yaml
|
||||||
- postgres-gitlab.yaml
|
|
||||||
- postgres-pgadmin.yaml
|
- postgres-pgadmin.yaml
|
||||||
- postgres-matrix.yaml
|
- postgres-matrix.yaml
|
||||||
- immich.yaml
|
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
|
|||||||
@@ -11,13 +11,6 @@ spec:
|
|||||||
|
|
||||||
managed:
|
managed:
|
||||||
roles:
|
roles:
|
||||||
- name: gitlab
|
|
||||||
ensure: present
|
|
||||||
comment: Gitlab user
|
|
||||||
login: true
|
|
||||||
superuser: false
|
|
||||||
passwordSecret:
|
|
||||||
name: postgres-user-gitlab
|
|
||||||
- name: pgadmin
|
- name: pgadmin
|
||||||
ensure: present
|
ensure: present
|
||||||
comment: PG Admin user
|
comment: PG Admin user
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
apiVersion: postgresql.cnpg.io/v1
|
|
||||||
kind: Database
|
|
||||||
metadata:
|
|
||||||
name: database-gitlab
|
|
||||||
spec:
|
|
||||||
name: gitlab
|
|
||||||
owner: gitlab
|
|
||||||
cluster:
|
|
||||||
name: postgres
|
|
||||||
@@ -1,39 +1,5 @@
|
|||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
|
||||||
name: postgres-user-gitlab
|
|
||||||
namespace: db
|
|
||||||
spec:
|
|
||||||
target:
|
|
||||||
name: postgres-user-gitlab
|
|
||||||
deletionPolicy: Delete
|
|
||||||
template:
|
|
||||||
type: Opaque
|
|
||||||
data:
|
|
||||||
username: |-
|
|
||||||
{{ .username }}
|
|
||||||
password: |-
|
|
||||||
{{ .password }}
|
|
||||||
data:
|
|
||||||
- secretKey: username
|
|
||||||
sourceRef:
|
|
||||||
storeRef:
|
|
||||||
name: bitwarden-login
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
remoteRef:
|
|
||||||
key: 5282ad16-c2dc-49d3-8fb3-b2e9012bab57
|
|
||||||
property: username
|
|
||||||
- secretKey: password
|
|
||||||
sourceRef:
|
|
||||||
storeRef:
|
|
||||||
name: bitwarden-login
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
remoteRef:
|
|
||||||
key: 5282ad16-c2dc-49d3-8fb3-b2e9012bab57
|
|
||||||
property: password
|
|
||||||
---
|
|
||||||
apiVersion: external-secrets.io/v1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
metadata:
|
||||||
name: postgres-user-matrix
|
name: postgres-user-matrix
|
||||||
namespace: db
|
namespace: db
|
||||||
@@ -133,37 +99,3 @@ spec:
|
|||||||
remoteRef:
|
remoteRef:
|
||||||
key: 685b29c6-9264-4e60-ba4a-b2ea005a5d7b
|
key: 685b29c6-9264-4e60-ba4a-b2ea005a5d7b
|
||||||
property: password
|
property: password
|
||||||
---
|
|
||||||
apiVersion: external-secrets.io/v1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
|
||||||
name: postgres-user-immich
|
|
||||||
namespace: db
|
|
||||||
spec:
|
|
||||||
target:
|
|
||||||
name: postgres-user-immich
|
|
||||||
deletionPolicy: Delete
|
|
||||||
template:
|
|
||||||
type: Opaque
|
|
||||||
data:
|
|
||||||
username: |-
|
|
||||||
{{ .username }}
|
|
||||||
password: |-
|
|
||||||
{{ .password }}
|
|
||||||
data:
|
|
||||||
- secretKey: username
|
|
||||||
sourceRef:
|
|
||||||
storeRef:
|
|
||||||
name: bitwarden-login
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
remoteRef:
|
|
||||||
key: 5ce63e26-dd7f-46d4-b7ed-b310002ef93f
|
|
||||||
property: username
|
|
||||||
- secretKey: password
|
|
||||||
sourceRef:
|
|
||||||
storeRef:
|
|
||||||
name: bitwarden-login
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
remoteRef:
|
|
||||||
key: 5ce63e26-dd7f-46d4-b7ed-b310002ef93f
|
|
||||||
property: password
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ spec:
|
|||||||
chart:
|
chart:
|
||||||
spec:
|
spec:
|
||||||
chart: gitea
|
chart: gitea
|
||||||
version: "12.5.0"
|
version: "12.5.3"
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: gitea-repository
|
name: gitea-repository
|
||||||
@@ -35,7 +35,7 @@ spec:
|
|||||||
storageClass: longhorn-default
|
storageClass: longhorn-default
|
||||||
|
|
||||||
image:
|
image:
|
||||||
tag: "1.25.4"
|
tag: "1.25.5"
|
||||||
|
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
|
|
||||||
@@ -47,6 +47,12 @@ spec:
|
|||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
port: 32222
|
port: 32222
|
||||||
nodePort: 32222
|
nodePort: 32222
|
||||||
|
# Anubis sidecar port — ingress routes here; Anubis proxies to :3000
|
||||||
|
additionalPorts:
|
||||||
|
- name: anubis
|
||||||
|
port: 8080
|
||||||
|
targetPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
gitea:
|
gitea:
|
||||||
admin:
|
admin:
|
||||||
@@ -119,6 +125,46 @@ spec:
|
|||||||
cpu: "100m"
|
cpu: "100m"
|
||||||
memory: "2Gi"
|
memory: "2Gi"
|
||||||
|
|
||||||
|
# Anubis anti-crawler sidecar
|
||||||
|
# Anubis listens on :8080 and proxies to Gitea at http://localhost:3000
|
||||||
|
# Ingress is updated to route to the anubis port instead of http
|
||||||
|
extraContainers:
|
||||||
|
- name: anubis
|
||||||
|
image: ghcr.io/techarohq/anubis:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
env:
|
||||||
|
- name: BIND
|
||||||
|
value: ":8080"
|
||||||
|
- name: DIFFICULTY
|
||||||
|
value: "4"
|
||||||
|
- name: METRICS_BIND
|
||||||
|
value: ":9090"
|
||||||
|
- name: SERVE_ROBOTS_TXT
|
||||||
|
value: "true"
|
||||||
|
- name: TARGET
|
||||||
|
value: "http://localhost:3000"
|
||||||
|
- name: OG_PASSTHROUGH
|
||||||
|
value: "true"
|
||||||
|
- name: OG_EXPIRY_TIME
|
||||||
|
value: "24h"
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: "750m"
|
||||||
|
memory: "256Mi"
|
||||||
|
requests:
|
||||||
|
cpu: "250m"
|
||||||
|
memory: "256Mi"
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsNonRoot: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
type: RollingUpdate
|
type: RollingUpdate
|
||||||
rollingUpdate:
|
rollingUpdate:
|
||||||
|
|||||||
@@ -76,4 +76,3 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: gitea-config
|
name: gitea-config
|
||||||
key: minio_secret
|
key: minio_secret
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ spec:
|
|||||||
service:
|
service:
|
||||||
name: gitea-release-http
|
name: gitea-release-http
|
||||||
port:
|
port:
|
||||||
name: http
|
# Route through Anubis anti-crawler sidecar instead of directly to Gitea
|
||||||
|
name: anubis
|
||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- gitea
|
- gitea
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ spec:
|
|||||||
USER={{ .dbuser }}
|
USER={{ .dbuser }}
|
||||||
PASSWD="""{{ .dbpass }}"""
|
PASSWD="""{{ .dbpass }}"""
|
||||||
storage: |-
|
storage: |-
|
||||||
MINIO_ACCESS_KEY_ID={{ .minio_key }}
|
MINIO_ACCESS_KEY_ID={{ .minio_nas1_key }}
|
||||||
MINIO_SECRET_ACCESS_KEY={{ .minio_secret }}
|
MINIO_SECRET_ACCESS_KEY={{ .minio_nas1_secret }}
|
||||||
minio_key: "{{ .minio_nas1_key }}"
|
minio_key: "{{ .minio_nas1_key }}"
|
||||||
minio_secret: "{{ .minio_nas1_secret }}"
|
minio_secret: "{{ .minio_nas1_secret }}"
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
apiVersion: source.toolkit.fluxcd.io/v1
|
|
||||||
kind: HelmRepository
|
|
||||||
metadata:
|
|
||||||
name: gitlab-runner
|
|
||||||
spec:
|
|
||||||
interval: "24h"
|
|
||||||
url: https://charts.gitlab.io
|
|
||||||
---
|
|
||||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
|
||||||
kind: HelmRelease
|
|
||||||
metadata:
|
|
||||||
name: gitlab-runner
|
|
||||||
spec:
|
|
||||||
interval: 10m
|
|
||||||
chart:
|
|
||||||
spec:
|
|
||||||
chart: gitlab-runner
|
|
||||||
version: "0.83.1"
|
|
||||||
sourceRef:
|
|
||||||
kind: HelmRepository
|
|
||||||
name: gitlab-runner
|
|
||||||
interval: "1h"
|
|
||||||
dependsOn:
|
|
||||||
- name: external-secrets
|
|
||||||
namespace: external-secrets
|
|
||||||
- name: tailscae
|
|
||||||
namespace: tailscale
|
|
||||||
values:
|
|
||||||
crds:
|
|
||||||
create: true
|
|
||||||
includeCRDs: true
|
|
||||||
gitlabUrl: https://src.thehellings.com
|
|
||||||
runners:
|
|
||||||
secret: gitlab-runner
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: image-pull-secrets
|
|
||||||
rbac:
|
|
||||||
create: true
|
|
||||||
serviceAccount:
|
|
||||||
create: true
|
|
||||||
metrics:
|
|
||||||
enabled: true
|
|
||||||
extraEnv:
|
|
||||||
CACHE_TYPE: s3
|
|
||||||
CACHE_SHARED: "true"
|
|
||||||
CACHE_S3_BUCKET_NAME: gitlab-runner-cache
|
|
||||||
CACHE_S3_INSECURE: "true"
|
|
||||||
extraEnvFrom:
|
|
||||||
PACKER_GITHUB_API_TOKEN:
|
|
||||||
secretKeyRef:
|
|
||||||
name: gitlab-runner
|
|
||||||
key: PACKER_GITHUB_API_TOKEN
|
|
||||||
CACHE_S3_SERVER_ADDRESS:
|
|
||||||
secretKeyRef:
|
|
||||||
name: gitlab-runner
|
|
||||||
key: CACHE_S3_SERVER_ADDRESS
|
|
||||||
CACHE_S3_ACCESS_KEY:
|
|
||||||
secretKeyRef:
|
|
||||||
name: s3-access
|
|
||||||
key: username
|
|
||||||
CACHE_S3_SECRET_KEY:
|
|
||||||
secretKeyRef:
|
|
||||||
name: s3-access
|
|
||||||
key: password
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
namespace: gitlab-runner
|
|
||||||
|
|
||||||
resources:
|
|
||||||
- namespace.yaml
|
|
||||||
- secrets.yaml
|
|
||||||
- chart.yaml
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: gitlab-runner
|
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
apiVersion: external-secrets.io/v1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
|
||||||
name: gitlab-runner
|
|
||||||
namespace: gitlab-runner
|
|
||||||
spec:
|
|
||||||
secretStoreRef:
|
|
||||||
name: bitwarden-fields
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
target:
|
|
||||||
name: gitlab-runner
|
|
||||||
deletionPolicy: Delete
|
|
||||||
template:
|
|
||||||
type: Opaque
|
|
||||||
data:
|
|
||||||
runner-registration-token: ""
|
|
||||||
runner-token: "{{ .runnerToken }}"
|
|
||||||
PACKER_GITHUB_API_TOKEN: "{{ .PACKER_GITHUB_API_TOKEN }}"
|
|
||||||
CACHE_S3_SERVER_ADDRESS: "{{ .CACHE_S3_SERVER_ADDRESS }}"
|
|
||||||
data:
|
|
||||||
- secretKey: runnerToken
|
|
||||||
remoteRef:
|
|
||||||
key: &key 53719920-b100-4355-8c80-b2f9002fad22
|
|
||||||
property: CI_SERVER_TOKEN
|
|
||||||
- secretKey: PACKER_GITHUB_API_TOKEN
|
|
||||||
remoteRef:
|
|
||||||
key: *key
|
|
||||||
property: PACKER_GITHUB_API_TOKEN
|
|
||||||
- secretKey: CACHE_S3_SERVER_ADDRESS
|
|
||||||
remoteRef:
|
|
||||||
key: *key
|
|
||||||
property: CACHE_S3_SERVER_ADDRESS
|
|
||||||
# Includes
|
|
||||||
# CI_SERVER_TOKEN
|
|
||||||
# PACKER_GITHUB_API_TOKEN
|
|
||||||
# CACHE_S3_SERVER_ADDRESS
|
|
||||||
---
|
|
||||||
apiVersion: external-secrets.io/v1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
|
||||||
name: s3-access
|
|
||||||
namespace: gitlab-runner
|
|
||||||
spec:
|
|
||||||
secretStoreRef:
|
|
||||||
name: bitwarden-login
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
target:
|
|
||||||
name: s3-access
|
|
||||||
deletionPolicy: Delete
|
|
||||||
data:
|
|
||||||
- secretKey: username
|
|
||||||
remoteRef:
|
|
||||||
key: &key 04dd39c2-268d-4a33-aa4c-b1550166139f
|
|
||||||
property: username
|
|
||||||
- secretKey: password
|
|
||||||
remoteRef:
|
|
||||||
key: *key
|
|
||||||
property: password
|
|
||||||
---
|
|
||||||
apiVersion: external-secrets.io/v1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
|
||||||
name: image-pull-secrets
|
|
||||||
namespace: gitlab-runner
|
|
||||||
spec:
|
|
||||||
secretStoreRef:
|
|
||||||
name: bitwarden-login
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
target:
|
|
||||||
deletionPolicy: Delete
|
|
||||||
template:
|
|
||||||
type: kubernetes.io/dockerconfigjson
|
|
||||||
data:
|
|
||||||
.dockerconfigjson: >-
|
|
||||||
{
|
|
||||||
"auths": {
|
|
||||||
"https://index.docker.io/v1/": {
|
|
||||||
"username": "{{ .user }}",
|
|
||||||
"password": "{{ .password }}",
|
|
||||||
"email": "greg.hellings@gmail.com",
|
|
||||||
"auth": "{{ .auth }}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
data:
|
|
||||||
- secretKey: user
|
|
||||||
remoteRef:
|
|
||||||
key: &key f560ae38-368c-4e58-898c-aeb90012d597
|
|
||||||
property: username
|
|
||||||
- secretKey: password
|
|
||||||
remoteRef:
|
|
||||||
key: *key
|
|
||||||
property: password
|
|
||||||
- secretKey: auth
|
|
||||||
sourceRef:
|
|
||||||
storeRef:
|
|
||||||
name: bitwarden-fields
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
remoteRef:
|
|
||||||
key: *key
|
|
||||||
property: auth
|
|
||||||
@@ -31,3 +31,6 @@ spec:
|
|||||||
crds:
|
crds:
|
||||||
create: true
|
create: true
|
||||||
includeCRDs: true
|
includeCRDs: true
|
||||||
|
webhook:
|
||||||
|
certManager:
|
||||||
|
enable: true
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ spec:
|
|||||||
chart:
|
chart:
|
||||||
spec:
|
spec:
|
||||||
chart: kyverno
|
chart: kyverno
|
||||||
version: "1.17.1"
|
version: "3.7.1"
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: kyverno
|
name: kyverno
|
||||||
|
|||||||
@@ -20,14 +20,14 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
interval: 10m
|
interval: 10m
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- name: tailscale-operator
|
- name: tailscale
|
||||||
namespace: tailscale
|
namespace: tailscale
|
||||||
- name: kyverno
|
- name: kyverno
|
||||||
namespace: kyverno
|
namespace: kyverno-system
|
||||||
chart:
|
chart:
|
||||||
spec:
|
spec:
|
||||||
chart: longhorn
|
chart: longhorn
|
||||||
version: "1.10.2"
|
version: "1.11.1"
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: longhorn
|
name: longhorn
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ spec:
|
|||||||
containers:
|
containers:
|
||||||
main:
|
main:
|
||||||
image:
|
image:
|
||||||
tag: v2.4.1
|
tag: v2.7.5
|
||||||
env:
|
env:
|
||||||
DB_HOSTNAME: immich-rw.db.svc.cluster.local
|
DB_HOSTNAME: immich-rw
|
||||||
DB_DATABASE_NAME: immich
|
DB_DATABASE_NAME: immich
|
||||||
DB_USERNAME:
|
DB_USERNAME:
|
||||||
valueFrom:
|
valueFrom:
|
||||||
|
|||||||
@@ -0,0 +1,161 @@
|
|||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Cluster
|
||||||
|
metadata:
|
||||||
|
name: immich
|
||||||
|
spec:
|
||||||
|
imageName: "ghcr.io/tensorchord/cloudnative-vectorchord:18"
|
||||||
|
#postgresUID: 1
|
||||||
|
instances: 1
|
||||||
|
storage:
|
||||||
|
size: 60Gi
|
||||||
|
primaryUpdateStrategy: unsupervised
|
||||||
|
postgresql:
|
||||||
|
shared_preload_libraries:
|
||||||
|
- vchord.so
|
||||||
|
|
||||||
|
bootstrap:
|
||||||
|
# Use these with the name "immich-1" to restore from the backups
|
||||||
|
recovery:
|
||||||
|
source: origin
|
||||||
|
# Use these two lines in order to restore from the other database,
|
||||||
|
# once it has restored from the WALs
|
||||||
|
#pg_basebackup:
|
||||||
|
# source: restore
|
||||||
|
# Use this block to bootstrap the cluster, if you don't have backups.
|
||||||
|
# What are you doing without backups, you chump?!
|
||||||
|
# initdb:
|
||||||
|
# database: immich
|
||||||
|
# owner: immich
|
||||||
|
# secret:
|
||||||
|
# name: postgres-user-immich
|
||||||
|
# dataChecksums: true
|
||||||
|
# postInitApplicationSQL:
|
||||||
|
# - ALTER SYSTEM SET search_path TO "$user", public, vectors;
|
||||||
|
# - SET search_path TO "$user", public, vectors;
|
||||||
|
# - CREATE EXTENSION IF NOT EXISTS "cube";
|
||||||
|
# - CREATE EXTENSION IF NOT EXISTS "earthdistance";
|
||||||
|
# - GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "immich";
|
||||||
|
|
||||||
|
externalClusters:
|
||||||
|
- name: origin
|
||||||
|
plugin:
|
||||||
|
name: barman-cloud.cloudnative-pg.io
|
||||||
|
parameters:
|
||||||
|
barmanObjectName: k3sbackup-objectstore
|
||||||
|
serverName: immich
|
||||||
|
- name: restore
|
||||||
|
connectionParameters:
|
||||||
|
host: immich-1-rw
|
||||||
|
user: streaming_replica
|
||||||
|
sslmode: verify-full
|
||||||
|
sslCert:
|
||||||
|
name: immich-1-replication
|
||||||
|
key: tls.crt
|
||||||
|
sslKey:
|
||||||
|
name: immich-1-replication
|
||||||
|
key: tls.key
|
||||||
|
sslRootCert:
|
||||||
|
name: immich-1-ca
|
||||||
|
key: ca.crt
|
||||||
|
|
||||||
|
managed:
|
||||||
|
roles:
|
||||||
|
- name: immich
|
||||||
|
ensure: present
|
||||||
|
comment: Immich DB user
|
||||||
|
login: true
|
||||||
|
superuser: true
|
||||||
|
passwordSecret:
|
||||||
|
name: postgres-user-immich
|
||||||
|
|
||||||
|
plugins:
|
||||||
|
- name: barman-cloud.cloudnative-pg.io
|
||||||
|
isWALArchiver: true
|
||||||
|
parameters:
|
||||||
|
barmanObjectName: k3sbackup-objectstore
|
||||||
|
---
|
||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Database
|
||||||
|
metadata:
|
||||||
|
name: database-immich
|
||||||
|
spec:
|
||||||
|
name: immich
|
||||||
|
owner: immich
|
||||||
|
cluster:
|
||||||
|
name: immich
|
||||||
|
extensions:
|
||||||
|
- name: vectors
|
||||||
|
ensure: present
|
||||||
|
- name: vectorchord
|
||||||
|
ensure: present
|
||||||
|
- name: cube
|
||||||
|
ensure: present
|
||||||
|
- name: earthdistance
|
||||||
|
ensure: present
|
||||||
|
---
|
||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: k3sbackup-externalsecret
|
||||||
|
spec:
|
||||||
|
target:
|
||||||
|
name: k3sbackup-secret
|
||||||
|
deletionPolicy: Delete
|
||||||
|
template:
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
username: |-
|
||||||
|
{{ .username }}
|
||||||
|
password: |-
|
||||||
|
{{ .password }}
|
||||||
|
data:
|
||||||
|
- secretKey: username
|
||||||
|
sourceRef:
|
||||||
|
storeRef:
|
||||||
|
name: bitwarden-login
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
remoteRef:
|
||||||
|
key: 685b29c6-9264-4e60-ba4a-b2ea005a5d7b
|
||||||
|
property: username
|
||||||
|
- secretKey: password
|
||||||
|
sourceRef:
|
||||||
|
storeRef:
|
||||||
|
name: bitwarden-login
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
remoteRef:
|
||||||
|
key: 685b29c6-9264-4e60-ba4a-b2ea005a5d7b
|
||||||
|
property: password
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: barmancloud.cnpg.io/v1
|
||||||
|
kind: ObjectStore
|
||||||
|
metadata:
|
||||||
|
name: k3sbackup-objectstore
|
||||||
|
spec:
|
||||||
|
configuration:
|
||||||
|
destinationPath: "s3://k3sbackup/postgres"
|
||||||
|
endpointURL: "http://chronicles.thehellings.lan:9000/"
|
||||||
|
s3Credentials:
|
||||||
|
accessKeyId:
|
||||||
|
name: k3sbackup-secret
|
||||||
|
key: username
|
||||||
|
secretAccessKey:
|
||||||
|
name: k3sbackup-secret
|
||||||
|
key: password
|
||||||
|
wal:
|
||||||
|
compression: gzip
|
||||||
|
retentionPolicy: "30d"
|
||||||
|
---
|
||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: ScheduledBackup
|
||||||
|
metadata:
|
||||||
|
name: immich-backup
|
||||||
|
spec:
|
||||||
|
immediate: false # Create one when this is added to the cluster
|
||||||
|
schedule: "0 2 0 * * *" # 1AM, nightly
|
||||||
|
backupOwnerReference: self
|
||||||
|
cluster:
|
||||||
|
name: immich
|
||||||
|
method: plugin
|
||||||
|
pluginConfiguration:
|
||||||
|
name: barman-cloud.cloudnative-pg.io
|
||||||
@@ -2,8 +2,9 @@ namespace: immich
|
|||||||
|
|
||||||
resources:
|
resources:
|
||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
- chart.yaml
|
|
||||||
- postgres-user-secret.yaml
|
- postgres-user-secret.yaml
|
||||||
|
- database.yaml
|
||||||
|
- chart.yaml
|
||||||
- pvc.yaml
|
- pvc.yaml
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
- backup.yaml
|
- backup.yaml
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ resources:
|
|||||||
- mariadb-operator
|
- mariadb-operator
|
||||||
- databases
|
- databases
|
||||||
- matrix
|
- matrix
|
||||||
#- gitlab-runner
|
|
||||||
- immich
|
- immich
|
||||||
- monitoring
|
- monitoring
|
||||||
- pinchflat
|
- pinchflat
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ spec:
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: mariadb-operator
|
name: mariadb-operator
|
||||||
interval: "1h"
|
interval: "1h"
|
||||||
|
version: "26.3.0"
|
||||||
---
|
---
|
||||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
kind: HelmRelease
|
kind: HelmRelease
|
||||||
@@ -33,6 +34,7 @@ spec:
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: mariadb-operator
|
name: mariadb-operator
|
||||||
interval: "1h"
|
interval: "1h"
|
||||||
|
version: "26.3.0"
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- name: mariadb-operator-crds
|
- name: mariadb-operator-crds
|
||||||
- name: longhorn
|
- name: longhorn
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ spec:
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: mariadb-operator
|
name: mariadb-operator
|
||||||
interval: "1h"
|
interval: "1h"
|
||||||
|
version: "26.3.0"
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- name: mariadb-operator-crds
|
- name: mariadb-operator-crds
|
||||||
- name: mariadb-operator
|
- name: mariadb-operator
|
||||||
|
|||||||
@@ -158,6 +158,8 @@ in
|
|||||||
"https://thehellings.com"
|
"https://thehellings.com"
|
||||||
else
|
else
|
||||||
"https://kuma.shire-zebra.ts.net/";
|
"https://kuma.shire-zebra.ts.net/";
|
||||||
|
"devtools.debugger.remote-enabled" = true;
|
||||||
|
"devtools.debugger.remote-port" = 9222;
|
||||||
"doh-rollout.doorhanger-decision" = "UIDisabled";
|
"doh-rollout.doorhanger-decision" = "UIDisabled";
|
||||||
"doh-rollout.doneFirstRun" = true;
|
"doh-rollout.doneFirstRun" = true;
|
||||||
"signon.rememberSignons" = false;
|
"signon.rememberSignons" = false;
|
||||||
|
|||||||
+15
-7
@@ -9,6 +9,7 @@
|
|||||||
let
|
let
|
||||||
builderHosts = lib.filterAttrs (_n: v: (builtins.hasAttr "builder" v) && v.builder) metadata.hosts;
|
builderHosts = lib.filterAttrs (_n: v: (builtins.hasAttr "builder" v) && v.builder) metadata.hosts;
|
||||||
cfg = config.greg.nix;
|
cfg = config.greg.nix;
|
||||||
|
hostname = x: if cfg.cache then "${x}.shire-zebra.ts.net" else "${x}.thehellings.lan";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.greg.nix = {
|
options.greg.nix = {
|
||||||
@@ -22,7 +23,7 @@ in
|
|||||||
programs.ssh.extraConfig = builtins.concatStringsSep "\n" (
|
programs.ssh.extraConfig = builtins.concatStringsSep "\n" (
|
||||||
lib.map (x: ''
|
lib.map (x: ''
|
||||||
Host ${x}-builder
|
Host ${x}-builder
|
||||||
Hostname ${x}.shire-zebra.ts.net
|
Hostname ${hostname x}
|
||||||
User remote-builder-user
|
User remote-builder-user
|
||||||
'') (lib.attrNames builderHosts)
|
'') (lib.attrNames builderHosts)
|
||||||
);
|
);
|
||||||
@@ -57,12 +58,18 @@ in
|
|||||||
"gregory.hellings"
|
"gregory.hellings"
|
||||||
]; # For home and for work machines
|
]; # For home and for work machines
|
||||||
substituters =
|
substituters =
|
||||||
(if cfg.cache then [
|
(
|
||||||
#"http://chronicles.shire-zebra.ts.net:9000/binary-cache/"
|
if cfg.cache then
|
||||||
"http://nas1.shire-zebra.ts.net:8080/default"
|
[
|
||||||
] else [
|
#"http://chronicles.shire-zebra.ts.net:9000/binary-cache/"
|
||||||
"http://nas1.thehellings.lan:8080/default"
|
"http://nas1.shire-zebra.ts.net:9000/niks3"
|
||||||
])
|
#"http://nas1.shire-zebra.ts.net:8080/default"
|
||||||
|
]
|
||||||
|
else
|
||||||
|
[
|
||||||
|
"http://nas1.thehellings.lan:8080/default"
|
||||||
|
]
|
||||||
|
)
|
||||||
++ [
|
++ [
|
||||||
"https://ai.cachix.org"
|
"https://ai.cachix.org"
|
||||||
"https://nixpkgs-python.cachix.org"
|
"https://nixpkgs-python.cachix.org"
|
||||||
@@ -72,6 +79,7 @@ in
|
|||||||
"https://nixhelm.cachix.org"
|
"https://nixhelm.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
|
"niks3:8iztr/NACwYEK5O7JJtGFGuv+ho/cmwql8NeoCiXNto="
|
||||||
#"chronicles.shire-zebra.ts.net:0qWYHn3gGllXChhAaaxKlNZtRy6yG/XJs1RFSqV3nW8="
|
#"chronicles.shire-zebra.ts.net:0qWYHn3gGllXChhAaaxKlNZtRy6yG/XJs1RFSqV3nW8="
|
||||||
"default:DTGxNijw2D8FrZJPT1pFTWcLqbt60tovL+9Z+VW0HRY="
|
"default:DTGxNijw2D8FrZJPT1pFTWcLqbt60tovL+9Z+VW0HRY="
|
||||||
"ai.cachix.org-1:N9dzRK+alWwoKXQlnn0H6aUx0lU/mspIoz8hMvGvbbc="
|
"ai.cachix.org-1:N9dzRK+alWwoKXQlnn0H6aUx0lU/mspIoz8hMvGvbbc="
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.greg.adblockUpdate;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options.greg.adblockUpdate = {
|
||||||
|
enable = lib.mkEnableOption "Enable auto-update of block list";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
systemd = {
|
||||||
|
services.adblock-update = {
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
requires = [ "network-online.target" ];
|
||||||
|
script = lib.getExe pkgs.adblockUpdate;
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
};
|
||||||
|
timers.adblock-update = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
requires = [ "network-online.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "daily";
|
||||||
|
Unit = "adblock-update.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,12 +4,12 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./adblock-update.nix
|
||||||
./albyhub.nix
|
./albyhub.nix
|
||||||
./backup.nix
|
./backup.nix
|
||||||
./ceph.nix
|
./ceph.nix
|
||||||
./db.nix
|
./db.nix
|
||||||
./gitea-runner.nix
|
./gitea-runner.nix
|
||||||
./gitlab-runner.nix
|
|
||||||
./gnome.nix
|
./gnome.nix
|
||||||
./home.nix
|
./home.nix
|
||||||
./kde.nix
|
./kde.nix
|
||||||
|
|||||||
@@ -45,22 +45,27 @@ in
|
|||||||
"debian-latest:docker://node:25-trixie"
|
"debian-latest:docker://node:25-trixie"
|
||||||
|
|
||||||
"ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
|
"ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
|
||||||
|
"ubuntu-26.04:docker://docker.gitea.com/runner-images:ubuntu-26.04"
|
||||||
"ubuntu-24.04:docker://docker.gitea.com/runner-images:ubuntu-24.04"
|
"ubuntu-24.04:docker://docker.gitea.com/runner-images:ubuntu-24.04"
|
||||||
"ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04"
|
"ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04"
|
||||||
|
|
||||||
"ubuntu-full-latest:docker://ghcr.io/catthehacker/ubuntu:full-latest"
|
"ubuntu-full-latest:docker://ghcr.io/catthehacker/ubuntu:full-latest"
|
||||||
|
"ubuntu-full-26.04:docker://ghcr.io/catthehacker/ubuntu:full-26.04"
|
||||||
"ubuntu-full-24.04:docker://ghcr.io/catthehacker/ubuntu:full-24.04"
|
"ubuntu-full-24.04:docker://ghcr.io/catthehacker/ubuntu:full-24.04"
|
||||||
"ubuntu-full-22.04:docker://ghcr.io/catthehacker/ubuntu:full-22.04"
|
"ubuntu-full-22.04:docker://ghcr.io/catthehacker/ubuntu:full-22.04"
|
||||||
|
|
||||||
"ubuntu-act-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest"
|
"ubuntu-act-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest"
|
||||||
|
"ubuntu-act-26.04:docker://ghcr.io/catthehacker/ubuntu:act-26.04"
|
||||||
"ubuntu-act-24.04:docker://ghcr.io/catthehacker/ubuntu:act-24.04"
|
"ubuntu-act-24.04:docker://ghcr.io/catthehacker/ubuntu:act-24.04"
|
||||||
"ubuntu-act-22.04:docker://ghcr.io/catthehacker/ubuntu:act-22.04"
|
"ubuntu-act-22.04:docker://ghcr.io/catthehacker/ubuntu:act-22.04"
|
||||||
|
|
||||||
"ubuntu-runner-latest:docker://ghcr.io/catthehacker/ubuntu:runner-latest"
|
"ubuntu-runner-latest:docker://ghcr.io/catthehacker/ubuntu:runner-latest"
|
||||||
|
"ubuntu-runner-26.04:docker://ghcr.io/catthehacker/ubuntu:runner-26.04"
|
||||||
"ubuntu-runner-24.04:docker://ghcr.io/catthehacker/ubuntu:runner-24.04"
|
"ubuntu-runner-24.04:docker://ghcr.io/catthehacker/ubuntu:runner-24.04"
|
||||||
"ubuntu-runner-22.04:docker://ghcr.io/catthehacker/ubuntu:runner-22.04"
|
"ubuntu-runner-22.04:docker://ghcr.io/catthehacker/ubuntu:runner-22.04"
|
||||||
|
|
||||||
"ubuntu-rust-latest:docker://ghcr.io/catthehacker/ubuntu:rust-latest"
|
"ubuntu-rust-latest:docker://ghcr.io/catthehacker/ubuntu:rust-latest"
|
||||||
|
"ubuntu-rust-26.04:docker://ghcr.io/catthehacker/ubuntu:rust-26.04"
|
||||||
"ubuntu-rust-24.04:docker://ghcr.io/catthehacker/ubuntu:rust-24.04"
|
"ubuntu-rust-24.04:docker://ghcr.io/catthehacker/ubuntu:rust-24.04"
|
||||||
"ubuntu-rust-22.04:docker://ghcr.io/catthehacker/ubuntu:rust-22.04"
|
"ubuntu-rust-22.04:docker://ghcr.io/catthehacker/ubuntu:rust-22.04"
|
||||||
|
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.greg.runner;
|
|
||||||
environmentVariables = {
|
|
||||||
EFI_DIR = "${pkgs.OVMF.fd}/FV/";
|
|
||||||
STORAGE_URL = "s3.thehellings.lan:9000";
|
|
||||||
};
|
|
||||||
runnerCfg = file: {
|
|
||||||
inherit environmentVariables;
|
|
||||||
authenticationTokenConfigFile = file;
|
|
||||||
executor = "shell";
|
|
||||||
limit = cfg.threads;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
# We want exactly one of these to be true, but not both. Neither can both be false
|
|
||||||
{
|
|
||||||
options.greg.runner = {
|
|
||||||
enable = lib.mkEnableOption "Enable as a gitlab-runner with both libvirt and virtualbox";
|
|
||||||
|
|
||||||
threads = lib.mkOption {
|
|
||||||
default = 5;
|
|
||||||
type = lib.types.int;
|
|
||||||
description = "The maximum number of concurrent jobs";
|
|
||||||
};
|
|
||||||
|
|
||||||
qemu = lib.mkEnableOption "Enable the qemu host (mutually exclusive with vbox)";
|
|
||||||
vbox = lib.mkEnableOption "Enable the vbox host (mutually exclusive with qemu)";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable ({
|
|
||||||
# assertions = [
|
|
||||||
# {
|
|
||||||
# assertion = cfg.qemu || cfg.vbox && (cfg.qemu != cfg.vbox);
|
|
||||||
# message = "You must enable exactly one of qemu or vbox";
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
# Shared configurations
|
|
||||||
age.secrets = {
|
|
||||||
qemu.file = ../../secrets/gitlab/nixos-qemu-shell.age;
|
|
||||||
vbox.file = ../../secrets/gitlab/nixos-vbox-shell.age;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.gitlab-runner = {
|
|
||||||
enable = false;
|
|
||||||
settings.concurrent = cfg.threads;
|
|
||||||
services = {
|
|
||||||
qemu = lib.mkIf cfg.qemu (runnerCfg config.age.secrets.qemu.path);
|
|
||||||
vbox = lib.mkIf cfg.vbox (runnerCfg config.age.secrets.vbox.path);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.gitlab-runner = {
|
|
||||||
serviceConfig = {
|
|
||||||
DevicePolicy = lib.mkForce "auto";
|
|
||||||
User = "root";
|
|
||||||
DynamicUser = lib.mkForce false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users.extraGroups.vboxusers.members = lib.optional cfg.vbox "greg";
|
|
||||||
|
|
||||||
virtualisation = {
|
|
||||||
libvirtd = lib.mkIf cfg.qemu {
|
|
||||||
enable = true;
|
|
||||||
allowedBridges = [
|
|
||||||
"br0"
|
|
||||||
"virbr0"
|
|
||||||
];
|
|
||||||
onBoot = "ignore"; # only restart VMs labeled 'autostart'
|
|
||||||
};
|
|
||||||
virtualbox.host = lib.mkIf cfg.vbox {
|
|
||||||
enable = true;
|
|
||||||
enableExtensionPack = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -7,8 +7,8 @@
|
|||||||
let
|
let
|
||||||
cfg = config.greg.kubernetes;
|
cfg = config.greg.kubernetes;
|
||||||
cert-manager = pkgs.fetchurl {
|
cert-manager = pkgs.fetchurl {
|
||||||
url = "https://github.com/cert-manager/cert-manager/releases/download/v1.18.2/cert-manager.yaml";
|
url = "https://github.com/cert-manager/cert-manager/releases/download/v1.20.2/cert-manager.yaml";
|
||||||
sha256 = "0vx1nfyhl0rzb6psfxplq8pfp18mrrdk83n8rj2ph8q6r15vcih5";
|
sha256 = "sha256-HOEcrpEq3sxp5rtiNDX6/J7SFQX57/+YvXHXuA8B2x8=";
|
||||||
};
|
};
|
||||||
flux = pkgs.fetchurl {
|
flux = pkgs.fetchurl {
|
||||||
url = "https://github.com/fluxcd/flux2/releases/download/v2.7.2/install.yaml";
|
url = "https://github.com/fluxcd/flux2/releases/download/v2.7.2/install.yaml";
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ let
|
|||||||
nebulaDomain = "nebula.thehellings.com";
|
nebulaDomain = "nebula.thehellings.com";
|
||||||
# Linode's public address — used by all non-lighthouse hosts to reach it.
|
# Linode's public address — used by all non-lighthouse hosts to reach it.
|
||||||
# Override with greg.nebula.lighthouseAddr if the public IP ever changes.
|
# Override with greg.nebula.lighthouseAddr if the public IP ever changes.
|
||||||
defaultLighthouseAddr = "linode.${nebulaDomain}";
|
defaultLighthouseAddr = "thehellings.com";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.greg.nebula = {
|
options.greg.nebula = {
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ with lib;
|
|||||||
|
|
||||||
target = mkOption {
|
target = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''The destination that is being proxied.'';
|
description = "The destination that is being proxied.";
|
||||||
example = "http://localhost:8080";
|
example = "http://localhost:8080";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ with lib;
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBLOqwbp4hFYkiJpokh9i2RToa/6tQcwthDNQH69tyBF root@vm-matrix.thehellings.lan"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBLOqwbp4hFYkiJpokh9i2RToa/6tQcwthDNQH69tyBF root@vm-matrix.thehellings.lan"
|
||||||
# Mac
|
# Mac
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBT5BFHQz1I5k/zkLQNLjL77EaqfdpRiF2Ci4eS9LMDK gregory.hellings@jude.thehellings.lan"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBT5BFHQz1I5k/zkLQNLjL77EaqfdpRiF2Ci4eS9LMDK gregory.hellings@jude.thehellings.lan"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPVlMoN2pkKRRwKNuMbMczki5ybR34wvjdgDNlgR74Wh greg@gregs-MacBook-Pro-16-inch-Nov-2024"
|
||||||
];
|
];
|
||||||
homeMode = "500";
|
homeMode = "500";
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ with lib;
|
|||||||
devices = {
|
devices = {
|
||||||
chronicles.id = "7FI6Y3M-C7YQEDI-IB345L6-RKLXMB6-AEIV57Y-3J2RCXQ-MK6QRNK-EINPXAE";
|
chronicles.id = "7FI6Y3M-C7YQEDI-IB345L6-RKLXMB6-AEIV57Y-3J2RCXQ-MK6QRNK-EINPXAE";
|
||||||
genesis.id = "YDTH4SD-GUAC5AA-SSYWYPZ-YMJW5LK-LE7PZKJ-GV2UJFZ-CU7LZAD-GTYWCQK";
|
genesis.id = "YDTH4SD-GUAC5AA-SSYWYPZ-YMJW5LK-LE7PZKJ-GV2UJFZ-CU7LZAD-GTYWCQK";
|
||||||
gitlab.id = "GKNOZWI-CNC2Q2F-R5GGGDX-RYFGHK4-CCC37LC-GVOEMJI-46QPC6G-AWFEOQE";
|
|
||||||
linode.id = "IJMMXPR-WNALZBD-FMJH5W5-WV7XGJY-HLJTKGT-5TKHJIH-75LT56D-UUZCYQE";
|
linode.id = "IJMMXPR-WNALZBD-FMJH5W5-WV7XGJY-HLJTKGT-5TKHJIH-75LT56D-UUZCYQE";
|
||||||
};
|
};
|
||||||
options = {
|
options = {
|
||||||
|
|||||||
+10
-5
@@ -2,15 +2,19 @@
|
|||||||
"infra": {
|
"infra": {
|
||||||
"dns": "10.42.1.5",
|
"dns": "10.42.1.5",
|
||||||
"gw": "10.42.1.1",
|
"gw": "10.42.1.1",
|
||||||
|
"lan": "10.42.0.0/16",
|
||||||
"netmask": "255.255.0.0",
|
"netmask": "255.255.0.0",
|
||||||
"prefix": "16"
|
"nebula": "10.157.0.0/16",
|
||||||
|
"prefix": "16",
|
||||||
|
"tailscale": "100.64.0.0/10"
|
||||||
},
|
},
|
||||||
"hosts": {
|
"hosts": {
|
||||||
"chronicles": {
|
"chronicles": {
|
||||||
"ip": "10.42.1.4",
|
"ip": "10.42.1.4",
|
||||||
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS",
|
"pubkey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS",
|
||||||
"external": true,
|
"external": true,
|
||||||
"ts": "100.119.228.115"
|
"ts": "100.119.228.115",
|
||||||
|
"aliases": [ "s3" ]
|
||||||
},
|
},
|
||||||
"exodus": {
|
"exodus": {
|
||||||
"ip": null,
|
"ip": null,
|
||||||
@@ -110,13 +114,14 @@
|
|||||||
"external": true,
|
"external": true,
|
||||||
"system": "x86_64-linux"
|
"system": "x86_64-linux"
|
||||||
},
|
},
|
||||||
|
"printer": {
|
||||||
|
"external": true,
|
||||||
|
"ip": "10.42.1.3"
|
||||||
|
},
|
||||||
"proxmoxtemplate": {
|
"proxmoxtemplate": {
|
||||||
"external": true,
|
"external": true,
|
||||||
"system": "x86_64-linux"
|
"system": "x86_64-linux"
|
||||||
},
|
},
|
||||||
"gitlab": {
|
|
||||||
"system": "x86_64-linux"
|
|
||||||
},
|
|
||||||
"wsl": {
|
"wsl": {
|
||||||
"external": true,
|
"external": true,
|
||||||
"system": "aarch64-linux"
|
"system": "aarch64-linux"
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ final: prev:
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
daikinone = cp ./daikinone.nix { };
|
daikinone = cp ./daikinone.nix { };
|
||||||
xonsh-apipenv = cp ./xonsh-apipenv.nix { };
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
@@ -25,11 +24,9 @@ final: prev:
|
|||||||
withBDplus = true;
|
withBDplus = true;
|
||||||
};
|
};
|
||||||
handbrake = prev.handbrake.override { libbluray = final.libbluray-custom; };
|
handbrake = prev.handbrake.override { libbluray = final.libbluray-custom; };
|
||||||
pipenv-ivr = prev.callPackage ./pipenv.nix { };
|
|
||||||
OVMFFull = prev.OVMFFull.override {
|
OVMFFull = prev.OVMFFull.override {
|
||||||
secureBoot = true;
|
secureBoot = true;
|
||||||
msVarsTemplate = true;
|
msVarsTemplate = true;
|
||||||
tpmSupport = true;
|
tpmSupport = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// (import ../pkgs { pkgs = prev; })
|
|
||||||
|
|||||||
@@ -1,92 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
stdenv,
|
|
||||||
python3,
|
|
||||||
fetchFromGitHub,
|
|
||||||
installShellFiles,
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
|
|
||||||
runtimeDeps =
|
|
||||||
ps:
|
|
||||||
with ps;
|
|
||||||
[
|
|
||||||
certifi
|
|
||||||
pysocks
|
|
||||||
setuptools
|
|
||||||
(pip.overridePythonAttrs {
|
|
||||||
dependencies = [ ps.pysocks ];
|
|
||||||
})
|
|
||||||
virtualenv
|
|
||||||
virtualenv-clone
|
|
||||||
]
|
|
||||||
++ lib.optionals stdenv.hostPlatform.isAndroid [ pyjnius ];
|
|
||||||
|
|
||||||
pythonEnv = python3.withPackages runtimeDeps;
|
|
||||||
|
|
||||||
in
|
|
||||||
python3.pkgs.buildPythonApplication rec {
|
|
||||||
pname = "pipenv";
|
|
||||||
version = "2023.11.15";
|
|
||||||
format = "pyproject";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "pypa";
|
|
||||||
repo = "pipenv";
|
|
||||||
rev = "refs/tags/v${version}";
|
|
||||||
hash = "sha256-kxwyws22xJkqBy/hXXcAPHZR2NgZHbmwZr9vYqce434=";
|
|
||||||
};
|
|
||||||
|
|
||||||
env.LC_ALL = "en_US.UTF-8";
|
|
||||||
|
|
||||||
nativeBuildInputs = with python3.pkgs; [
|
|
||||||
installShellFiles
|
|
||||||
setuptools
|
|
||||||
wheel
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
# pipenv invokes python in a subprocess to create a virtualenv
|
|
||||||
# and to call setup.py.
|
|
||||||
# It would use sys.executable, which in our case points to a python that
|
|
||||||
# does not have the required dependencies.
|
|
||||||
substituteInPlace pipenv/utils/virtualenv.py \
|
|
||||||
--replace "sys.executable" "'${pythonEnv.interpreter}'"
|
|
||||||
'';
|
|
||||||
|
|
||||||
propagatedBuildInputs = runtimeDeps python3.pkgs;
|
|
||||||
|
|
||||||
preCheck = ''
|
|
||||||
export HOME="$TMPDIR"
|
|
||||||
'';
|
|
||||||
|
|
||||||
nativeCheckInputs = with python3.pkgs; [
|
|
||||||
mock
|
|
||||||
pytestCheckHook
|
|
||||||
pytest-xdist
|
|
||||||
pytz
|
|
||||||
requests
|
|
||||||
];
|
|
||||||
|
|
||||||
disabledTests = [
|
|
||||||
"test_convert_deps_to_pip"
|
|
||||||
"test_download_file"
|
|
||||||
];
|
|
||||||
|
|
||||||
disabledTestPaths = [ "tests/integration" ];
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
installShellCompletion --cmd pipenv \
|
|
||||||
--bash <(_PIPENV_COMPLETE=bash_source $out/bin/pipenv) \
|
|
||||||
--zsh <(_PIPENV_COMPLETE=zsh_source $out/bin/pipenv) \
|
|
||||||
--fish <(_PIPENV_COMPLETE=fish_source $out/bin/pipenv)
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Python Development Workflow for Humans";
|
|
||||||
license = licenses.mit;
|
|
||||||
platforms = platforms.all;
|
|
||||||
maintainers = with maintainers; [ berdario ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
buildPythonPackage,
|
|
||||||
fetchFromGitHub,
|
|
||||||
toPythonModule,
|
|
||||||
pipenv,
|
|
||||||
setuptools,
|
|
||||||
}:
|
|
||||||
|
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "xonsh-apipenv";
|
|
||||||
version = "0.6.0";
|
|
||||||
pyproject = true;
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "greg-hellings";
|
|
||||||
repo = "xontrib-apipenv";
|
|
||||||
rev = version;
|
|
||||||
hash = "sha256-Wa8iev0ow1oh95tPCv5tAJUMBYiStWms8I31WbVcOok=";
|
|
||||||
};
|
|
||||||
|
|
||||||
dependencies = [ (toPythonModule pipenv) ];
|
|
||||||
build-system = [ setuptools ];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Auto pipenv support for Xonsh";
|
|
||||||
homepage = "https://github.com/greg-hellings/xontrib-apipenv";
|
|
||||||
license = licenses.mit;
|
|
||||||
maintainers = [ ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
writeShellApplication,
|
||||||
|
curl,
|
||||||
|
gnused,
|
||||||
|
}:
|
||||||
|
writeShellApplication {
|
||||||
|
name = "adblock-update";
|
||||||
|
runtimeInputs = [
|
||||||
|
curl
|
||||||
|
gnused
|
||||||
|
];
|
||||||
|
text = ''
|
||||||
|
curl -s https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | sed '1,33d' > /etc/adblock_hosts
|
||||||
|
curl -s https://adaway.org/hosts.txt | sed '1,24d' | sed 's/127.0.0.1/0.0.0.0/' >> /etc/adblock_hosts
|
||||||
|
|
||||||
|
# Custom domains that I need to preserve for some reason
|
||||||
|
for f in "segment.com" "segment.io" "branch.io" "dev.visualwebsiteoptimizer.com" "click.discord.com"; do
|
||||||
|
sed -i -e "/''${f}/d" /etc/adblock_hosts # Blocks Trelly content for house investors
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
}
|
||||||
+29
-27
@@ -1,35 +1,37 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
system ? pkgs.stdenv.hostPlatform.system,
|
system ? pkgs.stdenv.hostPlatform.system,
|
||||||
|
top,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
c = pkgs.callPackage;
|
c = pkgs.newScope packages;
|
||||||
|
packages = if system == "x86_64-linux" then (allSys // x86Linux) else allSys;
|
||||||
|
allSys = {
|
||||||
|
#default = iso;
|
||||||
|
#iso = top.self.nixosConfigurations.iso.config.system.build.isoImage;
|
||||||
|
#iso-beta = self.nixosConfigurations.iso-beta.config.system.build.isoImage;
|
||||||
|
aacs = c ./aacs.nix { };
|
||||||
|
adblock_update = c ./adblock_update.nix { };
|
||||||
|
brew = c ./homebrew.nix { };
|
||||||
|
create_ssl = c ./create_ssl.nix { };
|
||||||
|
gcc-tune = c ./gcc-tune.nix { };
|
||||||
|
#gen-build = c ./gen-build { };
|
||||||
|
hms = c ./hms { };
|
||||||
|
inject-darwin = c ./inject-darwin.nix { };
|
||||||
|
inject = c ./inject.nix { };
|
||||||
|
setup-ssh = c ./setup-ssh { };
|
||||||
|
upgrade-pg-cluster = c ./upgrade-pg-cluster.nix { };
|
||||||
|
};
|
||||||
|
x86Linux = {
|
||||||
|
qemu-hook = c ./qemu-hook.nix { };
|
||||||
|
vfio_startup = c ./vfio_startup.nix { };
|
||||||
|
vfio_shutdown = c ./vfio_shutdown.nix { };
|
||||||
|
}
|
||||||
|
// (import ./zim {
|
||||||
|
inherit (top.nixpkgs-lib) lib;
|
||||||
|
inherit pkgs;
|
||||||
|
});
|
||||||
in
|
in
|
||||||
{
|
packages
|
||||||
#default = iso;
|
|
||||||
#iso = top.self.nixosConfigurations.iso.config.system.build.isoImage;
|
|
||||||
#iso-beta = self.nixosConfigurations.iso-beta.config.system.build.isoImage;
|
|
||||||
aacs = c ./aacs.nix { };
|
|
||||||
brew = c ./homebrew.nix { };
|
|
||||||
create_ssl = c ./create_ssl.nix { };
|
|
||||||
gcc-tune = c ./gcc-tune.nix { };
|
|
||||||
#gen-build = c ./gen-build { };
|
|
||||||
hms = c ./hms { };
|
|
||||||
inject-darwin = c ./inject-darwin.nix { };
|
|
||||||
inject = c ./inject.nix { };
|
|
||||||
setup-ssh = c ./setup-ssh { };
|
|
||||||
upgrade-pg-cluster = c ./upgrade-pg-cluster.nix { };
|
|
||||||
}
|
|
||||||
// (
|
|
||||||
if system == "x86_64-linux" then
|
|
||||||
{
|
|
||||||
qemu-hook = c ./qemu-hook.nix { };
|
|
||||||
vfio_startup = c ./vfio_startup.nix { };
|
|
||||||
vfio_shutdown = c ./vfio_shutdown.nix { };
|
|
||||||
zim = c ./zim.nix { };
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ }
|
|
||||||
)
|
|
||||||
|
|||||||
+48
-32
@@ -1,72 +1,88 @@
|
|||||||
{
|
{
|
||||||
"en": {
|
"en": {
|
||||||
"gutenberg": {
|
"gutenberg": {
|
||||||
"name": "gutenberg_en_all_2023-08.zim",
|
"name": "gutenberg_en_all",
|
||||||
"hash": "sha256-wWi0vTyMD/Es0w/jk9uyg4DN94080thPfT5uphEqbUc="
|
"version": "2023-08",
|
||||||
|
"hash": "sha256-OXmdHdsLZcW4nCUQsy7sMpUssS8NV7ztkCgS/nsISuw="
|
||||||
},
|
},
|
||||||
"phet": {
|
"phet": {
|
||||||
"name": "phet_en_all_2025-03.zim",
|
"name": "phet_en_all",
|
||||||
"hash": "sha256-HT/gVNydkOitny6oUl2A+JvbFDGAIeb0h+xbMeQ2Rqs="
|
"version": "2025-03",
|
||||||
|
"hash": "sha256-ARuUzU2o17J2/ZedHc2acXl33dtHCbQJEb72UQUEm1Y="
|
||||||
},
|
},
|
||||||
"wikibooks": {
|
"wikibooks": {
|
||||||
"name": "wikibooks_en_all_maxi_2025-10.zim",
|
"name": "wikibooks_en_all_maxi",
|
||||||
"hash": "sha256-zmcvrvGO+LEHt7x8/SoguBDODUyRXy9x5LUGAkS+fF8="
|
"version": "2025-10",
|
||||||
|
"hash": "sha256-ONBh/ze1Fv2Ffm5b9vDzYS/i2cWSa4pM4MLZnozr2n8="
|
||||||
},
|
},
|
||||||
"wikipedia": {
|
"wikipedia": {
|
||||||
"name": "wikipedia_en_all_maxi_2025-08.zim",
|
"name": "wikipedia_en_all_maxi",
|
||||||
"hash": "sha256-r7Cd0vjEb84Ftw+EwZSlqb8qhqm8WA3LAPdHAav7wrg="
|
"version": "2026-02",
|
||||||
|
"hash": "sha256-vwhTv5TtjFNSTl7mcoi8SJiBm8nUlq8rP4UrZYir3Sc="
|
||||||
},
|
},
|
||||||
"wikisource": {
|
"wikisource": {
|
||||||
"name": "wikisource_en_all_maxi_2025-11.zim",
|
"name": "wikisource_en_all_maxi",
|
||||||
"hash": "sha256-jPHh/C20PARN6K7aPNw3k9fFHhpwzsREi/1o1DIISS4="
|
"version": "2025-11",
|
||||||
|
"hash": "sha256-p1Jio+PMTZVSLIDIOBeMG3acXJg83CwQM7zIWDUyozM="
|
||||||
},
|
},
|
||||||
"wikiversity": {
|
"wikiversity": {
|
||||||
"name": "wikiversity_en_all_maxi_2025-11.zim",
|
"name": "wikiversity_en_all_maxi",
|
||||||
"hash": "sha256-0DaE2EUdHvaX3XqD3f0lwurSAaDZ4hEKtrMEutL5xt0="
|
"version": "2025-11",
|
||||||
|
"hash": "sha256-IG/gAUdc/vHRrIWGHhw8vMJdLWwqrNbfh+SiclQRIAI="
|
||||||
},
|
},
|
||||||
"wiktionary": {
|
"wiktionary": {
|
||||||
"name": "wiktionary_en_all_nopic_2025-09.zim",
|
"name": "wiktionary_en_all_nopic",
|
||||||
"hash": "sha256-EzrrruJQWY/3pP93WCTeCCfaPvpshqdkR0TFxVz7bEI="
|
"version": "2025-09",
|
||||||
|
"hash": "sha256-Ghcb60qeGaSJtTKQkJoMx/XucX7Lt1XY145lD3gHlMg="
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fr": {
|
"fr": {
|
||||||
"gutenberg": {
|
"gutenberg": {
|
||||||
"name": "gutenberg_fr_all_2025-10.zim",
|
"name": "gutenberg_fr_all",
|
||||||
"hash": "sha256-1gU7v//LYX/2LyIRjO02A1fWPQz9Y7Qt5ftgeazd3G8="
|
"version": "2025-10",
|
||||||
|
"hash": "sha256-gLHxLXJNwwcxM/mZHtoJ8ojbGQ1fugxgni/+RXccwhU="
|
||||||
},
|
},
|
||||||
"phet": {
|
"phet": {
|
||||||
"name": "phet_fr_all_2025-03.zim",
|
"name": "phet_fr_all",
|
||||||
"hash": "sha256-K56i55WPu5EMQHIrnnqhgJ32WozZ6oYD9X3IBytGA0A="
|
"version": "2025-03",
|
||||||
|
"hash": "sha256-CSboZNTIowLLhp1u9wkxH8xmu3LvQNx5q493AOYJRIc="
|
||||||
},
|
},
|
||||||
"wikibooks": {
|
"wikibooks": {
|
||||||
"name": "wikibooks_fr_all_maxi_2025-09.zim",
|
"name": "wikibooks_fr_all_maxi",
|
||||||
"hash": "sha256-PQSdPbBHwK3IfFPH5GsKaxkNGTlZVJNJEI8gNioBl1U="
|
"version": "2025-09",
|
||||||
|
"hash": "sha256-KHCc/73L5Bd9iZ47SRV6vpI8fVM1v9hk1TpEvTro2uo="
|
||||||
},
|
},
|
||||||
"wikipedia": {
|
"wikipedia": {
|
||||||
"name": "wikipedia_fr_all_maxi_2025-06.zim",
|
"name": "wikipedia_fr_all_maxi",
|
||||||
"hash": "sha256-zzDhITMd1nRMYTUlvn56l4VBnpFuhiNrhhYMcrrBuOQ="
|
"version": "2025-06",
|
||||||
|
"hash": "sha256-ve7Mbh96/ObNbV/KVNYZpfLN+HdWlJ7C5LItEdVkRH0="
|
||||||
},
|
},
|
||||||
"wikisource": {
|
"wikisource": {
|
||||||
"name": "wikisource_fr_all_maxi_2025-09.zim",
|
"name": "wikisource_fr_all_maxi",
|
||||||
"hash": "sha256-2gEY5nTBecrmg61VJerxO4/oV7dZJmRgzLkqrcocW/0="
|
"version": "2025-09",
|
||||||
|
"hash": "sha256-FdLYCjoT6Yk34AZKFND/NaBHNe+GzW9Ibpd6mVPWlxI="
|
||||||
},
|
},
|
||||||
"wikiversity": {
|
"wikiversity": {
|
||||||
"name": "wikiversity_fr_all_maxi_2025-09.zim",
|
"name": "wikiversity_fr_all_maxi",
|
||||||
"hash": "sha256-4vOxYiX3TYht7ARY+PeCJ0ArVZZn9TeGtwCieqn3xUw="
|
"version": "2025-09",
|
||||||
|
"hash": "sha256-55fdtw/cRezq6nkRp6wuwkukBiqsQKdwh9QWVAgFcBI="
|
||||||
},
|
},
|
||||||
"wiktionary": {
|
"wiktionary": {
|
||||||
"name": "wiktionary_fr_all_nopic_2025-11.zim",
|
"name": "wiktionary_fr_all_nopic",
|
||||||
"hash": "sha256-oQS8DzKioceCER1p1oAvaS1gRooMLJLYnCqy1aLARi4="
|
"version": "2025-11",
|
||||||
|
"hash": "sha256-P0CJptee5rDzccxyRDBzyRLuuFOcaLsJYi6DkBFUfIc="
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ht": {
|
"ht": {
|
||||||
"phet": {
|
"phet": {
|
||||||
"name": "phet_ht_all_2025-03.zim",
|
"name": "phet_ht_all",
|
||||||
"hash": "sha256-UjC0REJ5d5wIKccutZADX74IxvZuF+CD/caVzZfHg9s="
|
"version": "2025-03",
|
||||||
|
"hash": "sha256-bHrPzE8H7ptrP6r5wPlXSsXNlTiKxJ9KatABC4kwx+s="
|
||||||
},
|
},
|
||||||
"wikipedia": {
|
"wikipedia": {
|
||||||
"name": "wikipedia_ht_all_maxi_2025-09.zim",
|
"name": "wikipedia_ht_all_maxi",
|
||||||
"hash": "sha256-spT7EFXLnI0FWT9Vlvp7QEP0urntmQ2C+fQB5bVLoLE="
|
"version": "2026-04",
|
||||||
|
"hash": "sha256-qUX0pKxIyNsWX4V6kNIsP4Z9nc6TDhwdDR0MmpDOQFs="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
zimMetadata = builtins.fromJSON (builtins.readFile ./blobs.json);
|
||||||
|
oneZim =
|
||||||
|
sourceType: info:
|
||||||
|
pkgs.callPackage ./one_zim.nix {
|
||||||
|
inherit sourceType;
|
||||||
|
sourceName = info.name;
|
||||||
|
sourceHash = info.hash;
|
||||||
|
sourceVersion = info.version;
|
||||||
|
};
|
||||||
|
# Preserves structure in the blobs.json file, turning leaves into drvs
|
||||||
|
zimFileDrvs = builtins.mapAttrs (
|
||||||
|
_language: types: (builtins.mapAttrs (sourceType: info: oneZim sourceType info) types)
|
||||||
|
) zimMetadata;
|
||||||
|
# Flattens leaf drvs into the structure that flake packages expects
|
||||||
|
zimFilePkgs = builtins.listToAttrs (
|
||||||
|
lib.mapAttrsToListRecursiveCond (_path: x: !(x ? "name")) (_path: drv: {
|
||||||
|
inherit (drv) name;
|
||||||
|
value = drv;
|
||||||
|
}) zimFileDrvs
|
||||||
|
);
|
||||||
|
in
|
||||||
|
zimFilePkgs
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
sourceType,
|
||||||
|
sourceName,
|
||||||
|
sourceVersion,
|
||||||
|
sourceHash,
|
||||||
|
|
||||||
|
fetchurl,
|
||||||
|
stdenvNoCC,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
|
name = "zim-${sourceType}-${sourceName}.zim";
|
||||||
|
version = sourceVersion;
|
||||||
|
|
||||||
|
src = (
|
||||||
|
fetchurl {
|
||||||
|
url = "https://download.kiwix.org/zim/${sourceType}/${sourceName}_${sourceVersion}.zim";
|
||||||
|
hash = sourceHash;
|
||||||
|
}
|
||||||
|
# fetchtorrent {
|
||||||
|
# inherit (val) hash;
|
||||||
|
# url = "https://download.kiwix.org/zim/${type}/${val.name}.torrent";
|
||||||
|
# backend = "transmission";
|
||||||
|
# postUnpack = "mkdir -p $downloadedDirectory/tmp; mv $downloadedDirectory/*.zim $downloadedDirectory/tmp";
|
||||||
|
# }
|
||||||
|
);
|
||||||
|
phases = [ "installPhase" ];
|
||||||
|
preferLocalBuild = true;
|
||||||
|
installPhase = ''
|
||||||
|
set -x
|
||||||
|
ln -s ${finalAttrs.src} $out
|
||||||
|
'';
|
||||||
|
})
|
||||||
+2
-1
@@ -83,7 +83,7 @@ func getHash(ch chan result, file, category, language string) {
|
|||||||
// TODO: Only call this if the file doesn't already have a hash
|
// TODO: Only call this if the file doesn't already have a hash
|
||||||
// in the existing file
|
// in the existing file
|
||||||
fmt.Printf("Fetching hash for %s\n", file)
|
fmt.Printf("Fetching hash for %s\n", file)
|
||||||
cmd := exec.Command( "nix-prefetch-url", fmt.Sprintf("%s/%s/%s.torrent", BASE, category, file))
|
cmd := exec.Command( "nix-prefetch-url", fmt.Sprintf("%s/%s/%s", BASE, category, file))
|
||||||
out, err := cmd.Output()
|
out, err := cmd.Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error fetching hash for %s (category: %s, language: %s): %v\n", file, category, language, err)
|
fmt.Printf("Error fetching hash for %s (category: %s, language: %s): %v\n", file, category, language, err)
|
||||||
@@ -115,6 +115,7 @@ type result struct {
|
|||||||
|
|
||||||
type Zim struct {
|
type Zim struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
Version string `json:"version"`
|
||||||
Hash string `json:"hash"`
|
Hash string `json:"hash"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+36
-37
@@ -1,38 +1,37 @@
|
|||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 87huqg HqGj+5hXjRLJcrRMC3biBE8K9B/OAJj68gqTqg9ja1k
|
-> ssh-ed25519 87huqg LKhlbZI1BygDI8E4kkzhw0/Y1BfWnzekf/URa/Bma30
|
||||||
K25Z2YGlWnUK02EUQmdNo0QM13apME/mc5w0gydrEDc
|
uT7QzE8DPX8j3us7oNRKwu6hPUFpQosbcMRmMNgS/Gw
|
||||||
-> ssh-ed25519 8UnW5Q Pj4iDE8Q9FhzudZ341W+V2aaWuotfzOZzN18fRnPqh8
|
-> ssh-ed25519 8UnW5Q dDAJI5EnPMIhs5H21wLT84GWhkROEJRXE1QVp1aOH38
|
||||||
kujFDr1mL/0YrsyoVpWQhkEwwjXr3l3AbbD2787z8zo
|
qZJt4Kip5qVZl9QoIFEXgrhtrlQEpbkfLarCgaHugj8
|
||||||
-> ssh-ed25519 UFfTmg Ga4FQrnrejoa6uSNDh0VMgB7ntPrp4Z2Ic8n5XCosHM
|
-> ssh-ed25519 UFfTmg kbrSoge204JvRPBszhAfMewPM4oHg0HkF52BNeb9kx8
|
||||||
cquCWegeBg6Mtv3/t5RAEmh66p6oHBlQvbuJMaZTB6g
|
E4ASRdn0pjF//GiFCjmRlgXRS2wiJxIXDFSjldMtTdQ
|
||||||
-> ssh-ed25519 xNtnoA Mf9EJ6mB79mWBN383e8t/BZQVjB7mXuFKvhyJdT9GA0
|
-> ssh-ed25519 xNtnoA 7b9/Z/qUEmRnFCiCYzVGJVvxvV8onjZemSg6sllaDyA
|
||||||
QnnrGVbZIHMDBS4ZZrj8BDwx6deSP10t2kLLzu2ewXs
|
bQosZIGbaSsUqFO2JuRpIhm3FJd79JyYS43A9+zr+1w
|
||||||
-> ssh-ed25519 aY2AXA 0Lop9E46qiaGNrFTVbgg0O1yKbqwCFmG9pjssoclMUM
|
-> ssh-ed25519 aY2AXA m4gIzzAX8pkBHHzsSykIy24E6Kru/I4uNnjihKH3JHg
|
||||||
I5lOVEogB8XV9pkyqmYcFojvZlAX31ADlMyHgDluxjY
|
S18CWIY5wNcR5PVkCqbjp1FJRrGxco6fdoykQeHhyX0
|
||||||
-> ssh-ed25519 AQhf1g Ktn1BuWcwx0eJS0ZJugnRiTmvAht6ABOVzTDcw58HlM
|
-> ssh-ed25519 AQhf1g LBmvyUbKRLKtPGIEqt+NwOSrtGwlFt2zqgdmRDHu9n8
|
||||||
7Vm9rx9P+rXDvrxTQnxxpUBZbvNRgd6UafmzuG0ePwM
|
zb8OnKRsJBEkH6eJ76mlKvJmtZ8NvVwVS9/0tsZlMUk
|
||||||
-> ssh-ed25519 mOmPfg VhUpDomkduEthbPGMr4bFpLqVcXgn3OrQojPjA+s8k4
|
-> ssh-ed25519 mOmPfg TuPbRMlX9eRATxSbv6v88TtzGhOKWn5FOkIg4xR6FH0
|
||||||
1nrS2JxDSSe6PvPRK9VNBh7RTMiFChSiM3xbCQAQw/4
|
NLNzJM/9r2jZ70Y2r5Hsc36gcRTSPw40Aabn/H7OE+4
|
||||||
-> ssh-ed25519 YJiRbw XVylSfHTRne3B5zWru6x+yhAPJEp9Jj27P0Y63Wp2SE
|
-> ssh-ed25519 YJiRbw bVMyOOgBcFFRNulym46YwKAIPlOkbQhmQAo9kl4dRx8
|
||||||
APDEG5J9tBR1boxpsUBarSC8vN6q34KElRUK98fsQ+0
|
5W2fIxGXCXbzULOismGg4NxE+VQ8LDEbODlJ0OpFMiI
|
||||||
-> ssh-ed25519 0/WsKg FVXUmVyse3msAkDSkznhcUw5VYd4vwsKd9PCDBJwLiM
|
-> ssh-ed25519 Nl/5yA ydFS0bVjjDzymhQFaBJ3YqDREQDpVO6VzgS2MBtuOUo
|
||||||
hRIDpMGWWFu127Q/jvxr+ieSM7KQfNagqhUZUnTwJMM
|
tNzj/85BiYe6th2N6A9ZkMSPKduwAIe/qnf2NVJiHOg
|
||||||
-> ssh-ed25519 Nl/5yA qO4YJ4/gnfbLOdJFyGq1J4AJH5pMTPhR2IvEKMt4IlM
|
-> ssh-ed25519 GdLgCQ wmfT7bCzwnkwEtn2mRnElIM75MmdRw+33MhSegSHJWk
|
||||||
Dyhj/RQQ3LxgJVc5drDdgw0cAJi1t3zCFnO1zWKaWIw
|
YHrCYB1wF1njNjzpIy3hKZ9l1cj7m5yicLuj71TvKr8
|
||||||
-> ssh-ed25519 GdLgCQ GyVGc/nK0Zu3/Gm76KRvXHwjdnRvoM+WuY/psFaIv2Y
|
-> ssh-ed25519 tOH/HQ z5/GMQOtkpMWwWdMXqxmf12MM84xkgXL/OLliq3RHh0
|
||||||
1O56ZsNvSBzhcFRPoIOyUCMQCGQYn3w5ES2AfGP75uw
|
mVhBt+uc7z/YkoIAyXTqBgv00cJOrZ0bsBP0lD9S24c
|
||||||
-> ssh-ed25519 tOH/HQ wR3dxHjLSzkHIG/6UX45qiGFqX0cHA18/oEFatBthUc
|
-> ssh-ed25519 FpzvfQ D8N5JQ+3rGdSZIPmzlZqO5VpS90v6r99WMXtyUqCGiw
|
||||||
J/gpGWp8kOdmtFs9A65B68lsnD68gxfheiOZfp0AeI4
|
A2SSvI4H5TRY13R/iOa60bCdc0zR6lUAHJVHfAUR5mQ
|
||||||
-> ssh-ed25519 FpzvfQ 0sdlOKrumgCJedenPUNY/QSIDmhrP3J077qZxTwvdQE
|
-> ssh-ed25519 2UotMw eaM1Kkzw53Oq8lW0BFn3rqWFcTQaTz9jcDsULDg/fwU
|
||||||
DdWxilImsFB/XXgbZNYXEjSCoqmVd0vaTH7rhR73fsw
|
3QVYFrhKnvwWDpIdsyTp0amontUXePko8z8PeUub9EE
|
||||||
-> ssh-ed25519 kdPvzQ 9PxMQp7Y4Gh0V2uMa8K6SmldUhcqcBfYgVtMkzzzdAc
|
-> ssh-ed25519 kdPvzQ 08LE8a24S5cvuK9DVWD2ta0GjJMNzUidmgYT4RfhQDA
|
||||||
sS8Fqm1p72IPOKNZfJKIJTxTLoNt3MQaOI6w8qYCTRo
|
cRFH8vOr2y1/C9F2wZWV2deUxUpoL34IFRyOBHPYifI
|
||||||
-> ssh-ed25519 onmXpg Ig9ABzLLazyW4wxkUmq87XR7hmUt6l5/X0R9Zf2qBlE
|
-> ssh-ed25519 onmXpg J5MKGIovNwv4FyTN4ofExlHV8qYzU/J9O3MI4tZYcTo
|
||||||
n3DO7o4NdWRefqEkexyIJLeOQ8w1q9QN+wIslQNXIF4
|
iagT0Ypo8gTwvGpV66XNuNPedefx2S72q9hyeB2Rz/w
|
||||||
-> ssh-ed25519 CnhD0g wtGoi7CzfIAs8ezcIF7ecjTXshD96xG8ZLlhYYaM6HQ
|
-> ssh-ed25519 CnhD0g se/N4hrYxOiukByYzsIhxToceXNuBO7J7VmM4muJ3Dk
|
||||||
4hwG3V1Cf/iYDsNXT0RmzWJnW5kxnBWNvX3ECrP1/oE
|
cW+WW8iWjj3eXDqDO8aEON1ZH/+6AXQGAEXkLRbL3AI
|
||||||
-> ssh-ed25519 4ep2UA AKSh5d04251XgyZKKscIJjU7RSpKclMqO5qPTEMQygo
|
-> ssh-ed25519 4ep2UA uyjvubY39oSGeCNsX3/VIdM5CzNBlrnRpkF+YN5MBCo
|
||||||
wSyIxArdlbLafOKmUyrlUqOZQbF1PXZND/PAFYCjClU
|
xiNuksI7olV5Db392Vjz/7uDNDIssGmI9bez6vSOXTk
|
||||||
--- DnRePhJDkX5QDmrkH5jiZkuljvOFaVm1BrqYMTDP3tg
|
--- VsGbd8K7JzHe/eoYUeTMwcg/GrY9SXVzNxL4HZ23tKQ
|
||||||
\bºîç:ý]3\ô<™rÔhމ׋|ÈFz.R{FEÝá<RòôœÊ'=ðY”v xˆ˜o½ßÌF
|
£_÷t/¢ªØËVÎÞ}7J'%?™Á‰Å0“¤¼^õ¿-„ÏÛ„äu4¥ù‹íäóü0!®ÝîËðMÜÅ·
|
||||||
q␍¤lî0¥ä»
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+36
-36
@@ -1,37 +1,37 @@
|
|||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 87huqg gv0jzWC7KtVxSEeepOckxiDwxN6VdPzYaXjZryNlUjE
|
-> ssh-ed25519 87huqg CsPCBXcVp7krsPi1k0WbjKFZxUzuZNJkkpOImMDWNns
|
||||||
04mMQsL99xW+VbpELVdnWehgq/3u50l5f98ZFTscSwU
|
h6evECCNa5VGBe1dtbVwOBFBPkzwUKPFyVdQsTNMUXo
|
||||||
-> ssh-ed25519 8UnW5Q GzZDPqTzZNU5Dun3u7rSane+MXkDcbIM3TlEEJr7cUI
|
-> ssh-ed25519 8UnW5Q 1pioLo4kA+RJ6r35H9FNCQ5LZqmYUmxZTVyTdD0o92Q
|
||||||
Dh/3ObCIG56797AvmSh5yrUk+MWqjxJ42/b4i2smnos
|
4r/sOb3IcQElEJnKAgmYeHtubm1Hk/cdiY6gUI1GkHg
|
||||||
-> ssh-ed25519 UFfTmg 7EWxx0WGxxAP2sErB6Rfteg2o1su5n1ELN7oCUsodEQ
|
-> ssh-ed25519 UFfTmg ruMzDG9lKKSHo2I1L/2wigVZs1Jhi6aTNmrr4zAyEiI
|
||||||
S5x8TAYvjxjtCJgmY4ttCxvoZDdHMxY2RbsAJ7DxfJY
|
3gsAmzM6fE8RL/fLL63pPIH75P9TW954nw11/JpU77M
|
||||||
-> ssh-ed25519 xNtnoA 9mPAgc7YI355QYNlTlJWmMhaScCNbCH9EofQcJJDeWk
|
-> ssh-ed25519 xNtnoA eTZoJFu1SqUoUGPcdVDw/2wW82xvRiSCnAmQSZPQT2w
|
||||||
QSlYi9COKd5ZjkC7Qxp8IcmmVJifJ1qy70VnExASqBM
|
Y9Cf+/h80vn2w6G9n+V4uNV7bj3tpOT1KWRKajM7d5k
|
||||||
-> ssh-ed25519 aY2AXA JUIOcOAjshTPueqEo/GDXWzEubBt1JuMM4NLv89zfTA
|
-> ssh-ed25519 aY2AXA c4MkdSio2FFkulOBKDSAG3Iq71ghRdw8/SQF0B98chY
|
||||||
njcVfVgCmT374IdMqke8AWGyGcpCgpu5rGs2zrn/A2Y
|
lvT+m2ey5+HqipuC7MrPQIKu8KrSsLHM0XRK8c0iS8w
|
||||||
-> ssh-ed25519 AQhf1g faN3428QM/K0P7o6nlPxT3lHlx88PBIWxw1mSN07zy8
|
-> ssh-ed25519 AQhf1g vLig+8a5jPo3cQhdmQw/C/P1hgzKHiVkVwUTkMBNmTk
|
||||||
6G8FARubsbz7TtQWeQ5biww7XoXZrs0xDFdxKwyov/U
|
N5ROr2EtHpTwti7NByDiR8R3pOQ/STwlIuNeY1pDA20
|
||||||
-> ssh-ed25519 mOmPfg b7LviVrLo50sU195qKNxtD6lEqq/QJBnHFkQ3WdKT2g
|
-> ssh-ed25519 mOmPfg WcbxDQfraXfxkN1+IGaArpIHOmlUlhGjBijQt5ZYSxE
|
||||||
USSSrAIA3v3Luzt2Kft6fpMx4fXHAPBtWQVAAliiV2o
|
6KHLewxXWwo8fVIuaTuY/T/igsI6CKqEl2tyM/gkn6g
|
||||||
-> ssh-ed25519 YJiRbw QjrEHQL9zx6pIR/HzrKyM94JF7efjkMo+ArkVOjkQlU
|
-> ssh-ed25519 YJiRbw IblKWpY9DeDSWDfvlEmNeWSV1lGdz9aHcv2oQVmKQFI
|
||||||
MfUl5yYO/LtxrENlcw2KgzyJiLpd/Xk0CbEJicxgG0E
|
qPcdGcA6Z7YaLL5umR8ZOKzOyNIUJVHRBpV5HyAJeqw
|
||||||
-> ssh-ed25519 0/WsKg ER1PXYwpONwb3U77qUoH2ZDFmfvRQ7SV8lkgHqRJQig
|
-> ssh-ed25519 Nl/5yA wr0Q96yztc+Rf88q6ooiDHlKqpVdWPkRWApfJsc7uQc
|
||||||
MCRbKzFD72DdZwoVrV5DesMbNG6ikMlL5C6mTSVGtj8
|
hQZTwZ36mkajMcSbxDsL+TtAezJIY+H+J7VaU1QOqEo
|
||||||
-> ssh-ed25519 Nl/5yA XKaH3S150ZwHo4uyLwaBrn2od5v6MRvc0bOR83Sz5Ag
|
-> ssh-ed25519 GdLgCQ LiwfxrAh9dLjMeo6FglQzvUQ3hfWRAZr2naADkB5/WM
|
||||||
RqQn4/jo122fZA1oujOkwe4gbnGfn5BK8CJXi42NsDM
|
Bn4fnoqTvKPd73qi28NAgAN8AZl4EWcr9e/uhuUwVgI
|
||||||
-> ssh-ed25519 GdLgCQ XVrC/NooMQFg4bSPQ09avkJ2mwROHp8mYbBA7dWjSCs
|
-> ssh-ed25519 tOH/HQ x35ypXVDI9C1wpquWxDUFYXYHxEsD2NJ0VIDosRONyE
|
||||||
Q72VZnjs6Y574eRwheabzTW2GH8A2oEOEyk1Mkh+NzU
|
Aa5eZt98GQQZmKlBDzRC9KRyMCy2z1htSAsjKNGCuFw
|
||||||
-> ssh-ed25519 tOH/HQ b55WhSZiczkXRQQTxAFBeN4HKyi2orpR+ikGiSyaonU
|
-> ssh-ed25519 FpzvfQ jlAbIzsWi8eX+PTKn100NaiSoezN1kXzZ3gWUOKfQVg
|
||||||
woTljkdrDmI6iCwUnJ7i1kLdfH3QaZgkxxQ+Upik6/E
|
NQARp2qsxIdSG3OLJyP33A97r6cBRaMSaneT8NBnhDI
|
||||||
-> ssh-ed25519 FpzvfQ +kFO6lyChWKyGs1vN8XmRnp5wNUrOvKGAMtQB5gYJyQ
|
-> ssh-ed25519 2UotMw 53sXK937St2F3MzVIhmsjH6WeCSRdkpv4oFa2ZBaelI
|
||||||
xQbRbUfvk9Eoi/JLfzugHeUVbPGfFItkul33A7MVx3Y
|
lNsjlQzS8Szj0FcAvrQno9rDO17iKDjMN7VwMLvIleE
|
||||||
-> ssh-ed25519 kdPvzQ dv1xr07TrUQRGwl6jbxMQlocvvYlTmyzyZpbRAU5rg0
|
-> ssh-ed25519 kdPvzQ YdeMlv40jR9bFnXVjPJDpvCnqn091dCKAB60m4Obwgo
|
||||||
IYO9Af8yAxY5499AArmWCy1aV/ZB3w3deBS4OAHq+LY
|
vgPAO0evfCXQUX7Tu/G9ERUhLO3KiWXqpxIqATDl5vw
|
||||||
-> ssh-ed25519 onmXpg 8cNof6Uwd2MpA3ydHLQHAQvFvl7Kk5moWMRD5qVFxGs
|
-> ssh-ed25519 onmXpg mrDB6F061SjeYOZuUJVvZP8SzOVrFdpAAEfgPOzp608
|
||||||
hTMO0oPxHajokrzMIWB5ksbrVFcpQGo6Jje9FWoiPxE
|
AzAEEHK6Q71YxPfiljl7ZCy0b3YBdSBMKORJd7Opkck
|
||||||
-> ssh-ed25519 CnhD0g kqhzl+91aQ7CDRrXzrLPo+P5GuEOSF0MGQlfZESPJDA
|
-> ssh-ed25519 CnhD0g Ov3v97PyY79WoXUDAdvXEZvTE7ruIgDeXVz3jD5O1HY
|
||||||
64xA1PirxldhnScyJ0njwaOMZ/EgPRm1hQzojJIa+84
|
+0rSmiqdxP6PgplxLkim4AJtKPcjn7OlkXpcu0BsI4s
|
||||||
-> ssh-ed25519 4ep2UA Zss5olMIbVxEJT8XdrFSrBOppplv8+x5ej3CktSUNDs
|
-> ssh-ed25519 4ep2UA bDGTw6Msbh9sOp66l1VKGrT53AlrPv+QG2T6ZJv1pDk
|
||||||
ldPkN2iSBrU8M7WCZx+PlgUhEIZEoUmRWRgRHvG7+Dk
|
WvHFJ3LIlpiuVhHUxY6egKifWNepzIB7Ls2R4Kx1Kng
|
||||||
--- emzp8uRGi0GDRt9HS6E6NvmwB7LyI8mWED2Mof9KFrA
|
--- Ec6/6bQEn4GQOedrSzE+Yw1xRjQA34sj29Tr3zLFgZo
|
||||||
WK çƒ¾ÄÆý;m7…%‘cl4‹8Wáå‡÷'›D} ýœ.x÷l»fGºj�«yàÈI2ˆ~h•YKè‚Ͼ†Ù‡ÅƒÉº…"VÕ"(HQ>åEAG€æx1
|
NïP¢uGc!Wcݼ¯£ \¼ìæ—K-©;]Ðu¹!,ó$#nŒ¶dZ‹«¦yž“-kX’BÕÙƒ°·ªc'‡Lò¯Fl�ݪš6L‚n˸n’Ý£f$ƒðÀ´ê
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,37 +1,37 @@
|
|||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 87huqg iDDZb1/mBldfguf43wN0TSuqOXsEScH+aDZDKrVl9m0
|
-> ssh-ed25519 87huqg ua9lzblqM2d0AmRbEj9c6p8LVBxNkYYr/vH5+HFoDEI
|
||||||
FSHO4h9Csu9lJqlNpsY3bcDt58eSUxi9ENr365lBvEs
|
Y08ot6KWTZdHXjYUsc2hcKnQlJBtcmE1oD5+OX86J80
|
||||||
-> ssh-ed25519 8UnW5Q TzreBNEiSrZEVSzdZCzm4J7BP0IJ0U3U+FdINlUvMRw
|
-> ssh-ed25519 8UnW5Q QW+RWL8RfOoPfZEb+m2XHNgvlUoLZqPSDjx6riMCXDk
|
||||||
X1SKp6T7YVTuqRD9ozJWl9wGLQS2XpL2SsP9JLHdoHo
|
DyJSnhbUWRCMUWlHYnz/jbqBxazGXEaxe6/T6CNtvsc
|
||||||
-> ssh-ed25519 UFfTmg F2LDdqKDkBIHrvcT4lZs7fnpRVH83/Rxnt65ATqVETk
|
-> ssh-ed25519 UFfTmg XcNVYggkFQmj591cbFEpz0ishJgp90W1Eu1OWphmj1g
|
||||||
did174XGfcJQNubK1B7W9F5+ZL4XDQfa7zb+3WXsd1g
|
3/GL+Q2euyXgcapUXDt8Mw5Q2+bbk2C2voQgGuTtiUU
|
||||||
-> ssh-ed25519 xNtnoA H/lAt2D/IK8qCWzTDh8hrm54OrO42ETYJIcOqYgF7Uo
|
-> ssh-ed25519 xNtnoA CYfNyaWgYlM4oe/G2sI99gvldiKY9ScDsi7XPLnDTjU
|
||||||
+yOkmOn65o1X5Mv5PiQhAhFDJ/R//6f96i7PslUsNYw
|
h07PCdnOUF4o6YggrJ27Cdc/Gb9cu5CE0cZegyqLiKc
|
||||||
-> ssh-ed25519 aY2AXA N98Z0KfofoC/OOYyEhUnzQNMJIuKQN/n3t34/j7rHDQ
|
-> ssh-ed25519 aY2AXA NxBftj7RM1QeZ5Np3Mt/xsxZ12XMtgHh/foWN2uyyT8
|
||||||
sL2tca3lYlgrz8BE6cSbWyOL8/p3ocgpR75BmP14tpY
|
nXUQI/tjhtPSYH6GFDxw5oIQnrLrQHYfNpriXXqH5fg
|
||||||
-> ssh-ed25519 AQhf1g w0czfp/ljjiS6a5SU/stgWSw1yIIxgxaEQAQPFUzrjE
|
-> ssh-ed25519 AQhf1g 8BTUwRGn9xPBIO+Ez2viFtp1B0LzWR69Aer0B/OfhS0
|
||||||
mdVPm1r9VTXvAaGS7Bajg/yiUE4Hv8UMF9dSsTTwEiA
|
uKAkoOTpuyLFnqKPXgTPYBriaNCQZz/hwSLkUKypBwo
|
||||||
-> ssh-ed25519 mOmPfg oh9DqeeAL5sFTB6baYe5QGcyZOi+/90kIltmTA/bpmE
|
-> ssh-ed25519 mOmPfg FNLltRffV5bNxipVpxAOkfviS/RKJfrZ1TBWIVSspHM
|
||||||
jA6K/lAEBjhSdgpoZ+qLlCtS0RpbyOMrETXtuvOxv4s
|
ML0HeuZwms//wyIBfXspWQPLh/DSbl5YkcyHHJ4vZ/8
|
||||||
-> ssh-ed25519 YJiRbw 1dT8jG+xx1GNSISZdT7WAmaP2ltxkMKmPAGCde+ucRM
|
-> ssh-ed25519 YJiRbw rgJDr6qSeN679l+aIfDuhonxcoGw1h5C+nVGS0ce3nE
|
||||||
gYae0N5DuZRZ4S7KufXlO5K6kC71YTGbEVx4p3oYBT8
|
c5xynEMZNtHuPb3wc9d8QADay6Pgf5dhSw9jLw5jkjw
|
||||||
-> ssh-ed25519 0/WsKg 5z5D+ckewk4cXzygfGrcPE4e01rDKo2yFU8MFzxjz34
|
-> ssh-ed25519 Nl/5yA /5IxJynZ+oP2iBZikH1dePktiwHrjYMSSeEn0wR4ywc
|
||||||
Su0ZzamKBmyALZ06iU/4fthHnaimTX+MZ7g+SMNCmYg
|
My8esaXF11AgCEOeyNX+JRgLGuMlSPYGHqJIbxG3XWk
|
||||||
-> ssh-ed25519 Nl/5yA SpZyA5mzLrtF0TyAUnAf4pplmAda/ZkNP/2mW1VbhEQ
|
-> ssh-ed25519 GdLgCQ zKBABsXQE98vU0BgEj5onnfHs/Ta9qWwMgKKPFI//n4
|
||||||
HcHUXgrdd8MobLl2KonByGUg3xIF3LtJ8dfAjTMeubc
|
h0cMTFqCZ3pON8JwZBfJz1E2HPWVEqH9fRc2ry59HaM
|
||||||
-> ssh-ed25519 GdLgCQ 9ty+jQ1QEmakbYfYRglH3aYRiWDlWVoyoAvr4mhaIhI
|
-> ssh-ed25519 tOH/HQ oPtW9p3QZzva2unDORMZURJAl7VVbuGF91HCe+wbTzo
|
||||||
AWurwo3gS/sqFYA2x43uf6bVQMPgIScTl3bO6rBTH2Q
|
9bTm0B3q1tFNVepL20MIU5hWUFK6uUn3781NDqhWkv8
|
||||||
-> ssh-ed25519 tOH/HQ xf9oXzcY8WhHKo0+igVMXftblQEgtsYRiQr2HIBvWDY
|
-> ssh-ed25519 FpzvfQ R4ZCZsgf2tlN4h07M6mzgR/lhaZnP7uyUxajO+oC+UE
|
||||||
ErehHTChNeBt8QL6LGduelH38xmH6g+EJ3HeLcGKfqI
|
iJnJWKYrushgkegJPxw7M2aimtQ/dqOB31BHnMaFTm8
|
||||||
-> ssh-ed25519 FpzvfQ WwI5B4bhYqUd+kyv/qfsdZF++vPwv0z/VHs1rLgA+EQ
|
-> ssh-ed25519 2UotMw eIow72TygjpYbhJLCqt2vm2X7bu3NjY6MFTOWjl+pgI
|
||||||
TbZcSqK++NDFivpCvDbVJsrgh99BlkTtrEaX8N7AyO0
|
2EgimzYzga4FW5c79N3ppEMVvREAmh5wx3lI8gh0/BU
|
||||||
-> ssh-ed25519 kdPvzQ SzDbjtauFcizhjnZfG4QWtU/OuAP6A3zAC5IU1bVgyI
|
-> ssh-ed25519 kdPvzQ 5XbOccIDpMFKcCaBWFRWWCaUh3p1LBJ0ayolQroZeA4
|
||||||
f6VAcC6ZJ/a/Iqy+nAQcR6QSIOxQ0w9rEV3Dl1AcgSc
|
Jb+n0HeR3gDYizA0kta1TBvEiZryKlDwbuoa2u8PyKM
|
||||||
-> ssh-ed25519 onmXpg 6N3pFYE/eAfEHSos6DJCqWj98lzh8eKWTX8cKqtr9BQ
|
-> ssh-ed25519 onmXpg PZR1T8ylkM55nGIBYiCroNWNTwBcEA5PZU1YWH3tsWA
|
||||||
f8q/cHQ3+n49H5VP9/KERqJelasa34FZvBe6Suj0SR4
|
LsOHqiryBJkA7b463zyg3IToKy1Teo/miyPfENewGnQ
|
||||||
-> ssh-ed25519 CnhD0g gGrIh8bxCV52xGc83dGIUBvfSwVLW4Vg0iKlc9Gz+nI
|
-> ssh-ed25519 CnhD0g j8T3e67+tDXJFRsX/gC9qqQn6YGFxgAMwWsQ9vlDsGg
|
||||||
TjgGfOIDKMtha50mPumPHqgaITYRnuEXVfrBGmxzlVI
|
KAOrCxfTTo4uB0EjrV6VwAx71hbrNiJuP6G8F9lOr2Q
|
||||||
-> ssh-ed25519 4ep2UA TdsseBn5UGPnXtrChro0wf4IHMrudNTNYKzbRiG3AxE
|
-> ssh-ed25519 4ep2UA wC0BaXPYM2iRPRBhQlOo2QRM0nX084cDp6brzKWjkzo
|
||||||
USm6bS3A3m8vUO3JY54dcTtODZAdZsJSbAuRD1y5Rt0
|
wNBztDXiPi6K9q+HJRXsr56/nf6k/aQJQIEpVCjQjQE
|
||||||
--- htoy3HVrfZj0Pfl6qkK8DCj+kARn6O8M/BhkXpLcu1E
|
--- IsVY/KsFoTGubmdpOdoTI64+O40RJplehy026aS1RJc
|
||||||
�º~\t¦Ü×a|Ä“ôá �ׯQʯw(˜ÔÃ.•SeJÜkÔ‹‹¹Ùâ·ùazµS&Í5Î7*›ÔKèfÌo«KT©5ų0·Ý�Y˜\Ø£GE2‰Ký
|
]̃R…ÊYávн²1ù\½LœÙkœ”“¡Q:ÙŸý6 š¶¥b»Ø*ÙIÝZ3ýAóQÆ%HÑ4Êða0,ìvÇåÙ÷ÄÄþ7�ð-
|
||||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user