From 58e0708ff9b0be55f7340564781f15db36b4eac8 Mon Sep 17 00:00:00 2001 From: emily Date: Fri, 27 Sep 2024 00:06:27 +0200 Subject: [PATCH 1/3] librespeed,graphical: minor fixes --- config/services/librespeed.nix | 3 +- config/services/nginx.nix | 6 ++++ modules/graphical/hyprland.nix | 2 +- modules/librespeed/default.nix | 52 +++++++++++++++++++++----------- pkgs/librespeed-go/default.nix | 34 +++++++++++++++++++++ pkgs/librespeed-rust/default.nix | 1 + pkgs/overlay.nix | 1 + 7 files changed, 79 insertions(+), 20 deletions(-) create mode 100644 pkgs/librespeed-go/default.nix diff --git a/config/services/librespeed.nix b/config/services/librespeed.nix index 8ace17d..a09cbd0 100644 --- a/config/services/librespeed.nix +++ b/config/services/librespeed.nix @@ -1,6 +1,7 @@ -{ ... }: { +{ pkgs, ... }: { services.librespeed = { enable = true; + package = pkgs.librespeed-go; domain = "speed.kyouma.net"; }; } diff --git a/config/services/nginx.nix b/config/services/nginx.nix index 6f8e773..1a11e0a 100644 --- a/config/services/nginx.nix +++ b/config/services/nginx.nix @@ -34,5 +34,11 @@ add_header Referrer-Policy "same-origin" always; #add_header Content-Security-Policy "script-src 'self'; object-src 'none'; base-uri 'none';" always; ''; + eventsConfig = '' + multi_accept on; + ''; + appendConfig = '' + worker_processes auto; + ''; }; } diff --git a/modules/graphical/hyprland.nix b/modules/graphical/hyprland.nix index 9c05672..96dafe6 100644 --- a/modules/graphical/hyprland.nix +++ b/modules/graphical/hyprland.nix @@ -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 = [ diff --git a/modules/librespeed/default.nix b/modules/librespeed/default.nix index 2214525..f5ad429 100644 --- a/modules/librespeed/default.nix +++ b/modules/librespeed/default.nix @@ -107,10 +107,10 @@ in { ''; default = {}; type = with types; nullOr (attrsOf (oneOf [ - bool + (nullOr bool) int str - null + package ])); }; }; @@ -130,11 +130,19 @@ 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; + extraConfig = '' + proxy_cache off; + proxy_buffering off; + proxy_request_buffering off; + ''; }; enableACME = true; forceSSL = true; + extraConfig = '' + gzip off; + ''; }; }; security.acme.certs = lib.mkIf cfg.configureNginx { @@ -144,7 +152,7 @@ in { services.librespeed.servers = lib.mkIf (cfg.domain != null) [ { name = cfg.domain; - server = "https://${cfg.domain}"; + server = "//${cfg.domain}${lib.optionalString (!cfg.configureNginx) ":${toString cfg.settings.listen_port}"}"; } ]; services.librespeed.settings = let @@ -153,41 +161,48 @@ 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)} \ --replace-fail "TO BE FILLED BY DEVELOPER" ${lib.escapeShellArg (lib.escapeXML cfg.contactEmail)} ''; in { - speed_test_dir = assets; - bind_address = mkDefault (if cfg.configureNginx then "127.0.0.1" else "0.0.0.0"); + #speed_test_dir = assets; + assets_path = assets; + bind_address = mkDefault (if cfg.configureNginx then "::1" else "::"); listen_port = mkDefault 8989; - base_url = mkDefault "backend"; - worker_threads = mkDefault "auto"; + #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"; + server_lat = 0; + server_lng = 0; + proxyprotocol_port = 0; + redact_ip_addresses = false; #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 ""; + #tls_cet_file = mkDefault ""; enable_tls = mkDefault false; + } // rec { + database_type = mkDefault "none"; + database_file = mkIf (database_type == "sqlite") (mkDefault "/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 +210,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,7 +255,7 @@ in { DynamicUser = true; - ExecStartPre = lib.mkIf (!cfg.secrets ? "ipinfo_api_key") "${lib.getExe cfg.package} --update-ipdb"; + #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"; RuntimeDirectory = "librespeed"; diff --git a/pkgs/librespeed-go/default.nix b/pkgs/librespeed-go/default.nix new file mode 100644 index 0000000..8b096bb --- /dev/null +++ b/pkgs/librespeed-go/default.nix @@ -0,0 +1,34 @@ +{ + lib, + fetchFromGitHub, + buildGoModule, +}: +let + version = "1.1.5"; + src = fetchFromGitHub { + owner = "librespeed"; + repo = "speedtest-go"; + rev = "refs/tags/v${version}"; + hash = "sha256-ywGrodl/mj/WB25F0TKVvaV0PV4lgc+KEj0x/ix9HT8="; + }; +in +buildGoModule { + pname = "librespeed-go"; + inherit version src; + + vendorHash = "sha256-ev5TEv8u+tx7xIvNaK8b5iq2XXF6I37Fnrr8mb+N2WM="; + + ldflags = [ "-w" "-s" ]; + + postInstall = '' + cp -r web/assets $out/ + ''; + + meta = { + description = "A very lightweight speed test implementation in Go."; + homepage = "https://github.com/librespeed/speedtest-go"; + license = lib.licenses.lgpl3Plus; + maintainers = with lib.maintainers; [ snaki ]; + mainProgram = "speedtest"; + }; +} diff --git a/pkgs/librespeed-rust/default.nix b/pkgs/librespeed-rust/default.nix index 8fc838d..a09896b 100644 --- a/pkgs/librespeed-rust/default.nix +++ b/pkgs/librespeed-rust/default.nix @@ -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"; }; } diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix index 4ffc4eb..644d380 100644 --- a/pkgs/overlay.nix +++ b/pkgs/overlay.nix @@ -4,4 +4,5 @@ final: prev: { update-nixfiles = final.callPackage ./update-nixfiles/default.nix {}; build-worker-oci = final.callPackage ./build-worker-oci/default.nix {}; librespeed-rust = final.callPackage ./librespeed-rust/default.nix {}; + librespeed-go = final.callPackage ./librespeed-go/default.nix {}; } From 72dfd80e05af47485e90a4493a6c9e43bbf4aff5 Mon Sep 17 00:00:00 2001 From: Update Bot Date: Fri, 27 Sep 2024 04:20:57 +0200 Subject: [PATCH 2/3] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/c1c472f4cd91e4b0703e02810a8c7ed30186b6fa' (2024-09-25) → 'github:nix-community/disko/67dc29be3036cc888f0b9d4f0a788ee0f6768700' (2024-09-26) • Updated input 'home-manager': 'github:nix-community/home-manager/1e22ef1518fb175d762006f9cae7f6312b8caedb' (2024-09-25) → 'github:nix-community/home-manager/ffe2d07e771580a005e675108212597e5b367d2d' (2024-09-26) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/9357f4f23713673f310988025d9dc261c20e70c6' (2024-09-21) → 'github:nixos/nixpkgs/30439d93eb8b19861ccbe3e581abf97bdc91b093' (2024-09-23) • Updated input 'nixvim': 'github:nix-community/nixvim/7bda0f1ce49e9da252bcee20b5f700e6dcd3cf8d' (2024-09-25) → 'github:nix-community/nixvim/cb2b76c1a9ec067ed0c449080f4973fecf8532ef' (2024-09-27) • Updated input 'nixvim/treefmt-nix': 'github:numtide/treefmt-nix/ee41a466c2255a3abe6bc50fc6be927cdee57a9f' (2024-09-19) → 'github:numtide/treefmt-nix/1bff2ba6ec22bc90e9ad3f7e94cca0d37870afa3' (2024-09-25) • Updated input 'stylix': 'github:danth/stylix/cf8b6e2d4e8aca8ef14b839a906ab5eb98b08561' (2024-09-24) → 'github:danth/stylix/e3eb7fdf8d129ff3676dfbc84ee1262322ca6fb4' (2024-09-26) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index fa562e5..bb47470 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1727249977, - "narHash": "sha256-lAqOCDI4B6hA+t+KHSm/Go8hQF/Ob5sgXaIRtMAnMKw=", + "lastModified": 1727359191, + "narHash": "sha256-5PltTychnExFwzpEnY3WhOywaMV/M6NxYI/y3oXuUtw=", "owner": "nix-community", "repo": "disko", - "rev": "c1c472f4cd91e4b0703e02810a8c7ed30186b6fa", + "rev": "67dc29be3036cc888f0b9d4f0a788ee0f6768700", "type": "github" }, "original": { @@ -521,11 +521,11 @@ ] }, "locked": { - "lastModified": 1727246346, - "narHash": "sha256-TcUaKtya339Asu+g6KTJ8h7KiKcKXKp2V+At+7tksyY=", + "lastModified": 1727383923, + "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=", "owner": "nix-community", "repo": "home-manager", - "rev": "1e22ef1518fb175d762006f9cae7f6312b8caedb", + "rev": "ffe2d07e771580a005e675108212597e5b367d2d", "type": "github" }, "original": { @@ -874,11 +874,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1726937504, - "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=", + "lastModified": 1727122398, + "narHash": "sha256-o8VBeCWHBxGd4kVMceIayf5GApqTavJbTa44Xcg5Rrk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9357f4f23713673f310988025d9dc261c20e70c6", + "rev": "30439d93eb8b19861ccbe3e581abf97bdc91b093", "type": "github" }, "original": { @@ -905,11 +905,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1727286212, - "narHash": "sha256-iab+k8m6+MBkwQoyqMcMYggwILHCkMSkgNYd1GN0FbM=", + "lastModified": 1727402188, + "narHash": "sha256-AxZVGgsWBDbhO1JVrYoHWG2IW5Se8JjJhC93Yfst4AM=", "owner": "nix-community", "repo": "nixvim", - "rev": "7bda0f1ce49e9da252bcee20b5f700e6dcd3cf8d", + "rev": "cb2b76c1a9ec067ed0c449080f4973fecf8532ef", "type": "github" }, "original": { @@ -1019,11 +1019,11 @@ "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1727218376, - "narHash": "sha256-vRYd45uOqzXDaSt8M50hLcsBqIWbEMsflfHk/a1nYA8=", + "lastModified": 1727362643, + "narHash": "sha256-Ceiq/aYjRlRBU677lBaemn8ZU2Jpr08Iso6UlBc9nFc=", "owner": "danth", "repo": "stylix", - "rev": "cf8b6e2d4e8aca8ef14b839a906ab5eb98b08561", + "rev": "e3eb7fdf8d129ff3676dfbc84ee1262322ca6fb4", "type": "github" }, "original": { @@ -1170,11 +1170,11 @@ ] }, "locked": { - "lastModified": 1726734507, - "narHash": "sha256-VUH5O5AcOSxb0uL/m34dDkxFKP6WLQ6y4I1B4+N3L2w=", + "lastModified": 1727252110, + "narHash": "sha256-3O7RWiXpvqBcCl84Mvqa8dXudZ1Bol1ubNdSmQt7nF4=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "ee41a466c2255a3abe6bc50fc6be927cdee57a9f", + "rev": "1bff2ba6ec22bc90e9ad3f7e94cca0d37870afa3", "type": "github" }, "original": { From f091338a53a09dfc59b15fd1ebc58cbe2f9bea52 Mon Sep 17 00:00:00 2001 From: Update Bot Date: Sat, 28 Sep 2024 04:20:53 +0200 Subject: [PATCH 3/3] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/d0cb432a9d28218df11cbd77d984a2a46caeb5ac' (2024-09-22) → 'github:nixos/nixos-hardware/d830ad47cc992b4a46b342bbc79694cbd0e980b2' (2024-09-27) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/30439d93eb8b19861ccbe3e581abf97bdc91b093' (2024-09-23) → 'github:nixos/nixpkgs/1925c603f17fc89f4c8f6bf6f631a802ad85d784' (2024-09-26) • Updated input 'nixvim': 'github:nix-community/nixvim/cb2b76c1a9ec067ed0c449080f4973fecf8532ef' (2024-09-27) → 'github:nix-community/nixvim/b5c19b6abb0fb0156b1cb76793b363e430e2cb47' (2024-09-27) • Updated input 'sops-nix': 'github:Mic92/sops-nix/e2d404a7ea599a013189aa42947f66cede0645c8' (2024-09-16) → 'github:Mic92/sops-nix/127a96f49ddc377be6ba76964411bab11ae27803' (2024-09-27) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index bb47470..6e7700a 100644 --- a/flake.lock +++ b/flake.lock @@ -743,11 +743,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1727040444, - "narHash": "sha256-19FNN5QT9Z11ZUMfftRplyNN+2PgcHKb3oq8KMW/hDA=", + "lastModified": 1727437159, + "narHash": "sha256-v4qLwEw5OmprgQZTT7KZMNU7JjXJzRypw8+Cw6++fWk=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d0cb432a9d28218df11cbd77d984a2a46caeb5ac", + "rev": "d830ad47cc992b4a46b342bbc79694cbd0e980b2", "type": "github" }, "original": { @@ -874,11 +874,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1727122398, - "narHash": "sha256-o8VBeCWHBxGd4kVMceIayf5GApqTavJbTa44Xcg5Rrk=", + "lastModified": 1727348695, + "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "30439d93eb8b19861ccbe3e581abf97bdc91b093", + "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", "type": "github" }, "original": { @@ -905,11 +905,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1727402188, - "narHash": "sha256-AxZVGgsWBDbhO1JVrYoHWG2IW5Se8JjJhC93Yfst4AM=", + "lastModified": 1727471696, + "narHash": "sha256-3r/VNQp5aJK9Gj8hKdfSYqeXcc0kqpfFYhEg8ioWttE=", "owner": "nix-community", "repo": "nixvim", - "rev": "cb2b76c1a9ec067ed0c449080f4973fecf8532ef", + "rev": "b5c19b6abb0fb0156b1cb76793b363e430e2cb47", "type": "github" }, "original": { @@ -985,11 +985,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1726524647, - "narHash": "sha256-qis6BtOOBBEAfUl7FMHqqTwRLB61OL5OFzIsOmRz2J4=", + "lastModified": 1727423009, + "narHash": "sha256-+4B/dQm2EnORIk0k2wV3aHGaE0WXTBjColXjj7qWh10=", "owner": "Mic92", "repo": "sops-nix", - "rev": "e2d404a7ea599a013189aa42947f66cede0645c8", + "rev": "127a96f49ddc377be6ba76964411bab11ae27803", "type": "github" }, "original": {