Files
conmorfeusz/module.nix
2026-01-07 17:01:36 +01:00

68 lines
1.7 KiB
Nix

self: {
config,
system,
pkgs,
lib,
...
}: let
cfg = config.services.conmorfeusz;
morfeusz = self.packages.${system}.morfeusz;
concraft-pl = self.packages.${system}.concraft-pl;
conmorfeusz = self.packages.${system}.conmorfeusz;
serverConfig = cfg.server.config // {port = toString cfg.server.port;};
in {
options.services.conmorfeusz = with lib; {
enable = mkEnableOption "conmorfeusz";
model = mkOption {
type = types.nullOr types.package;
description = "The target concraft-pl model";
default = null;
};
server = {
enable = mkEnableOption "concraft-pl server";
port = mkOption {
type = types.port;
description = "Port on which server should listen";
default = 8080;
};
config = mkOption {
type = types.attrs;
description = "CLI parameters of 'concraft-pl server' command";
default = {
inmodel = toString (pkgs.callPackage ./concraft-sgjp-model.nix {});
};
};
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [
morfeusz
concraft-pl
(conmorfeusz.override {
model = cfg.model;
local = !cfg.server.enable;
serverUrl =
if cfg.server.enable
then "http://localhost:${toString cfg.server.port}"
else null;
})
];
systemd.services.conmorfeusz = lib.mkIf cfg.server.enable {
enable = true;
description = "Conmorfeusz";
wantedBy = ["multi-user.target"];
serviceConfig = {
ExecStart = "${concraft-pl}/bin/concraft-pl server ${lib.cli.toGNUCommandLineShell {} serverConfig}";
};
};
};
}