containerization (#3)
diff-tag / dix (push) Successful in 6m11s
flake-check / flake-check (push) Successful in 51s
lint / lint (push) Successful in 1m47s

Co-authored-by: Floweynt <50057682+Floweynt@users.noreply.github.com>
Co-authored-by: Autumn Liu <al63244@my.utexas.edu>
Reviewed-on: #3
Co-authored-by: autumn <aut.tea7@gmail.com>
This commit was merged in pull request #3.
This commit is contained in:
2026-09-12 06:40:11 +00:00
committed by flowey
co-authored by Floweynt Autumn Liu
parent af5d7493af
commit 8190b0080d
3 changed files with 57 additions and 45 deletions
+11 -25
View File
@@ -75,15 +75,6 @@ let
packages = with pkgs; [ tmux ] ++ packages;
miscProperties = self._sshpiperRegister routingInfo;
};
kvmTrait = {
containerConfig =
{ pkgs, ... }:
{
users.users.runner.extraGroups = [ "kvm" ];
environment.systemPackages = [ pkgs.qemu_kvm ];
};
};
in
{
ssh-admin = mkSsh {
@@ -126,32 +117,27 @@ in
ssh-generic = mkSsh {
name = "ssh-generic";
net.access = [ { to = "@internet"; } ];
# /dev/kvm keeps its host ownership, so the kvm gid must not be shifted.
isolation.privateUsers = "identity";
resources = {
fs."/home/runner/data" = {
hostPath = "${data}/ssh/generic";
isReadOnly = false;
};
devices = [ "/dev/kvm" ];
mem = "16G";
cpu = 65;
};
traits = [ kvmTrait ];
isolation.allowedDevices = [
packages = with pkgs; [ qemu_kvm ];
traits = [
{
node = "/dev/kvm";
modifier = "rw";
containerConfig =
{ config, ... }:
{
users.groups.kvm.gid = config.ids.gids.kvm;
users.users.runner.extraGroups = [ "kvm" ];
};
}
{
node = "/dev/vhost-net";
modifier = "rw";
}
{
node = "/dev/net/tun";
modifier = "rwm";
}
];
isolation.additionalCapabilities = [
"CAP_NET_ADMIN"
"CAP_MKNOD"
];
routingInfo = [
{