aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/web-apps/virtlyst.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/services/web-apps/virtlyst.nix')
-rw-r--r--nixpkgs/nixos/modules/services/web-apps/virtlyst.nix72
1 files changed, 72 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/services/web-apps/virtlyst.nix b/nixpkgs/nixos/modules/services/web-apps/virtlyst.nix
new file mode 100644
index 00000000000..e5c0bff2168
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/web-apps/virtlyst.nix
@@ -0,0 +1,72 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.services.virtlyst;
+ stateDir = "/var/lib/virtlyst";
+
+ ini = pkgs.writeText "virtlyst-config.ini" ''
+ [wsgi]
+ master = true
+ threads = auto
+ http-socket = ${cfg.httpSocket}
+ application = ${pkgs.virtlyst}/lib/libVirtlyst.so
+ chdir2 = ${stateDir}
+ static-map = /static=${pkgs.virtlyst}/root/static
+
+ [Cutelyst]
+ production = true
+ DatabasePath = virtlyst.sqlite
+ TemplatePath = ${pkgs.virtlyst}/root/src
+
+ [Rules]
+ cutelyst.* = true
+ virtlyst.* = true
+ '';
+
+in
+
+{
+
+ options.services.virtlyst = {
+ enable = mkEnableOption "Virtlyst libvirt web interface";
+
+ adminPassword = mkOption {
+ type = types.str;
+ description = ''
+ Initial admin password with which the database will be seeded.
+ '';
+ };
+
+ httpSocket = mkOption {
+ type = types.str;
+ default = "localhost:3000";
+ description = ''
+ IP and/or port to which to bind the http socket.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ users.users.virtlyst = {
+ home = stateDir;
+ createHome = true;
+ group = mkIf config.virtualisation.libvirtd.enable "libvirtd";
+ };
+
+ systemd.services.virtlyst = {
+ wantedBy = [ "multi-user.target" ];
+ environment = {
+ VIRTLYST_ADMIN_PASSWORD = cfg.adminPassword;
+ };
+ serviceConfig = {
+ ExecStart = "${pkgs.cutelyst}/bin/cutelyst-wsgi2 --ini ${ini}";
+ User = "virtlyst";
+ WorkingDirectory = stateDir;
+ };
+ };
+ };
+
+}