87 lines
2.6 KiB
Nix
87 lines
2.6 KiB
Nix
|
import ./make-test-python.nix ({ pkgs, lib, package, ... }:
|
||
|
let
|
||
|
qgisPackage = package.override { withServer = true; };
|
||
|
testScript = pkgs.writeTextFile {
|
||
|
name = "qgis-test.py";
|
||
|
text = (builtins.readFile ../../pkgs/applications/gis/qgis/test.py);
|
||
|
};
|
||
|
in
|
||
|
{
|
||
|
name = "qgis";
|
||
|
meta = {
|
||
|
maintainers = with lib; [ teams.geospatial.members ];
|
||
|
};
|
||
|
|
||
|
nodes = {
|
||
|
machine = { config, pkgs, ... }:
|
||
|
|
||
|
let
|
||
|
qgisServerUser = config.services.nginx.user;
|
||
|
qgisServerSocket = "/run/qgis_mapserv.socket";
|
||
|
in
|
||
|
{
|
||
|
virtualisation.diskSize = 2 * 1024;
|
||
|
|
||
|
imports = [ ./common/x11.nix ];
|
||
|
environment.systemPackages = [
|
||
|
qgisPackage
|
||
|
];
|
||
|
|
||
|
systemd.sockets.qgis-server = {
|
||
|
listenStreams = [ qgisServerSocket ];
|
||
|
socketConfig = {
|
||
|
Accept = false;
|
||
|
SocketUser = qgisServerUser;
|
||
|
SocketMode = 0600;
|
||
|
};
|
||
|
wantedBy = ["sockets.target" "qgis-server.service"];
|
||
|
before = [ "qgis-server.service" ];
|
||
|
};
|
||
|
|
||
|
systemd.services.qgis-server = {
|
||
|
description = "QGIS server";
|
||
|
serviceConfig = {
|
||
|
User = qgisServerUser;
|
||
|
StandardOutput = "null";
|
||
|
StandardError = "journal";
|
||
|
StandardInput = "socket";
|
||
|
Environment = [
|
||
|
"QT_QPA_PLATFORM_PLUGIN_PATH=${pkgs.libsForQt5.qt5.qtbase}/${pkgs.libsForQt5.qt5.qtbase.qtPluginPrefix}/platforms"
|
||
|
"QGIS_SERVER_LOG_LEVEL=0"
|
||
|
"QGIS_SERVER_LOG_STDERR=1"
|
||
|
];
|
||
|
ExecStart = "${qgisPackage}/lib/cgi-bin/qgis_mapserv.fcgi";
|
||
|
};
|
||
|
after = [ "network.target" ];
|
||
|
wantedBy = [ "multi-user.target" ];
|
||
|
};
|
||
|
|
||
|
services.nginx = {
|
||
|
enable = true;
|
||
|
virtualHosts."qgis" = {
|
||
|
locations."~".extraConfig = ''
|
||
|
gzip off;
|
||
|
include ${pkgs.nginx}/conf/fastcgi_params;
|
||
|
include ${pkgs.nginx}/conf/fastcgi.conf;
|
||
|
fastcgi_pass unix:${qgisServerSocket};
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
testScript = ''
|
||
|
start_all()
|
||
|
|
||
|
# test desktop
|
||
|
machine.succeed("${qgisPackage}/bin/qgis --version | grep 'QGIS ${qgisPackage.version}'")
|
||
|
machine.succeed("${qgisPackage}/bin/qgis --code ${testScript}")
|
||
|
|
||
|
# test server
|
||
|
machine.succeed("${qgisPackage}/bin/qgis_mapserver --version | grep 'QGIS ${qgisPackage.version}'")
|
||
|
|
||
|
machine.succeed("curl --head http://localhost | grep 'Server:.*${qgisPackage.version}'")
|
||
|
machine.succeed("curl http://localhost/index.json | grep 'Landing page as JSON'")
|
||
|
'';
|
||
|
})
|