{ config, pkgs, lib, ... }: let cfg = config.services.charm; in { options.services.charm = { enable = lib.mkEnableOption "Charm cloud server"; }; config = lib.mkIf cfg.enable { systemd.services.charm = { wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; description = "The Cloud"; serviceConfig = { DynamicUser = true; ExecStart = ''${pkgs.charm}/bin/charm serve''; Restart = "always"; Type = "simple"; RestartSec = 1; Environment = "CHARM_SERVER_DATA_DIR=/var/lib/charm"; StateDirectory = "charm"; WorkingDirectory = "/var/lib/charm"; }; }; }; }