34 lines
1.3 KiB
Nix
34 lines
1.3 KiB
Nix
# NixOS module: runs a Sausage world as a service (see README, "As a service").
|
|
# Create the world once: sudo -u sausage nix run git+https://gitea.surma.technology/surma/sausage -- init /var/lib/sausage/world
|
|
{ config, lib, pkgs, ... }:
|
|
let cfg = config.services.sausage; in
|
|
{
|
|
options.services.sausage = {
|
|
enable = lib.mkEnableOption "the Sausage world";
|
|
world = lib.mkOption { type = lib.types.str; default = "/var/lib/sausage/world"; };
|
|
flake = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "git+https://gitea.surma.technology/surma/sausage";
|
|
};
|
|
};
|
|
config = lib.mkIf cfg.enable {
|
|
users.users.sausage = { isSystemUser = true; group = "sausage"; home = "/var/lib/sausage"; createHome = true; };
|
|
users.groups.sausage = { };
|
|
systemd.services.sausage = {
|
|
description = "Sausage world";
|
|
wantedBy = [ "multi-user.target" ];
|
|
after = [ "network-online.target" ];
|
|
wants = [ "network-online.target" ];
|
|
path = [ pkgs.nix pkgs.git ];
|
|
serviceConfig = {
|
|
User = "sausage";
|
|
WorkingDirectory = "/var/lib/sausage";
|
|
ExecStart = "${pkgs.nix}/bin/nix run ${cfg.flake}#loop -- --headless ${cfg.world}";
|
|
Restart = "on-failure";
|
|
RestartSec = 5;
|
|
TimeoutStopSec = 30;
|
|
};
|
|
};
|
|
};
|
|
}
|