This commit is contained in:
icefox 2025-12-26 12:08:19 -03:00
parent 38a5c47dab
commit af358f9326
No known key found for this signature in database
5 changed files with 116 additions and 3 deletions

86
module.nix Normal file
View file

@ -0,0 +1,86 @@
{ config, lib, pkgs, ... }:
let
cfg = config.services.henna;
in
{
options.services.henna = {
enable = lib.mkEnableOption "Henna gallery server";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.callPackage ./default.nix { };
description = "The henna package to use.";
};
imaginaryUrl = lib.mkOption {
type = lib.types.str;
description = "Imaginary server root URL.";
};
galleryPath = lib.mkOption {
type = lib.types.path;
description = "Path to the gallery directory.";
};
databasePath = lib.mkOption {
type = lib.types.path;
default = ./db.sqlite;
description = "Path to the SQLite database file.";
};
address = lib.mkOption {
type = lib.types.str;
default = "localhost";
description = "Address to listen on.";
};
port = lib.mkOption {
type = lib.types.port;
default = 10000;
description = "Port to listen on.";
};
user = lib.mkOption {
type = lib.types.str;
default = "henna";
description = "User to run henna as.";
};
group = lib.mkOption {
type = lib.types.str;
default = "henna";
description = "Group to run henna as.";
};
};
config = lib.mkIf cfg.enable {
users.users.${cfg.user} = {
isSystemUser = true;
group = cfg.group;
};
users.groups.${cfg.group} = { };
systemd.services.henna = {
description = "Henna gallery server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = ''
${cfg.package}/bin/henna \
-imaginary "${cfg.imaginaryUrl}" \
-gallery "${cfg.galleryPath}" \
-database "${cfg.databasePath}" \
-address "${cfg.address}" \
-port ${toString cfg.port}
'';
User = cfg.user;
Group = cfg.group;
Restart = "on-failure";
RestartSec = 5;
};
};
};
}