diff --git a/flake.nix b/flake.nix index 327e64c..94236a9 100644 --- a/flake.nix +++ b/flake.nix @@ -38,6 +38,7 @@ ./modules agenix.nixosModules.default ]; + additionalPackages = [ ./pkgs ]; in { apprentix = nixosSystem { @@ -47,7 +48,7 @@ belenios = nixosSystem { specialArgs = inputs; - modules = [ ./hosts/vm/belenios ] ++ baseModules; + modules = [ ./hosts/vm/belenios ] ++ baseModules ++ additionalPackages; }; collabora = nixosSystem { diff --git a/pkgs/belenios/services.nix b/pkgs/belenios/services.nix index 44165dc..e306b83 100644 --- a/pkgs/belenios/services.nix +++ b/pkgs/belenios/services.nix @@ -1,13 +1,18 @@ -{ lib, config, ... }: +{ lib, config, pkgs, ... }: let - cfg = config.belenios; + cfg = config.services.belenios; - inherit (lib) mkEnableOption mkOption mkIf; + configFile = lib.writeText "beleniosserver.conf" cfg.config; + + inherit (lib) mkEnableOption mkPackageOption mkOption mkIf; in { options.services.belenios = { enable = mkEnableOption "Whether to enable the Belenios Web server."; + + package = mkPackageOption pkgs "belenios"; + config = mkOption { types = lib.types.str; description = '' @@ -124,6 +129,23 @@ in }; config = mkIf cfg.enable { - systemd.services.belenios = {}; + users.users.belenios = { + description = "Belenios Web server service user"; + isSystemUser = true; + group = "belenios"; + }; + users.groups.belenios = { }; + + systemd.services.belenios = { + description = "Belenios Web server service"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + serviceConfig = { + ExecStart = "${cfg.package}/bin/belenios-server -c ${configFile}"; + Restart = "always"; + User = "belenios"; + }; + }; }; }