nix-config/modules/containers.nix

115 lines
2.3 KiB
Nix
Raw Normal View History

{ config, stylix, home-manager, sakaya, ... }:
2023-06-23 21:48:29 +02:00
let
inherit (config.modules.system) username;
template = {
privateNetwork = true;
ephemeral = true;
autoStart = true;
restartIfChanged = false;
bindMounts = {
"/mnt" = {
hostPath = "/home/${username}/containers/wine";
isReadOnly = false;
};
waylandDisplay = rec {
hostPath = "/run/user/1000";
mountPoint = hostPath;
};
x11Display = rec {
hostPath = "/tmp/.X11-unix";
mountPoint = hostPath;
};
dri = rec {
hostPath = "/dev/dri";
mountPoint = hostPath;
};
};
allowedDevices = [
{
modifier = "rw";
node = "/dev/dri/renderD128";
}
];
};
2023-08-31 20:16:29 +02:00
in
{
systemd.tmpfiles.rules = [
"d /run/user/1000 0700 ${username} users -"
];
containers.wine = template // {
hostAddress = "192.168.100.34";
localAddress = "192.168.100.49";
config = { lib, pkgs, ... }: {
imports = [
2023-06-22 18:51:35 +02:00
stylix.nixosModules.stylix
home-manager.nixosModules.home-manager
../containers/shared.nix
];
networking.nat.forwardPorts = [
{
destination = "192.168.100.49:39493";
sourcePort = 39493;
}
{
destination = "192.168.100.49:5029";
sourcePort = 5029;
}
];
networking.firewall.allowedTCPPorts = [
39493
5029
];
systemd.services.sakaya = {
enable = true;
description = "sakaya server";
unitConfig = {
Type = "simple";
};
path = with pkgs; [
su
];
serviceConfig = {
ExecStart = "/usr/bin/env su ${username} --command=${sakaya.packages.${pkgs.system}.sakaya}/bin/sakaya";
};
wantedBy = [ "multi-user.target" ];
};
2023-06-11 15:51:26 +02:00
environment.systemPackages = with pkgs; [
wineWowPackages.waylandFull
2023-06-11 15:51:26 +02:00
winetricks
2023-10-28 17:35:05 +02:00
sakaya.packages.${system}.sakaya
rar
unrar
iamb
srb2
];
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"rar"
"unrar"
2023-06-11 15:51:26 +02:00
];
environment.sessionVariables = {
LC_ALL = "ja_JP.UTF-8";
TZ = "Asia/Tokyo";
};
2023-06-11 15:51:26 +02:00
};
};
}