nixos-config/2configs/deployment/scrape/selenium.nix
2017-12-08 14:31:43 +01:00

66 lines
1.6 KiB
Nix

{config, pkgs, lib, ...}:
with <stockholm/lib>;
let
selenium-pw = <secrets/selenium-vncpasswd>;
in {
services.jenkinsSlave.enable = true;
users.users.selenium = {
uid = genid "selenium";
extraGroups = [ "plugdev" ];
};
fonts.enableFontDir = true;
# networking.firewall.allowedTCPPorts = [ 5910 ];
systemd.services.selenium-X11 =
{
description = "X11 vnc for selenium";
wantedBy = [ "multi-user.target" ];
path = [ pkgs.xorg.xorgserver pkgs.tightvnc pkgs.dwm ];
environment =
{
DISPLAY = ":10";
};
script = ''
set -ex
[ -e /tmp/.X10-lock ] && ( set +e ; chmod u+w /tmp/.X10-lock ; rm /tmp/.X10-lock )
[ -e /tmp/.X11-unix/X10 ] && ( set +e ; chmod u+w /tmp/.X11-unix/X10 ; rm /tmp/.X11-unix/X10 )
mkdir -p ~/.vnc
cp -f ${selenium-pw} ~/.vnc/passwd
chmod go-rwx ~/.vnc/passwd
echo > ~/.vnc/xstartup
chmod u+x ~/.vnc/xstartup
vncserver $DISPLAY -geometry 1280x1024 -depth 24 -name jenkins -ac
dwm
'';
preStop = ''
vncserver -kill $DISPLAY
'';
serviceConfig = {
User = "selenium";
};
};
systemd.services.selenium-server =
{
description = "selenium-server";
wantedBy = [ "multi-user.target" ];
requires = [ "selenium-X11.service" ];
path = [ pkgs.chromium
pkgs.firefoxWrapper ];
environment =
{
DISPLAY = ":10";
};
script = ''
${pkgs.selenium-server-standalone}/bin/selenium-server -Dwebdriver.enable.native.events=1
'';
serviceConfig = {
User = "selenium";
};
};
}