diff --git a/nixbld-etc-nixos/configuration.nix b/nixbld-etc-nixos/configuration.nix index 8501e9c..706b64c 100644 --- a/nixbld-etc-nixos/configuration.nix +++ b/nixbld-etc-nixos/configuration.nix @@ -4,12 +4,14 @@ { config, pkgs, ... }: +let + hydraWwwOutputs = "/var/www/hydra-outputs"; +in { imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ./homu/nixos-module.nix - ./hydra-www-outputs.nix ]; # Use the systemd-boot EFI boot loader. @@ -137,20 +139,25 @@ ACTION=="add", SUBSYSTEM=="tty", \ '' binary_cache_secret_key_file = /etc/nixos/secret/nixbld.m-labs.hk-1 max_output_size = 5500000000 + + + job = artiq:main:artiq-manual-html + command = ln -sf $(jq -r '.outputs[0].path' < $HYDRA_JSON) ${hydraWwwOutputs}/artiq-manual-html-beta + + + job = artiq:main:artiq-manual-latexpdf + command = ln -sf $(jq -r '.outputs[0].path' < $HYDRA_JSON) ${hydraWwwOutputs}/artiq-manual-latexpdf-beta + ''; }; - services.hydraWwwOutputs = { - "m-labs.hk" = { - "artiq-manual-beta-html" = { - job = "artiq:main:artiq-manual-html"; - httpPath = "/artiq/manual-beta"; - outputPath = "share/doc/artiq-manual/html"; - }; - "artiq-manual-beta-latexpdf" = { - job = "artiq:main:artiq-manual-latexpdf"; - httpPath = "/artiq/manual-beta.pdf"; - outputPath = "share/doc/artiq-manual/ARTIQ.pdf"; - }; + systemd.services.hydra-www-outputs-init = { + description = "Set up a hydra-owned directory for build outputs"; + wantedBy = [ "multi-user.target" ]; + requiredBy = [ "hydra-queue-runner.service" ]; + before = [ "hydra-queue-runner.service" ]; + serviceConfig = { + Type = "oneshot"; + ExecStart = [ "${pkgs.coreutils}/bin/mkdir -p ${hydraWwwOutputs}" "${pkgs.coreutils}/bin/chown hydra-queue-runner:hydra ${hydraWwwOutputs}" ]; }; }; @@ -223,6 +230,8 @@ ACTION=="add", SUBSYSTEM=="tty", \ locations."/gateware.html".extraConfig = '' return 301 /migen/; ''; + locations."/artiq/manual-beta".alias = "${hydraWwwOutputs}/artiq-manual-html-beta/share/doc/artiq-manual/html"; + locations."/artiq/manual-beta.pdf".alias = "${hydraWwwOutputs}/artiq-manual-latexpdf-beta/share/doc/artiq-manual/ARTIQ.pdf"; }; "www.m-labs.hk" = { addSSL = true; diff --git a/nixbld-etc-nixos/hydra-www-hook.sh b/nixbld-etc-nixos/hydra-www-hook.sh deleted file mode 100755 index 2506e3c..0000000 --- a/nixbld-etc-nixos/hydra-www-hook.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# Argument 1: -CONF=$1 -# Argument 2: HTTP location -LOCATION=$2 -# Argument 3: HTTP alias target within the derivation output -HTTP_PATH=$3 -# Get path of first output -OUTPUT=$(jq -r '.outputs[0].path' < $HYDRA_JSON) -HASH=${OUTPUT:11:32} -ROOT="$OUTPUT/$HTTP_PATH" - -cat > $CONF < - job = ${cfg.job} - command = ${hook}/bin/hydra-www-hook.sh ${hydraWwwOutputs}/${name}.conf ${cfg.httpPath} ${cfg.outputPath} - - '') cfg.${vhost} - )) (builtins.attrNames cfg) - ); - }; - - config.systemd.services.hydra-www-outputs-init = { - description = "Set up a hydra-owned directory for build outputs"; - wantedBy = [ "multi-user.target" ]; - requiredBy = [ "hydra-queue-runner.service" ]; - before = [ "hydra-queue-runner.service" ]; - serviceConfig = { - Type = "oneshot"; - ExecStart = [ - "${pkgs.coreutils}/bin/mkdir -p ${hydraWwwOutputs}" - ] ++ - (builtins.concatMap (vhost: - map (name: - "${pkgs.coreutils}/bin/touch ${hydraWwwOutputs}/${name}.conf" - ) (builtins.attrNames cfg.${vhost}) - ) (builtins.attrNames cfg)) ++ [ - "${pkgs.coreutils}/bin/chown -R hydra-queue-runner:hydra ${hydraWwwOutputs}" - ]; - }; - }; - - # Allow the hook to reload nginx - config.security.sudo.extraRules = [ { - users = [ "hydra-queue-runner" ]; - commands = [ { - command = "${config.systemd.package}/bin/systemctl reload nginx"; - options = [ "NOPASSWD" ]; - } ]; - } ]; - - config.services.nginx = { - virtualHosts = builtins.mapAttrs (vhost: cfg': { - extraConfig = builtins.concatStringsSep "\n" ( - map (name: - "include ${hydraWwwOutputs}/${name}.conf;" - ) (builtins.attrNames cfg') - ); - }) cfg; - }; -}