base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / nixos / tests / qgis.nix
blobe8149e4885627e70175cdeb3e92c46b07d053587
1 import ./make-test-python.nix ({ pkgs, lib, package, ... }:
2   let
3     qgisPackage = package.override { withServer = true; };
4     testScript = pkgs.writeTextFile {
5       name = "qgis-test.py";
6       text = (builtins.readFile ../../pkgs/applications/gis/qgis/test.py);
7     };
8   in
9   {
10     name = "qgis";
11     meta = {
12       maintainers = with lib; [ teams.geospatial.members ];
13     };
15     nodes = {
16       machine = { config, pkgs, ... }:
18       let
19         qgisServerUser = config.services.nginx.user;
20         qgisServerSocket = "/run/qgis_mapserv.socket";
21       in
22       {
23         virtualisation.diskSize = 2 * 1024;
25         imports = [ ./common/x11.nix ];
26         environment.systemPackages = [
27           qgisPackage
28         ];
30         systemd.sockets.qgis-server = {
31           listenStreams = [ qgisServerSocket ];
32           socketConfig = {
33             Accept = false;
34             SocketUser = qgisServerUser;
35             SocketMode = 0600;
36           };
37           wantedBy = ["sockets.target" "qgis-server.service"];
38           before = [ "qgis-server.service" ];
39         };
41         systemd.services.qgis-server = {
42           description = "QGIS server";
43           serviceConfig = {
44             User = qgisServerUser;
45             StandardOutput = "null";
46             StandardError = "journal";
47             StandardInput = "socket";
48             Environment = [
49               "QT_QPA_PLATFORM_PLUGIN_PATH=${pkgs.libsForQt5.qt5.qtbase}/${pkgs.libsForQt5.qt5.qtbase.qtPluginPrefix}/platforms"
50               "QGIS_SERVER_LOG_LEVEL=0"
51               "QGIS_SERVER_LOG_STDERR=1"
52             ];
53             ExecStart = "${qgisPackage}/lib/cgi-bin/qgis_mapserv.fcgi";
54           };
55           after = [ "network.target" ];
56           wantedBy = [ "multi-user.target" ];
57         };
59         services.nginx = {
60           enable = true;
61           virtualHosts."qgis" = {
62             locations."~".extraConfig = ''
63               gzip off;
64               include ${pkgs.nginx}/conf/fastcgi_params;
65               include ${pkgs.nginx}/conf/fastcgi.conf;
66               fastcgi_pass unix:${qgisServerSocket};
67             '';
68           };
69         };
70       };
71     };
73     testScript = ''
74       start_all()
76       # test desktop
77       machine.succeed("${qgisPackage}/bin/qgis --version | grep 'QGIS ${qgisPackage.version}'")
78       machine.succeed("${qgisPackage}/bin/qgis --code ${testScript}")
80       # test server
81       machine.succeed("${qgisPackage}/bin/qgis_mapserver --version | grep 'QGIS ${qgisPackage.version}'")
83       machine.succeed("curl --head http://localhost | grep 'Server:.*${qgisPackage.version}'")
84       machine.succeed("curl http://localhost/index.json | grep 'Landing page as JSON'")
85     '';
86   })