Files
nixos/hosts/unstable/linode/default.nix
T
klaatu 81936ac524
buildbot/nix-eval Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-linode Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-isaiah Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-jeremiah Build done.
buildbot/nix-build gitea:greg/nixos#checks.x86_64-linux.nixos-zeke Build done.
buildbot/nix-build Build done.
feat: Gitea Actions shell runners + flake-lock workflow
- Add modules/nixos/gitea-runner.nix: NixOS module for act_runner in
  shell mode, with options for enable, instanceURL, name, labels, and
  tokenFile (agenix secret path).
- Deploy gitea-runner to jeremiah, isaiah, zeke, and linode with
  appropriate labels. Agenix secret placeholders left with TODOs.
- Add .gitea/workflows/update-flake-lock.yaml: weekly workflow (Sunday
  midnight) that runs nix flake update and opens a PR if flake.lock
  changed, using GITEA_TOKEN secret for authentication.

Closes part of #15 (NixOS shell runners + flake-lock workflow).
2026-04-05 04:58:27 -05:00

90 lines
1.9 KiB
Nix

{
pkgs,
lib,
config,
...
}:
{
imports = [
./git.nix
./hardware-configuration.nix
./podman.nix
./matrix.nix
./nextcloud.nix
./nginx.nix
./postgres.nix
];
environment.systemPackages = with pkgs; [
bind
graphviz
nix-du
pgloader
];
age.secrets = {
# TODO: Greg add agenix secret at secrets/gitea-runner-linode.age
# gitea-runner-linode.file = ../../../secrets/gitea-runner-linode.age;
};
greg = {
home = false;
linode.enable = true;
nebula = {
enable = true;
isLighthouse = true;
};
proxies."immich.thehellings.com" = {
genAliases = false;
target = "http://localhost:${builtins.toString config.services.immich-public-proxy.port}";
ssl = true;
};
tailscale.enable = true;
gitea-runner = {
enable = true;
labels = [ "self-hosted" "host:linode" ];
# TODO: Greg add agenix secret at secrets/gitea-runner-linode.age
# tokenFile = config.age.secrets.gitea-runner-linode.path;
};
};
networking = {
networkmanager.enable = lib.mkForce false;
hostName = "linode";
domain = "thehellings.com";
nameservers = [ "100.88.91.27" ];
};
programs.ssh.extraConfig = lib.strings.concatStringsSep "\n" [
"Host chronicles.shire-zebra.ts.net"
" User backup"
" IdentityFile /etc/ssh/backup_ed25519"
" StrictHostKeyChecking no"
" UserKnownHostsFile /dev/null"
];
services = {
immich-public-proxy = {
enable = true;
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" ];
}
];
}
];
}