From a74c1d8585c5ae589a40c0ca313234d7c78d48a9 Mon Sep 17 00:00:00 2001 From: emily Date: Sun, 29 Sep 2024 17:47:40 +0200 Subject: [PATCH 1/3] librespeed: Fixes --- config/hosts/emilia/configuration.nix | 1 + config/hosts/seras/configuration.nix | 1 - config/services/librespeed.nix | 5 +- modules/default.nix | 14 +- modules/graphical/nixvim.nix | 1 - modules/librespeed/default.nix | 671 +++++++++++++++----------- pkgs/librespeed-rust/default.nix | 7 +- 7 files changed, 405 insertions(+), 295 deletions(-) diff --git a/config/hosts/emilia/configuration.nix b/config/hosts/emilia/configuration.nix index 61e2ea8..f4bceb0 100644 --- a/config/hosts/emilia/configuration.nix +++ b/config/hosts/emilia/configuration.nix @@ -7,6 +7,7 @@ ../../services/nginx.nix ../../services/uptime-kuma.nix ../../services/vaultwarden.nix + ../../services/librespeed.nix ./disko.nix ./hardware-configuration.nix ]; diff --git a/config/hosts/seras/configuration.nix b/config/hosts/seras/configuration.nix index 02f74fe..9d4b4af 100644 --- a/config/hosts/seras/configuration.nix +++ b/config/hosts/seras/configuration.nix @@ -8,7 +8,6 @@ ../../services/nginx.nix ../../services/hydra ../../services/update-nixfiles.nix - ../../services/librespeed.nix ]; boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; diff --git a/config/services/librespeed.nix b/config/services/librespeed.nix index a09cbd0..df18ffb 100644 --- a/config/services/librespeed.nix +++ b/config/services/librespeed.nix @@ -1,7 +1,8 @@ -{ pkgs, ... }: { +{ ... }: { services.librespeed = { enable = true; - package = pkgs.librespeed-go; + openFirewall = true; domain = "speed.kyouma.net"; + frontend.enable = true; }; } diff --git a/modules/default.nix b/modules/default.nix index d7bd395..c76c6dd 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,11 +1,5 @@ -{ ... }: { - imports = [ - ./deployment - ./graphical - ./librespeed - ./machine-type - ./nginx - ./ooklaserver - ./update-nixfiles - ]; +{ lib, ... }: let + mapModules = builtins.attrNames (lib.filterAttrs (_: type: type == "directory") (builtins.readDir ./.)); +in { + imports = builtins.map (dir: ./${dir}) mapModules; } diff --git a/modules/graphical/nixvim.nix b/modules/graphical/nixvim.nix index 3c1fb10..a947ee4 100644 --- a/modules/graphical/nixvim.nix +++ b/modules/graphical/nixvim.nix @@ -187,7 +187,6 @@ enable = true; sources.diagnostics = { pylint.enable = true; - statix.enable = true; }; sources.formatting = { nixfmt.enable = true; diff --git a/modules/librespeed/default.nix b/modules/librespeed/default.nix index f5ad429..88e1986 100644 --- a/modules/librespeed/default.nix +++ b/modules/librespeed/default.nix @@ -1,293 +1,408 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: let cfg = config.services.librespeed; -in { - options.services.librespeed = let - inherit (lib) mkOption types; - in { - enable = lib.mkEnableOption "LibreSpeed server"; - package = lib.mkPackageOption pkgs "librespeed-rust" {}; - configureNginx = mkOption { - description = "Configure nginx as a reverse proxy for LibreSpeed."; - default = if (cfg.domain != null) then true else false; - type = types.bool; - }; - contactEmail = mkOption { - description = "Email address listed in the privacy policy."; - default = if (cfg.domain != null) then "webmaster@${cfg.domain}" else "webmaster@${config.networking.fqdn}"; - type = types.str; - }; - domain = mkOption { - description = '' - If not `null`, this will add an entry to `services.librespeed.servers` and - configure an nginx reverse proxy at the specified FQDN, unless explicitly disabled. - ''; - default = null; - type = with types; nullOr nonEmptyStr; - }; - openFirewall = mkOption { - description = '' - Whether to open the firewall for the specified port. - This is only necessary if no reverse proxy is used. - ''; - default = false; - type = types.bool; - }; - pageTitle = mkOption { - description = "Title of the webpage."; - default = "LibreSpeed"; - type = types.str; - }; - secrets = mkOption { - description = '' - Attribute set of filesystem paths. - The contents of the specified paths will be read at service start time and merged with the attributes provided in `settings`. - ''; - default = {}; - type = with types; nullOr (attrsOf path); - }; - servers = mkOption { - description = "LibreSpeed servers that should apper in the server list."; - type = types.listOf (types.submodule { - options = let - inherit (types) nonEmptyStr; - in { - name = mkOption { - description = "Name shown in the server list."; - type = nonEmptyStr; - }; - server = mkOption { - description = "URL to the server. You may use `//` instead of `http://` or `https://`."; - type = nonEmptyStr; - }; - dlURL = mkOption { - description = '' - URL path to download test on this server. - Append `.php` to the default value if the server uses the php implementation. - ''; - default = "backend/garbage"; - type = nonEmptyStr; - }; - ulURL = mkOption { - description = '' - URL path to upload test on this server. - Append `.php` to the default value if the server uses the php implementation. - ''; - default = "backend/empty"; - type = nonEmptyStr; - }; - pingURL = mkOption { - description = '' - URL path to latency/jitter test on this server. - Append `.php` to the default value if the server uses the php implementation. - ''; - default = "backend/empty"; - type = nonEmptyStr; - }; - getIpURL = mkOption { - description = '' - URL path to IP lookup on this server. - Append `.php` to the default value if the server uses the php implementation. - ''; - default = "backend/getIP"; - type = nonEmptyStr; - }; - }; - }); - }; - settings = mkOption { - description = '' - LibreSpeed configuration written as Nix expression. - All values set to `null` will be excluded from the evaluated config. - This is useful if you want to omit certain defaults when using a different LibreSpeed implementation. - - See [github.com/librespeed][librespeed] for configuration help. - - [librespeed]: https://github.com/librespeed/speedtest-rust - ''; - default = {}; - type = with types; nullOr (attrsOf (oneOf [ - (nullOr bool) - int - str - package - ])); - }; - }; - config = lib.mkIf cfg.enable { - assertions = [ - { - assertion = cfg.configureNginx -> cfg.domain != null; - message = '' - `services.librespeed.configureNginx` requires `services.librespeed.domain` to be set. +in +{ + options.services.librespeed = + let + inherit (lib) mkOption types; + in + { + enable = lib.mkEnableOption "LibreSpeed server"; + package = lib.mkPackageOption pkgs "librespeed-rust" { }; + domain = mkOption { + description = '' + If not `null`, this will add an entry to `services.librespeed.servers` and + configure librespeed to use TLS. ''; - } - ]; + default = null; + type = with types; nullOr nonEmptyStr; + }; + downloadIPDB = mkOption { + description = '' + Whether to download the IP info database before starting librespeed. + Disable this if you want to use the Go implementation. + ''; + default = !(cfg.secrets ? "ipinfo_api_key"); + defaultText = lib.literalExpression ''!(cfg.secrets ? "ipinfo_api_key")''; + type = types.bool; + }; + openFirewall = mkOption { + description = '' + Whether to open the firewall for the specified port. + ''; + default = false; + type = types.bool; + }; + secrets = mkOption { + description = '' + Attribute set of filesystem paths. + The contents of the specified paths will be read at service start time and merged with the attributes provided in `settings`. + ''; + default = { }; + type = with types; nullOr (attrsOf path); + }; + settings = mkOption { + description = '' + LibreSpeed configuration written as Nix expression. + All values set to `null` will be excluded from the evaluated config. + This is useful if you want to omit certain defaults when using a different LibreSpeed implementation. - networking.firewall = lib.mkIf (cfg.openFirewall) { - allowedTCPPorts = [ cfg.settings.listen_port ]; - }; - services.nginx.virtualHosts = lib.mkIf cfg.configureNginx { - ${cfg.domain} = { - locations."/" = { - proxyPass = "http://[::1]:${toString cfg.settings.listen_port}"; - recommendedProxySettings = true; - extraConfig = '' - proxy_cache off; - proxy_buffering off; - proxy_request_buffering off; + See [github.com/librespeed][librespeed] for configuration help. + + [librespeed]: https://github.com/librespeed/speedtest-rust + ''; + default = { }; + type = + with types; + nullOr ( + attrsOf (oneOf [ + (nullOr bool) + int + str + package + ]) + ); + }; + frontend = { + enable = lib.mkEnableOption '' + Enables the LibreSpeed frontend and adds a nginx virtual host if + not explicetly disabled and `services.librespeed.domain` is not `null`. + ''; + contactEmail = mkOption { + description = "Email address listed in the privacy policy."; + default = + if (cfg.domain != null) then "webmaster@${cfg.domain}" else "webmaster@${config.networking.fqdn}"; + defaultText = lib.literalExpression '' + if (config.services.librespeed.domain != null) then + "webmaster@''${config.services.librespeed.domain}" + else + "webmaster@''${config.networking.fqdn}"; ''; + type = types.str; }; - enableACME = true; - forceSSL = true; - extraConfig = '' - gzip off; - ''; - }; - }; - security.acme.certs = lib.mkIf cfg.configureNginx { - ${cfg.domain} = {}; - }; + pageTitle = mkOption { + description = "Title of the webpage."; + default = "LibreSpeed"; + type = types.str; + }; + useNginx = mkOption { + description = '' + Configure nginx for the LibreSpeed frontend. + This will only create a virtual host for the frontend and won't proxy all requests because + the reported upload and download speeds are inaccurate if proxied. + ''; + default = cfg.domain != null; + defaultText = lib.literalExpression "config.services.librespeed.domain != null"; + type = types.bool; + }; + settings = mkOption { + description = '' + Override default settings of the speedtest web client. + See [speedtest_worker.js][link] for a list of possible values. - services.librespeed.servers = lib.mkIf (cfg.domain != null) [ - { - name = cfg.domain; - server = "//${cfg.domain}${lib.optionalString (!cfg.configureNginx) ":${toString cfg.settings.listen_port}"}"; - } - ]; - services.librespeed.settings = let - inherit (lib) mkDefault mkIf; - - assets = pkgs.runCommand "librespeed-assets" { - preferLocal = true; - - serversList = '' - function get_servers() { - return ${builtins.toJSON cfg.servers} - } - ''; - } '' - cp -r ${pkgs.librespeed-rust}/assets $out - 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; - assets_path = assets; - bind_address = mkDefault (if cfg.configureNginx then "::1" else "::"); - listen_port = mkDefault 8989; - #base_url = mkDefault "backend"; - #worker_threads = mkDefault "auto"; - - 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 ""; - - 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 - mapValue = arg: if (lib.isBool arg) then - lib.boolToString arg - else if (lib.isInt arg) then - toString arg - else "\"${lib.escape [ "\"" ] (toString arg)}\""; - in - with lib; pipe cfg.settings [ - (filterAttrs (_: val: val != null)) - (mapAttrs (name: val: "${name}=${mapValue val}")) - (attrValues) - (concatLines) - (pkgs.writeText "${cfg.package.name}-config.toml") - ]; - in { - librespeed-secrets = lib.mkIf (cfg.secrets != {}) { - description = "LibreSpeed secret helper"; - - ExecStart = let - script = pkgs.writeShellApplication { - name = "librespeed-secrets"; - runtimeInputs = [ pkgs.coreutils ]; - text = '' - cp ${configFile} ''${RUNTIME_DIRECTORY%%:*}/config.toml - '' + lib.pipe cfg.secrets [ - (lib.mapAttrs (name: file: '' - cat >>''${RUNTIME_DIRECTORY%%:*}/config.toml <$out/servers_list.js <<<"$serversList" + substitute ${pkgs.librespeed-rust}/assets/index.html $out/index.html \ + --replace-fail "s.setParameter(\"telemetry_level\",\"basic\"); //enable telemetry" "override_settings();" \ + --replace-fail "LibreSpeed Example" ${lib.escapeShellArg (lib.escapeXML cfg.frontend.pageTitle)} \ + --replace-fail "PUT@YOUR_EMAIL.HERE" ${lib.escapeShellArg (lib.escapeXML cfg.frontend.contactEmail)} \ + --replace-fail "TO BE FILLED BY DEVELOPER" ${lib.escapeShellArg (lib.escapeXML cfg.frontend.contactEmail)} + ''; + in + { + assertions = [ + { + assertion = cfg.frontend.useNginx -> cfg.domain != null; + message = '' + `services.librespeed.frontend.useNginx` requires `services.librespeed.frontend.domain` to be set. + ''; + } + ]; + + networking.firewall = lib.mkIf cfg.openFirewall { + allowedTCPPorts = [ cfg.settings.listen_port ]; + }; + services.nginx.virtualHosts = lib.mkIf (cfg.frontend.enable && cfg.frontend.useNginx) { + ${cfg.domain} = { + locations."/".root = librespeedAssets; + locations."= /servers.json".return = "200 '${builtins.toJSON cfg.frontend.servers}'"; + locations."/backend/".return = "301 https://$host:${toString cfg.settings.listen_port}$request_uri"; + enableACME = true; + forceSSL = true; + }; + }; + security.acme.certs = lib.mkIf (cfg.domain != null) { + ${cfg.domain} = { + reloadServices = [ "librespeed.service" ]; + webroot = "/var/lib/acme/acme-challenge"; + }; + }; + + services.librespeed.frontend.servers = lib.mkIf (cfg.frontend.enable && (cfg.domain != null)) [ + { + name = cfg.domain; + server = "//${cfg.domain}:${toString cfg.settings.listen_port}"; + } + ]; + + services.librespeed.settings = + let + inherit (lib) mkDefault mkIf; + in + { + assets_path = + if (cfg.frontend.enable && !cfg.frontend.useNginx) then + librespeedAssets + else + pkgs.writeTextDir "index.html" ""; + + bind_address = mkDefault "::"; + listen_port = mkDefault 8989; + base_url = mkDefault "backend"; + worker_threads = mkDefault "auto"; + + database_type = mkDefault "none"; + database_file = 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_cert_file = + if (cfg.domain != null) then + (mkDefault "/run/credentials/librespeed.service/cert.pem") + else + (mkDefault ""); + tls_key_file = + if (cfg.domain != null) then + (mkDefault "/run/credentials/librespeed.service/key.pem") + else + (mkDefault ""); + + enable_tls = mkDefault (cfg.domain != null); + }; + + systemd.services = + let + configFile = + let + mapValue = + arg: + if (lib.isBool arg) then + lib.boolToString arg + else if (lib.isInt arg) then + toString arg + else + "\"${lib.escape [ "\"" ] (toString arg)}\""; + in + with lib; + pipe cfg.settings [ + (filterAttrs (_: val: val != null)) + (mapAttrs (name: val: "${name}=${mapValue val}")) + (attrValues) + (concatLines) + (pkgs.writeText "${cfg.package.name}-config.toml") + ]; + in + { + librespeed-secrets = lib.mkIf (cfg.secrets != { }) { + description = "LibreSpeed secret helper"; + + ExecStart = + let + script = pkgs.writeShellApplication { + name = "librespeed-secrets"; + runtimeInputs = [ pkgs.coreutils ]; + text = + '' + cp ${configFile} ''${RUNTIME_DIRECTORY%%:*}/config.toml + '' + + lib.pipe cfg.secrets [ + (lib.mapAttrs ( + name: file: '' + cat >>''${RUNTIME_DIRECTORY%%:*}/config.toml < Date: Wed, 2 Oct 2024 04:20:25 +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/67dc29be3036cc888f0b9d4f0a788ee0f6768700' (2024-09-26) → 'github:nix-community/disko/6c5ba9ec9d470c1ca29e7735762c9c366e28f7f5' (2024-10-01) • Updated input 'nixos-hardware': 'github:nixos/nixos-hardware/d830ad47cc992b4a46b342bbc79694cbd0e980b2' (2024-09-27) → 'github:nixos/nixos-hardware/11c43c830e533dad1be527ecce379fcf994fbbb5' (2024-09-30) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/1925c603f17fc89f4c8f6bf6f631a802ad85d784' (2024-09-26) → 'github:nixos/nixpkgs/06cf0e1da4208d3766d898b7fdab6513366d45b9' (2024-09-29) • Updated input 'nixvim': 'github:nix-community/nixvim/b5c19b6abb0fb0156b1cb76793b363e430e2cb47' (2024-09-27) → 'github:nix-community/nixvim/5f4a4b47597d3b9ac26c41ff4e8da28fa662f200' (2024-09-29) • Updated input 'nixvim/git-hooks': 'github:cachix/git-hooks.nix/4e743a6920eab45e8ba0fbe49dc459f1423a4b74' (2024-09-19) → 'github:cachix/git-hooks.nix/85f7a7177c678de68224af3402ab8ee1bcee25c8' (2024-09-28) • Updated input 'nixvim/nix-darwin': 'github:lnl7/nix-darwin/bd7d1e3912d40f799c5c0f7e5820ec950f1e0b3d' (2024-09-22) → 'github:lnl7/nix-darwin/f2e1c4aa29fc211947c3a7113cba1dd707433b70' (2024-09-28) • Updated input 'nixvim/nuschtosSearch': 'github:NuschtOS/search/3b7dd61b365ca45380707453758a45f2e9977be3' (2024-09-22) → 'github:NuschtOS/search/9f7426e532ef8dfc839c4a3fcc567b13a20a70d3' (2024-09-27) • Updated input 'nixvim/treefmt-nix': 'github:numtide/treefmt-nix/1bff2ba6ec22bc90e9ad3f7e94cca0d37870afa3' (2024-09-25) → 'github:numtide/treefmt-nix/879b29ae9a0378904fbbefe0dadaed43c8905754' (2024-09-27) • Updated input 'sops-nix': 'github:Mic92/sops-nix/127a96f49ddc377be6ba76964411bab11ae27803' (2024-09-27) → 'github:Mic92/sops-nix/3198a242e547939c5e659353551b0668ec150268' (2024-09-30) • Updated input 'stylix': 'github:danth/stylix/e3eb7fdf8d129ff3676dfbc84ee1262322ca6fb4' (2024-09-26) → 'github:danth/stylix/e7e97059776da7e34b739415a7bc8f80f606b803' (2024-09-30) --- flake.lock | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index 6e7700a..a01da24 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1727359191, - "narHash": "sha256-5PltTychnExFwzpEnY3WhOywaMV/M6NxYI/y3oXuUtw=", + "lastModified": 1727809780, + "narHash": "sha256-7W5HE2IRiZglMBKcn9JtC6bveE6/F7IzQyV2XDanGFA=", "owner": "nix-community", "repo": "disko", - "rev": "67dc29be3036cc888f0b9d4f0a788ee0f6768700", + "rev": "6c5ba9ec9d470c1ca29e7735762c9c366e28f7f5", "type": "github" }, "original": { @@ -462,11 +462,11 @@ ] }, "locked": { - "lastModified": 1726745158, - "narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=", + "lastModified": 1727514110, + "narHash": "sha256-0YRcOxJG12VGDFH8iS8pJ0aYQQUAgo/r3ZAL+cSh9nk=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74", + "rev": "85f7a7177c678de68224af3402ab8ee1bcee25c8", "type": "github" }, "original": { @@ -662,11 +662,11 @@ ] }, "locked": { - "lastModified": 1727003835, - "narHash": "sha256-Cfllbt/ADfO8oxbT984MhPHR6FJBaglsr1SxtDGbpec=", + "lastModified": 1727507295, + "narHash": "sha256-I/FrX1peu4URoj5T5odfuKR2rm4GjYJJpCGF9c0/lDA=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "bd7d1e3912d40f799c5c0f7e5820ec950f1e0b3d", + "rev": "f2e1c4aa29fc211947c3a7113cba1dd707433b70", "type": "github" }, "original": { @@ -743,11 +743,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1727437159, - "narHash": "sha256-v4qLwEw5OmprgQZTT7KZMNU7JjXJzRypw8+Cw6++fWk=", + "lastModified": 1727665282, + "narHash": "sha256-oKtfbQB1MBypqIyzkC8QCQcVGOa1soaXaGgcBIoh14o=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d830ad47cc992b4a46b342bbc79694cbd0e980b2", + "rev": "11c43c830e533dad1be527ecce379fcf994fbbb5", "type": "github" }, "original": { @@ -874,11 +874,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1727348695, - "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", + "lastModified": 1727634051, + "narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", + "rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9", "type": "github" }, "original": { @@ -905,11 +905,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1727471696, - "narHash": "sha256-3r/VNQp5aJK9Gj8hKdfSYqeXcc0kqpfFYhEg8ioWttE=", + "lastModified": 1727645871, + "narHash": "sha256-Os3PAThU5XliKkKa+SHsFyV/EsCHogHcYONmpzb6500=", "owner": "nix-community", "repo": "nixvim", - "rev": "b5c19b6abb0fb0156b1cb76793b363e430e2cb47", + "rev": "5f4a4b47597d3b9ac26c41ff4e8da28fa662f200", "type": "github" }, "original": { @@ -927,11 +927,11 @@ ] }, "locked": { - "lastModified": 1726995581, - "narHash": "sha256-lgsE/CTkZk9OIiFGEIrxXZQ7Feiv41dqlN7pEfTdgew=", + "lastModified": 1727452028, + "narHash": "sha256-ehl/A4HQFRyqj1Fk7cl+dgSf/2Fb1jLwWJtZaMU6RfU=", "owner": "NuschtOS", "repo": "search", - "rev": "3b7dd61b365ca45380707453758a45f2e9977be3", + "rev": "9f7426e532ef8dfc839c4a3fcc567b13a20a70d3", "type": "github" }, "original": { @@ -985,11 +985,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1727423009, - "narHash": "sha256-+4B/dQm2EnORIk0k2wV3aHGaE0WXTBjColXjj7qWh10=", + "lastModified": 1727734513, + "narHash": "sha256-i47LQwoGCVQq4upV2YHV0OudkauHNuFsv306ualB/Sw=", "owner": "Mic92", "repo": "sops-nix", - "rev": "127a96f49ddc377be6ba76964411bab11ae27803", + "rev": "3198a242e547939c5e659353551b0668ec150268", "type": "github" }, "original": { @@ -1019,11 +1019,11 @@ "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1727362643, - "narHash": "sha256-Ceiq/aYjRlRBU677lBaemn8ZU2Jpr08Iso6UlBc9nFc=", + "lastModified": 1727723275, + "narHash": "sha256-k4HrG8TJQ0RqDS1tlDz71kvWFBNQ7qZI9T5Z0qLR85Y=", "owner": "danth", "repo": "stylix", - "rev": "e3eb7fdf8d129ff3676dfbc84ee1262322ca6fb4", + "rev": "e7e97059776da7e34b739415a7bc8f80f606b803", "type": "github" }, "original": { @@ -1170,11 +1170,11 @@ ] }, "locked": { - "lastModified": 1727252110, - "narHash": "sha256-3O7RWiXpvqBcCl84Mvqa8dXudZ1Bol1ubNdSmQt7nF4=", + "lastModified": 1727431250, + "narHash": "sha256-uGRlRT47ecicF9iLD1G3g43jn2e+b5KaMptb59LHnvM=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "1bff2ba6ec22bc90e9ad3f7e94cca0d37870afa3", + "rev": "879b29ae9a0378904fbbefe0dadaed43c8905754", "type": "github" }, "original": { From a698502f255506a4ee974c1c4070452d95c88d36 Mon Sep 17 00:00:00 2001 From: Update Bot Date: Thu, 3 Oct 2024 04:20:51 +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 'disko': 'github:nix-community/disko/6c5ba9ec9d470c1ca29e7735762c9c366e28f7f5' (2024-10-01) → 'github:nix-community/disko/568727a884ae7cd9f266bd19aea655def8cafd78' (2024-10-02) • Updated input 'home-manager': 'github:nix-community/home-manager/ffe2d07e771580a005e675108212597e5b367d2d' (2024-09-26) → 'github:nix-community/home-manager/437ec62009fa8ceb684eb447d455ffba25911cf9' (2024-10-01) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/06cf0e1da4208d3766d898b7fdab6513366d45b9' (2024-09-29) → 'github:nixos/nixpkgs/27e30d177e57d912d614c88c622dcfdb2e6e6515' (2024-10-01) • Updated input 'nixvim': 'github:nix-community/nixvim/5f4a4b47597d3b9ac26c41ff4e8da28fa662f200' (2024-09-29) → 'github:nix-community/nixvim/0ca98d02104f7f0a703787a7a080a570b7f1bedd' (2024-10-02) • Updated input 'nixvim/flake-parts': 'github:hercules-ci/flake-parts/bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a' (2024-09-12) → 'github:hercules-ci/flake-parts/3d04084d54bedc3d6b8b736c70ef449225c361b1' (2024-10-01) • Updated input 'nixvim/git-hooks': 'github:cachix/git-hooks.nix/85f7a7177c678de68224af3402ab8ee1bcee25c8' (2024-09-28) → 'github:cachix/git-hooks.nix/2f5ae3fc91db865eff2c5a418da85a0fbe6238a3' (2024-10-01) • Updated input 'nixvim/nix-darwin': 'github:lnl7/nix-darwin/f2e1c4aa29fc211947c3a7113cba1dd707433b70' (2024-09-28) → 'github:lnl7/nix-darwin/f61d5f2051a387a15817007220e9fb3bbead57b3' (2024-09-30) • Updated input 'nixvim/nuschtosSearch': 'github:NuschtOS/search/9f7426e532ef8dfc839c4a3fcc567b13a20a70d3' (2024-09-27) → 'github:NuschtOS/search/c3c3928b8de7d300c34e9d90fdc19febd1a32062' (2024-09-29) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index a01da24..6190625 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1727809780, - "narHash": "sha256-7W5HE2IRiZglMBKcn9JtC6bveE6/F7IzQyV2XDanGFA=", + "lastModified": 1727872461, + "narHash": "sha256-4Pw3fVhN6xey5+2gUBm9nQJAjBqivffr+a5ZsXYjzJ8=", "owner": "nix-community", "repo": "disko", - "rev": "6c5ba9ec9d470c1ca29e7735762c9c366e28f7f5", + "rev": "568727a884ae7cd9f266bd19aea655def8cafd78", "type": "github" }, "original": { @@ -326,11 +326,11 @@ ] }, "locked": { - "lastModified": 1726153070, - "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", "type": "github" }, "original": { @@ -462,11 +462,11 @@ ] }, "locked": { - "lastModified": 1727514110, - "narHash": "sha256-0YRcOxJG12VGDFH8iS8pJ0aYQQUAgo/r3ZAL+cSh9nk=", + "lastModified": 1727805723, + "narHash": "sha256-b8flytpuc4Ey/g3mcvpS/ICORcD4h56QDZeP5LogevY=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "85f7a7177c678de68224af3402ab8ee1bcee25c8", + "rev": "2f5ae3fc91db865eff2c5a418da85a0fbe6238a3", "type": "github" }, "original": { @@ -521,11 +521,11 @@ ] }, "locked": { - "lastModified": 1727383923, - "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=", + "lastModified": 1727817100, + "narHash": "sha256-dlyV9/eiWkm/Y/t2+k4CFZ29tBvCANmJogEYaHeAOTw=", "owner": "nix-community", "repo": "home-manager", - "rev": "ffe2d07e771580a005e675108212597e5b367d2d", + "rev": "437ec62009fa8ceb684eb447d455ffba25911cf9", "type": "github" }, "original": { @@ -662,11 +662,11 @@ ] }, "locked": { - "lastModified": 1727507295, - "narHash": "sha256-I/FrX1peu4URoj5T5odfuKR2rm4GjYJJpCGF9c0/lDA=", + "lastModified": 1727707210, + "narHash": "sha256-8XZp5XO2FC6INZEZ2WlwErtvFVpl45ACn8CJ2hfTA0Y=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "f2e1c4aa29fc211947c3a7113cba1dd707433b70", + "rev": "f61d5f2051a387a15817007220e9fb3bbead57b3", "type": "github" }, "original": { @@ -874,11 +874,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1727634051, - "narHash": "sha256-S5kVU7U82LfpEukbn/ihcyNt2+EvG7Z5unsKW9H/yFA=", + "lastModified": 1727802920, + "narHash": "sha256-HP89HZOT0ReIbI7IJZJQoJgxvB2Tn28V6XS3MNKnfLs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "06cf0e1da4208d3766d898b7fdab6513366d45b9", + "rev": "27e30d177e57d912d614c88c622dcfdb2e6e6515", "type": "github" }, "original": { @@ -905,11 +905,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1727645871, - "narHash": "sha256-Os3PAThU5XliKkKa+SHsFyV/EsCHogHcYONmpzb6500=", + "lastModified": 1727871072, + "narHash": "sha256-t+YLQwBB1soQnVjT6d7nQq4Tidaw7tpB8i6Zvpc+Zbs=", "owner": "nix-community", "repo": "nixvim", - "rev": "5f4a4b47597d3b9ac26c41ff4e8da28fa662f200", + "rev": "0ca98d02104f7f0a703787a7a080a570b7f1bedd", "type": "github" }, "original": { @@ -927,11 +927,11 @@ ] }, "locked": { - "lastModified": 1727452028, - "narHash": "sha256-ehl/A4HQFRyqj1Fk7cl+dgSf/2Fb1jLwWJtZaMU6RfU=", + "lastModified": 1727599661, + "narHash": "sha256-0R+1ih0Rfqrz/lcduvpNSnUw3uthUHiaGh0aWPyIqeQ=", "owner": "NuschtOS", "repo": "search", - "rev": "9f7426e532ef8dfc839c4a3fcc567b13a20a70d3", + "rev": "c3c3928b8de7d300c34e9d90fdc19febd1a32062", "type": "github" }, "original": {