add mapfm poster back

This commit is contained in:
Jana Dönszelmann 2025-09-29 16:49:54 +02:00
parent 47a4f3f9a7
commit d3662d77d0
No known key found for this signature in database
8 changed files with 341 additions and 191 deletions

View file

@ -1,30 +1,43 @@
{lib, pkgs, config, ...}: let
factorioVersion = version: sha: pkgs.factorio-headless.overrideAttrs (_: {
inherit version;
src = pkgs.fetchurl {
url = "https://factorio.com/get-download/${version}/headless/linux64";
name = "factorio-headless-${version}.tar.xz";
sha256 = sha;
};
});
getMods = modDir: let
modList = lib.pipe modDir [
builtins.readDir
(lib.filterAttrs (k: v: v == "regular"))
(lib.mapAttrsToList (k: v: k))
(builtins.filter (lib.hasSuffix ".zip"))
];
validPath = modFileName:
builtins.path {
path = modDir + "/${modFileName}";
name = lib.strings.sanitizeDerivationName modFileName;
{ lib
, pkgs
, config
, ...
}:
let
factorioVersion =
version: sha:
pkgs.factorio-headless.overrideAttrs (_: {
inherit version;
src = pkgs.fetchurl {
url = "https://factorio.com/get-download/${version}/headless/linux64";
name = "factorio-headless-${version}.tar.xz";
sha256 = sha;
};
modToDrv = modFileName:
pkgs.runCommand "copy-factorio-mods" {} ''
mkdir $out
ln -s '${validPath modFileName}' $out/'${modFileName}'
''
// { deps = []; };
});
getMods =
modDir:
let
modList = lib.pipe modDir [
builtins.readDir
(lib.filterAttrs (k: v: v == "regular"))
(lib.mapAttrsToList (k: v: k))
(builtins.filter (lib.hasSuffix ".zip"))
];
validPath =
modFileName:
builtins.path {
path = modDir + "/${modFileName}";
name = lib.strings.sanitizeDerivationName modFileName;
};
modToDrv =
modFileName:
pkgs.runCommand "copy-factorio-mods" { } ''
mkdir $out
ln -s '${validPath modFileName}' $out/'${modFileName}'
''
// {
deps = [ ];
};
in
builtins.map modToDrv modList;
factorioContainer = name: factorio-config: {
@ -46,27 +59,33 @@
};
privateUsers = "no";
config = { config, pkgs, lib, ... }: {
systemd.services.factorio.serviceConfig.User = "factorio";
services.factorio = factorio-config // {
enable = true;
openFirewall = true;
config =
{ config
, pkgs
, lib
, ...
}:
{
systemd.services.factorio.serviceConfig.User = "factorio";
services.factorio = factorio-config // {
enable = true;
openFirewall = true;
game-name = name;
saveName = name;
stateDirName = "factorio";
game-name = name;
saveName = name;
stateDirName = "factorio";
};
nixpkgs.config = {
allowUnfree = true;
};
system.stateVersion = "23.11";
networking = {
firewall.enable = false;
};
};
nixpkgs.config = {
allowUnfree = true;
};
system.stateVersion = "23.11";
networking = {
firewall.enable = false;
};
};
};
};
in
@ -85,20 +104,31 @@ in
owner = "factorio";
};
containers = factorioContainer "tawney" {
autosave-interval = 20;
admins = [ "jonay2000" "computerdruid" "pineapple" ];
extraSettingsFile = config.sops.secrets.factorio.path;
# mods = getMods ../../factorio-mods/tawney;
package = factorioVersion "2.0.66" "sha256-8bOXbqzE4jOADTmdkABsNW+jZvXWQ0HFBMlcDLoyHAY=";
port = 20001;
}
// factorioContainer "snek" {
autosave-interval = 20;
admins = [ "jonay2000" "computerdruid" "pineapple" ];
extraSettingsFile = config.sops.secrets.factorio.path;
mods = getMods ../../factorio-mods/snek;
package = factorioVersion "2.0.66" "sha256-8bOXbqzE4jOADTmdkABsNW+jZvXWQ0HFBMlcDLoyHAY=";
port = 20002;
};
containers =
factorioContainer "tawney"
{
autosave-interval = 20;
admins = [
"jonay2000"
"computerdruid"
"pineapple"
];
extraSettingsFile = config.sops.secrets.factorio.path;
# mods = getMods ../../factorio-mods/tawney;
package = factorioVersion "2.0.69" "sha256-I1FHuz7WtfCmmTiTxskv3+U1upWrhmBG9R+GUoS1c0E=";
port = 20001;
}
// factorioContainer "snek" {
autosave-interval = 20;
admins = [
"jonay2000"
"computerdruid"
"pineapple"
"koragendum"
];
extraSettingsFile = config.sops.secrets.factorio.path;
mods = getMods ../../factorio-mods/snek;
package = factorioVersion "2.0.69" "sha256-I1FHuz7WtfCmmTiTxskv3+U1upWrhmBG9R+GUoS1c0E=";
port = 20002;
};
}