Compare commits
4 Commits
kexec_luks
...
0c58e62ed4
| Author | SHA1 | Date | |
|---|---|---|---|
| 0c58e62ed4 | |||
| 96de109d62 | |||
| 0efcf8f3fc | |||
| 2009180827 |
38
.gitea/workflows/check-flake.yaml
Normal file
38
.gitea/workflows/check-flake.yaml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
name: Check Flake
|
||||||
|
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
env:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
PATH: /run/current-system/sw/bin/:/nix/var/nix/profiles/per-user/gitea-runner/profile/bin
|
||||||
|
|
||||||
|
# defaults:
|
||||||
|
# run:
|
||||||
|
# shell: nix shell nixpkgs#nodejs-18_x
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-flake:
|
||||||
|
runs-on: nixos
|
||||||
|
steps:
|
||||||
|
# - run: node --version
|
||||||
|
# - name: Install basic dependencies
|
||||||
|
# run: apt-get update && apt-get install -y --no-install-recommends sudo curl ca-certificates xz-utils
|
||||||
|
|
||||||
|
# - name: Install Nix
|
||||||
|
# uses: https://github.com/cachix/install-nix-action@v20
|
||||||
|
# with:
|
||||||
|
# github_access_token: ${{ secrets.__GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: nix profile install nixpkgs#nodejs-18_x
|
||||||
|
|
||||||
|
- name: Checkout the repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
# - name: Get ENV var names
|
||||||
|
# run: printenv | cut -d'=' -f1
|
||||||
|
|
||||||
|
- name: Check Flake
|
||||||
|
run: nix flake check --show-trace
|
||||||
17
common/binary-cache.nix
Normal file
17
common/binary-cache.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
substituters = [
|
||||||
|
"http://s0.koi-bebop.ts.net:5000"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
"https://cache.nixos.org/"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"s0.koi-bebop.ts.net:OjbzD86YjyJZpCp9RWaQKANaflcpKhtzBMNP8I2aPUU="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./backups.nix
|
./backups.nix
|
||||||
|
./binary-cache.nix
|
||||||
./flakes.nix
|
./flakes.nix
|
||||||
./auto-update.nix
|
./auto-update.nix
|
||||||
./shell.nix
|
./shell.nix
|
||||||
|
|||||||
@@ -11,12 +11,6 @@ in
|
|||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = lib.mdDoc "gitea runner data directory.";
|
description = lib.mdDoc "gitea runner data directory.";
|
||||||
};
|
};
|
||||||
instanceUrl = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
};
|
|
||||||
registrationTokenFile = lib.mkOption {
|
|
||||||
type = lib.types.path;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
@@ -35,13 +29,6 @@ in
|
|||||||
};
|
};
|
||||||
users.groups.gitea-runner = { };
|
users.groups.gitea-runner = { };
|
||||||
|
|
||||||
# registration token
|
|
||||||
services.gitea-runner.registrationTokenFile = "/run/agenix/gitea-runner-registration-token";
|
|
||||||
age.secrets.gitea-runner-registration-token = {
|
|
||||||
file = ../../secrets/gitea-runner-registration-token.age;
|
|
||||||
owner = "gitea-runner";
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.gitea-runner = {
|
systemd.services.gitea-runner = {
|
||||||
description = "Gitea Runner";
|
description = "Gitea Runner";
|
||||||
|
|
||||||
@@ -57,40 +44,7 @@ in
|
|||||||
|
|
||||||
path = with pkgs; [ gitea-actions-runner ];
|
path = with pkgs; [ gitea-actions-runner ];
|
||||||
|
|
||||||
# based on https://gitea.com/gitea/act_runner/src/branch/main/run.sh
|
|
||||||
script = ''
|
script = ''
|
||||||
. ${cfg.registrationTokenFile}
|
|
||||||
|
|
||||||
if [[ ! -s .runner ]]; then
|
|
||||||
try=$((try + 1))
|
|
||||||
success=0
|
|
||||||
|
|
||||||
LOGFILE="$(mktemp)"
|
|
||||||
|
|
||||||
# The point of this loop is to make it simple, when running both act_runner and gitea in docker,
|
|
||||||
# for the act_runner to wait a moment for gitea to become available before erroring out. Within
|
|
||||||
# the context of a single docker-compose, something similar could be done via healthchecks, but
|
|
||||||
# this is more flexible.
|
|
||||||
while [[ $success -eq 0 ]] && [[ $try -lt ''${10:-10} ]]; do
|
|
||||||
act_runner register \
|
|
||||||
--instance "${cfg.instanceUrl}" \
|
|
||||||
--token "$GITEA_RUNNER_REGISTRATION_TOKEN" \
|
|
||||||
--name "${config.networking.hostName}" \
|
|
||||||
--no-interactive > $LOGFILE 2>&1
|
|
||||||
|
|
||||||
cat $LOGFILE
|
|
||||||
|
|
||||||
cat $LOGFILE | grep 'Runner registered successfully' > /dev/null
|
|
||||||
if [[ $? -eq 0 ]]; then
|
|
||||||
echo "SUCCESS"
|
|
||||||
success=1
|
|
||||||
else
|
|
||||||
echo "Waiting to retry ..."
|
|
||||||
sleep 5
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec act_runner daemon
|
exec act_runner daemon
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -37,6 +37,10 @@ in
|
|||||||
# catchall for all domains
|
# catchall for all domains
|
||||||
aliases = map (domain: "@${domain}") domains;
|
aliases = map (domain: "@${domain}") domains;
|
||||||
};
|
};
|
||||||
|
"cris@runyan.org" = {
|
||||||
|
hashedPasswordFile = "/run/agenix/cris-hashed-email-pw";
|
||||||
|
aliases = [ "chris@runyan.org" ];
|
||||||
|
};
|
||||||
"robot@runyan.org" = {
|
"robot@runyan.org" = {
|
||||||
aliases = [
|
aliases = [
|
||||||
"no-reply@neet.dev"
|
"no-reply@neet.dev"
|
||||||
@@ -55,6 +59,7 @@ in
|
|||||||
certificateScheme = 3; # use let's encrypt for certs
|
certificateScheme = 3; # use let's encrypt for certs
|
||||||
};
|
};
|
||||||
age.secrets.hashed-email-pw.file = ../../secrets/hashed-email-pw.age;
|
age.secrets.hashed-email-pw.file = ../../secrets/hashed-email-pw.age;
|
||||||
|
age.secrets.cris-hashed-email-pw.file = ../../secrets/cris-hashed-email-pw.age;
|
||||||
age.secrets.hashed-robots-email-pw.file = ../../secrets/hashed-robots-email-pw.age;
|
age.secrets.hashed-robots-email-pw.file = ../../secrets/hashed-robots-email-pw.age;
|
||||||
|
|
||||||
# sendmail to use xxx@domain instead of xxx@mail.domain
|
# sendmail to use xxx@domain instead of xxx@mail.domain
|
||||||
|
|||||||
12
flake.lock
generated
12
flake.lock
generated
@@ -171,11 +171,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681591833,
|
"lastModified": 1682417654,
|
||||||
"narHash": "sha256-lW+xOELafAs29yw56FG4MzNOFkh8VHC/X/tRs1wsGn8=",
|
"narHash": "sha256-XtUhq1GTRzV7QebHkxjd7Z58E6lVEk6Iv1/pF/GnBB4=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "68ec961c51f48768f72d2bbdb396ce65a316677e",
|
"rev": "e3e320b19c192f40a5b98e8776e3870df62dee8a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -186,11 +186,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1682133240,
|
"lastModified": 1682818264,
|
||||||
"narHash": "sha256-s6yRsI/7V+k/+rckp0+/2cs/UXnea3SEfMpy95QiGcc=",
|
"narHash": "sha256-EPr900C3WaYulOdWRF3BMQrjF2Ao5Jf8xUOnFvZDTXE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8dafae7c03d6aa8c2ae0a0612fbcb47e994e3fb8",
|
"rev": "297187b30a19f147ef260abb5abd93b0706af238",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
services.gitea-runner = {
|
networking.hostName = "phil";
|
||||||
enable = true;
|
services.gitea-runner.enable = true;
|
||||||
instanceUrl = "https://git.neet.dev";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,22 @@
|
|||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
system.autoUpgrade.enable = true;
|
networking.hostName = "s0";
|
||||||
|
|
||||||
|
# system.autoUpgrade.enable = true;
|
||||||
|
|
||||||
|
# gitea runner and allow it to build ARM derivations
|
||||||
|
services.gitea-runner.enable = true;
|
||||||
|
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||||
|
nix.gc.automatic = lib.mkForce false; # allow the nix store to serve as a build cache
|
||||||
|
|
||||||
|
# binary cache
|
||||||
|
services.nix-serve = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
secretKeyFile = "/run/agenix/binary-cache-private-key";
|
||||||
|
};
|
||||||
|
age.secrets.binary-cache-private-key.file = ../../../secrets/binary-cache-private-key.age;
|
||||||
|
|
||||||
services.iperf3.enable = true;
|
services.iperf3.enable = true;
|
||||||
services.iperf3.openFirewall = true;
|
services.iperf3.openFirewall = true;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
"storage"
|
"storage"
|
||||||
"server"
|
"server"
|
||||||
"pia"
|
"pia"
|
||||||
|
"binary-cache"
|
||||||
];
|
];
|
||||||
|
|
||||||
hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAwiXcUFtAvZCayhu4+AIcF+Ktrdgv9ee/mXSIhJbp4q";
|
hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAwiXcUFtAvZCayhu4+AIcF+Ktrdgv9ee/mXSIhJbp4q";
|
||||||
|
|||||||
10
secrets/binary-cache-private-key.age
Normal file
10
secrets/binary-cache-private-key.age
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 hPp1nw 4fyRGsaEo25EOj/VwPsF0tayghF0URctont4/re6OmY
|
||||||
|
rs09DCSb2bd/v45a7ABxfLo+Sz3OPLkRzfnP5Tmgi0g
|
||||||
|
-> ssh-ed25519 dMQYog seRjdySBF1GISaSUWqZNvoW4INDUCxvBKJOgvGeyX1Q
|
||||||
|
fe6JE5f9A48ujVtuc0QZ7e7pWW+Tu0yyQEyexTvQWAQ
|
||||||
|
-> Uqf![<-grease O}' _h*Y~ .@=$H,~W
|
||||||
|
jDlO5MEGPDjJ44cAWuJaTeADbG+wz5PTqq9Pw75QV3Exrsb8/PNGOrUZKuSTCCl3
|
||||||
|
g/z3ZHelBBqHp16ZTc+LSxDYgvnEfWMPZKo4mxgu
|
||||||
|
--- GTBCzHJYUKbpcgq7+0HzBpqvo0F7TNSPjFKqdRDUYDk
|
||||||
|
ÈÚú¡T+ñ—êtµ(פÉF ÆS<C386>/R±+¢¼Š¯‘âLÃÝcÁ‰·‹1
|
||||||
9
secrets/cris-hashed-email-pw.age
Normal file
9
secrets/cris-hashed-email-pw.age
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 6AT2/g q8AlvC9Dt+b8320A4BP92FghOoPyKttivfrsxqG6DGM
|
||||||
|
GWz2QJY3QFc748DjHrybNxyAS/BmDgzIU8yoRFGbLjA
|
||||||
|
-> ssh-ed25519 dMQYog i/6mNjO8XZGAxnN1SxJGr5uD+hzCIrh28+N7cvvXZGA
|
||||||
|
hC+J+F9hVs8HZjLhCQ6RnGAHRE45G+p1oBPnwB+nBtE
|
||||||
|
-> ]d^>n#.%-grease Qe6&35Kb ,",Wb`% 0SRX@d
|
||||||
|
yXZqn1+E675gpQyFGk/c15Sc1/iwjI/6VrOE1RTcp0gJcsbtVv4kgYCkY+mK
|
||||||
|
--- ykoio7g3wxV3VDvo2d3p/Y39NCh+cWPh7uL+Go30BLY
|
||||||
|
i“˜Q+€hnïI¼_MßGrrf¯EE~µ(fFyâÿé&ȃ>sÀX<C380>›ú¤9~<7E>ä*Ç~ŽBãÕ4R¯ü=;’Â{Ý´+^<5E>P…¨ûrFza·C䢞î4V’
|
||||||
Binary file not shown.
@@ -14,12 +14,14 @@ with roles;
|
|||||||
{
|
{
|
||||||
# email
|
# email
|
||||||
"hashed-email-pw.age".publicKeys = email-server;
|
"hashed-email-pw.age".publicKeys = email-server;
|
||||||
|
"cris-hashed-email-pw.age".publicKeys = email-server;
|
||||||
"sasl_relay_passwd.age".publicKeys = email-server;
|
"sasl_relay_passwd.age".publicKeys = email-server;
|
||||||
"hashed-robots-email-pw.age".publicKeys = email-server;
|
"hashed-robots-email-pw.age".publicKeys = email-server;
|
||||||
"robots-email-pw.age".publicKeys = gitea;
|
"robots-email-pw.age".publicKeys = gitea;
|
||||||
|
|
||||||
# gitea
|
# nix binary cache
|
||||||
"gitea-runner-registration-token.age".publicKeys = gitea-runner;
|
# public key: s0.koi-bebop.ts.net:OjbzD86YjyJZpCp9RWaQKANaflcpKhtzBMNP8I2aPUU=
|
||||||
|
"binary-cache-private-key.age".publicKeys = binary-cache;
|
||||||
|
|
||||||
# vpn
|
# vpn
|
||||||
"iodine.age".publicKeys = iodine;
|
"iodine.age".publicKeys = iodine;
|
||||||
|
|||||||
Reference in New Issue
Block a user