{ config, pkgs, ... }: { imports = [ # Include the results of the hardware scan. ./hardware.nix ]; nixpkgs.config.allowUnfree = true; nix.settings.experimental-features = [ "nix-command" "flakes" ]; boot.tmp.cleanOnBoot = true; zramSwap.enable = true; environment.systemPackages = with pkgs; [ vim wget git htop tailscale ]; services.gitea-actions-runner = { package = pkgs.forgejo-actions-runner; instances = { oracle-arm = { name = "oracle-arm"; enable = true; labels = [ "debian-latest-arm:docker://node:18-bullseye" ]; url = "https://git.gmem.ca"; token = "dcSqNPRfeAFjAA2NUzZRbO4Q2k1L2WOOCAEAhPR4"; settings = { cache.port = 4328; }; }; }; }; programs.zsh.enable = true; programs.fish.enable = true; environment.shells = with pkgs; [ zsh fish ]; networking = { hostName = "forgejo-action-runner"; domain = "gmem.ca"; nameservers = [ "1.1.1.1" "1.0.0.1" ]; firewall = { trustedInterfaces = ["tailscale0"]; checkReversePath = "loose"; enable = true; allowedTCPPorts = [ 22 80 443 4328 ]; allowedUDPPorts = [ ]; }; nftables.enable = true; }; users.users = { root.openssh.authorizedKeys.keys = let authorizedKeys = pkgs.fetchurl { url = "https://gmem.ca/ssh"; hash = "sha256-7PpFDgWVfp26c9PuW+2s3O8MBAODtHr4q7WU/l3BoG4="; }; in pkgs.lib.splitString "\n" (builtins.readFile authorizedKeys); }; virtualisation = { docker = { enable = true; }; }; services.openssh.enable = true; services.tailscale.enable = true; system.stateVersion = "23.11"; }