{ 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 = { # TODO: Expand module a bit # https://github.com/charmbracelet/charm#server-settings CHARM_SERVER_DATA_DIR = "/var/lib/charm"; # CHARM_SERVER_USER_MAX_STORAGE = ""; }; StateDirectory = "charm"; WorkingDirectory = "/var/lib/charm"; }; }; }; }