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