librespeed,graphical: minor fixes

This commit is contained in:
emily 2024-09-27 00:06:27 +02:00
parent 1c8bfba590
commit e44919b825
Signed by: emily
GPG key ID: F6F4C66207FCF995
3 changed files with 29 additions and 16 deletions

View file

@ -119,7 +119,7 @@
#"eDP-1, 2560x1600@60, 0x0, 1, bitdepth, 10"
#"eDP-1, 1920x1200@60, 0x0, 1, bitdepth, 10"
"desc:Dell Inc. AW3225QF FXK2YZ3, 3840x2160@240,5280x0,1, bitdepth,10, vrr,2"
"desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455, 2560x1440@144,3840x-350,1, bitdepth,10, transform,1"
"desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455, 2560x1440@144,3840x-280,1, bitdepth,10, transform,1"
",preferred,auto,1"
];
workspace = [

View file

@ -107,10 +107,10 @@ in {
'';
default = {};
type = with types; nullOr (attrsOf (oneOf [
bool
(nullOr bool)
int
str
null
package
]));
};
};
@ -130,11 +130,15 @@ in {
services.nginx.virtualHosts = lib.mkIf cfg.configureNginx {
${cfg.domain} = {
locations."/" = {
proxyPass = "http://${cfg.settings.bind_address}:${toString cfg.settings.listen_port}";
proxyPass = "http://[::1]:${toString cfg.settings.listen_port}";
recommendedProxySettings = true;
};
locations."backend/".extraConfig = "return 301 https://$host:${toString cfg.settings.listen_port}$request_uri;";
enableACME = true;
forceSSL = true;
extraConfig = ''
gzip off;
'';
};
};
security.acme.certs = lib.mkIf cfg.configureNginx {
@ -144,7 +148,7 @@ in {
services.librespeed.servers = lib.mkIf (cfg.domain != null) [
{
name = cfg.domain;
server = "https://${cfg.domain}";
server = "//${cfg.domain}:${toString cfg.settings.listen_port}";
}
];
services.librespeed.settings = let
@ -153,14 +157,15 @@ in {
assets = pkgs.runCommand "librespeed-assets" {
preferLocal = true;
serverList = ''
serversList = ''
function get_servers() {
return ${builtins.toJSON cfg.servers}
}
'';
} ''
cp -r ${pkgs.librespeed-rust}/assets $out
cat >$out/server_list.js <<<"$serverList"
chmod 666 $out/servers_list.js
cat >$out/servers_list.js <<<"$serversList"
substitute ${pkgs.librespeed-rust}/assets/index.html $out/index.html \
--replace-fail "LibreSpeed Example" ${lib.escapeShellArg (lib.escapeXML cfg.pageTitle)} \
--replace-fail "PUT@YOUR_EMAIL.HERE" ${lib.escapeShellArg (lib.escapeXML cfg.contactEmail)} \
@ -168,26 +173,27 @@ in {
'';
in {
speed_test_dir = assets;
bind_address = mkDefault (if cfg.configureNginx then "127.0.0.1" else "0.0.0.0");
bind_address = mkDefault (if cfg.configureNginx then "::" else "::");
listen_port = mkDefault 8989;
base_url = mkDefault "backend";
worker_threads = mkDefault "auto";
database_type = mkDefault "none";
database_file = mkIf (cfg.settings.database_type == "sqlite") mkDefault "/var/lib/librespeed/speedtest.sqlite";
#librespeed-rust will fail to start if the following config parameters are omitted.
ipinfo_api_key = mkIf (!cfg.secrets ? "ipinfo_api_key") "";
stats_password = mkIf (!cfg.secrets ? "stats_password") "";
tls_key_file = mkDefault "";
tls_cet_file = mkDefault "";
tls_key_file = mkDefault "/run/credentials/librespeed.service/key.pem";
tls_cet_file = mkDefault "/run/credentials/librespeed.service/cert.pem";
enable_tls = mkDefault false;
enable_tls = mkDefault true;
} // rec {
database_type = mkDefault "none";
database_file = mkIf (database_type == "sqlite") "/var/lib/librespeed/speedtest.sqlite";
};
systemd.services = let
configFile = let
anyToString = arg: if (lib.isBool arg) then
mapValue = arg: if (lib.isBool arg) then
lib.boolToString arg
else if (lib.isInt arg) then
toString arg
@ -195,8 +201,9 @@ in {
in
with lib; pipe cfg.settings [
(filterAttrs (_: val: val != null))
(mapAttrs (name: val: "${path}=${anyToString val}"))
(concatLines attrValues)
(mapAttrs (name: val: "${name}=${mapValue val}"))
(attrValues)
(concatLines)
(pkgs.writeText "${cfg.package.name}-config.toml")
];
in {
@ -239,6 +246,11 @@ in {
DynamicUser = true;
LoadCredential = [
"cert.pem:${config.security.acme.certs.${cfg.domain}.directory}/cert.pem"
"key.pem:${config.security.acme.certs.${cfg.domain}.directory}/key.pem"
];
ExecStartPre = lib.mkIf (!cfg.secrets ? "ipinfo_api_key") "${lib.getExe cfg.package} --update-ipdb";
ExecStart = "${lib.getExe cfg.package} -c ${if (cfg.secrets == {}) then configFile else "\${RUNTIME_DIRECTORY%%:*}/config.toml"}";
WorkingDirectory = "/var/cache/librespeed";

View file

@ -32,5 +32,6 @@ rustPlatform.buildRustPackage {
homepage = "https://github.com/librespeed/speedtest-rust";
license = lib.licenses.lgpl3Plus;
maintainers = with lib.maintainers; [ snaki ];
mainProgram = "librespeed-rs";
};
}