Add all of iogamaster modules

This commit is contained in:
2024-06-15 09:59:52 +02:00
parent c97f22254a
commit fa99b32cad
120 changed files with 3587 additions and 254 deletions

View File

@@ -0,0 +1,30 @@
{
options,
config,
lib,
...
}:
with lib;
with lib.frajul; let
cfg = config.services.arion.filebrowser;
in {
options.services.arion.filebrowser = with types; {
enable = mkBoolOpt false "Enable the filebrowser docker service";
};
config = mkIf cfg.enable {
virtualisation.arion.enable = true;
virtualisation.arion.projects.filebrowser.settings = {
project.name = "filebrowser";
services.filebrowser.service = {
image = "filebrowser/filebrowser";
ports = [
"8080:80"
];
volumes = [
"/home/${config.user.name}:/srv"
];
};
};
};
}

View File

@@ -0,0 +1,37 @@
{
options,
config,
lib,
...
}:
with lib;
with lib.frajul; let
cfg = config.services.arion.jellyfin;
in {
options.services.arion.jellyfin = with types; {
enable = mkBoolOpt false "Enable jellyfin";
};
config = mkIf cfg.enable {
virtualisation.arion.enable = true;
virtualisation.arion.projects.jellyfin.settings = {
project.name = "jellyfin";
services.jellyfin.service = {
image = "jellyfin/jellyfin";
ports = [
"8096:8096"
];
volumes = [
"/home/${config.user.name}/.local/share/jellyfin/config:/config"
"/home/${config.user.name}/.local/share/jellyfin/cache:/cache"
"/home/${config.user.name}/.local/share/jellyfin/media:/media"
];
};
};
home.persist.directories = [
".local/share/jellyfin/config"
".local/share/jellyfin/cache"
];
};
}

View File

@@ -0,0 +1,48 @@
{
options,
config,
lib,
...
}:
with lib;
with lib.frajul; let
cfg = config.services.arion.terraria.vanilla;
in {
options.services.arion.terraria.vanilla = with types; {
enable = mkBoolOpt false "";
};
config = mkIf cfg.enable {
virtualisation.arion.enable = true;
virtualisation.arion.projects.terraria-vanilla.settings = {
project.name = "vanilla";
services.terraria.service = {
image = "ryshe/terraria:latest";
environment = {
WORLD_FILENAME = "world.wld";
CONFIGPATH = "config.json";
};
ports = [
"7777:7777"
];
volumes = [
"/home/${config.user.name}/.local/share/terraria/vanilla/worlds:/root/.local/share/Terraria/Worlds"
];
# For the first run you will need to generate a new world with a size where: 1 = Small, 2=Medium, 3=Large
command = [
"-autocreate"
"2"
];
};
services.ngrok.service = {
image = "ngrok/ngrok";
env_file = ["${config.sops.secrets."ngrok/terraria".path}"];
command = ["tcp" "terraria:7777"];
};
};
home.persist.directories = [
".local/share/terraria/vanilla/worlds"
];
};
}

View File

@@ -0,0 +1,40 @@
{
options,
config,
lib,
...
}:
with lib;
with lib.frajul; let
cfg = config.services.arion.windows;
in {
options.services.arion.windows = with types; {
enable = mkBoolOpt false "Enable the windows docker service";
};
config = mkIf cfg.enable {
virtualisation.arion.enable = true;
virtualisation.arion.projects.windows.settings = {
project.name = "windows";
services.windows.service = {
image = "dockurr/windows";
environment.VERSION = "win11";
ports = [
"8006:8006"
"3389:3389/tcp"
"3389:3389/udp"
];
devices = [
"/dev/kvm"
];
capabilities = {
NET_ADMIN = true;
};
stop_grace_period = "2m";
volumes = [
"/home/${config.user.name}:/srv"
];
};
};
};
}