66 lines
1.5 KiB
Nix
66 lines
1.5 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
with lib;
|
|
let
|
|
cfg = config.cloud.writefreely;
|
|
in
|
|
{
|
|
options.cloud.writefreely = {
|
|
enable = mkEnableOption "Enable the write.as instance";
|
|
package = mkOption {
|
|
type = types.package;
|
|
default = pkgs.writefreely;
|
|
description = "The writefreely package to use";
|
|
};
|
|
host = mkOption {
|
|
type = types.str;
|
|
description = "The hostname for the instance";
|
|
};
|
|
site.title = mkOption {
|
|
type = types.str;
|
|
default = "Kagami's Writings";
|
|
description = "The site's title";
|
|
};
|
|
site.description = mkOption {
|
|
type = types.str;
|
|
default = "Just random Kagami thoughts in written form.";
|
|
description = "The site's description";
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable (
|
|
let
|
|
host = cfg.host;
|
|
port = 18074;
|
|
in
|
|
{
|
|
# traefik
|
|
cloud.traefik.hosts.writefreely = { inherit host port; };
|
|
|
|
services.writefreely = {
|
|
enable = true;
|
|
package = cfg.package;
|
|
|
|
host = cfg.host;
|
|
settings = {
|
|
server.port = port;
|
|
app = {
|
|
host = "https://${cfg.host}";
|
|
site_name = cfg.site.title;
|
|
site_description = cfg.site.description;
|
|
single_user = true;
|
|
min_username_len = 3;
|
|
federation = true;
|
|
public_stats = true;
|
|
monetization = false;
|
|
};
|
|
};
|
|
|
|
database.type = "sqlite3";
|
|
|
|
admin.name = "nki";
|
|
};
|
|
}
|
|
);
|
|
}
|
|
|