115 lines
3.1 KiB
Nix
115 lines
3.1 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
{
|
|
security.sudo.wheelNeedsPassword = false;
|
|
imports =
|
|
[ ./hardware-configuration.nix ];
|
|
networking.hostName = "tesla-nixos";
|
|
boot.initrd.enable = true;
|
|
boot.loader = {
|
|
systemd-boot = {
|
|
enable = true;
|
|
}; # end loader.systemd-boot
|
|
}; # end boot
|
|
virtualisation.oci-containers.containers = {
|
|
isponsorblocktv = {
|
|
image = "ghcr.io/dmunozv04/isponsorblocktv:latest";
|
|
autoStart = true;
|
|
volumes = [
|
|
"/home/alisceon/isponsorblocktv:/app/data"
|
|
];
|
|
}; # end isponsorblocktv
|
|
};
|
|
|
|
boot.kernel.sysctl = {
|
|
"kernel.unprivileged_userns_clone" = 1;
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d /var/lib/gitlab-runner 0755 root root -"
|
|
"d /var/lib/gitlab-runner/builds 0755 root root -"
|
|
"d /var/lib/gitlab-runner/cache 0755 root root -"
|
|
];
|
|
|
|
networking.nat = {
|
|
enable = true;
|
|
internalInterfaces = ["ve-+"];
|
|
externalInterface = "ens18";
|
|
};
|
|
|
|
containers.gitlab-runner = {
|
|
autoStart = true;
|
|
ephemeral = false;
|
|
|
|
privateNetwork = true;
|
|
hostAddress = "10.250.0.1"; # host end of veth
|
|
localAddress = "10.250.0.2"; # container end of veth
|
|
|
|
bindMounts = {
|
|
"/var/lib/gitlab-runner" = {
|
|
hostPath = "/var/lib/gitlab-runner";
|
|
isReadOnly = false;
|
|
};
|
|
"/var/lib/gitlab-runner/builds" = {
|
|
hostPath = "/var/lib/gitlab-runner/builds";
|
|
isReadOnly = false;
|
|
};
|
|
"/var/lib/gitlab-runner/cache" = {
|
|
hostPath = "/var/lib/gitlab-runner/cache";
|
|
isReadOnly = false;
|
|
};
|
|
};
|
|
|
|
# Guest (inside the nspawn container)
|
|
config = { pkgs, ... }: {
|
|
networking.hostName = "ci-nspawn";
|
|
time.timeZone = "UTC";
|
|
# Docker daemon inside the container
|
|
virtualisation.docker = {
|
|
enable = true;
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
docker
|
|
git
|
|
];
|
|
systemd.services."enable-linger-gitlab-runner" = {
|
|
description = "Enable linger for gitlab-runner";
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
ExecStart = "${pkgs.systemd}/bin/loginctl enable-linger gitlab-runner";
|
|
RemainAfterExit = true;
|
|
};
|
|
};
|
|
|
|
# GitLab Runner configured to use the local Docker daemon
|
|
services.gitlab-runner = {
|
|
enable = true;
|
|
services = {
|
|
ci-nspawn-docker = {
|
|
authenticationTokenConfigFile = "/var/lib/gitlab-runner/token-env";
|
|
|
|
executor = "docker";
|
|
dockerImage = "alpine:3";
|
|
dockerPrivileged = true;
|
|
dockerVolumes = [
|
|
"/var/lib/gitlab-runner/cache:/cache"
|
|
];
|
|
};
|
|
};
|
|
};
|
|
systemd.services.gitlab-runner.serviceConfig = {
|
|
StateDirectory = lib.mkForce "";
|
|
LogsDirectory = lib.mkForce "";
|
|
CacheDirectory = lib.mkForce "";
|
|
RuntimeDirectory = lib.mkForce ""; # optional, keeps things simple
|
|
};
|
|
# Basics
|
|
systemd.oomd.enable = false;
|
|
services.dbus.enable = true;
|
|
};
|
|
}; # end containers.gitlab-runner
|
|
|
|
} # end file
|
|
|