nix

configuration files that power my machines
Log | Files | Refs | README | LICENSE

commit 4bdaecc6a041fb10327710429b9c3a27ffd48397
parent 1da2a4c5fb727640b7e0103356f6b5b5e632943d
Author: mtmn <miro@haravara.org>
Date:   Mon, 13 Apr 2026 09:20:03 +0200

Merge branch 'master' of ssh://codeberg.org/mtmn/nix

Diffstat:
M.gitignore | 1-
M.pre-commit-config.yaml | 2+-
Mflake.lock | 215+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
Mflake.nix | 85+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Mhome.nix | 13+++++++++++--
Mhosts.nix | 9+--------
Mhosts/nixaran/configuration.nix | 0
Mhosts/void/default.nix | 160++++++++++++++++++++++++++++++-------------------------------------------------
Ahosts/void/overlays/bin/archeo_routes | 2++
Ahosts/void/overlays/config/ncmpcpp/config | 36++++++++++++++++++++++++++++++++++++
Mhosts/void/overlays/config/shell/rc/void | 0
Mhosts/wsl/default.nix | 1+
Mjustfile | 2+-
Rmodules/mixins/dotfiles/bin/amen-or-not -> modules/mixins/dotfiles/bin/_amen | 0
Mmodules/mixins/dotfiles/bin/hakuna | 2+-
Mmodules/mixins/dotfiles/bin/harper_dict_update | 80++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mmodules/mixins/dotfiles/bin/meq | 2+-
Mmodules/mixins/dotfiles/bin/ncm | 2+-
Amodules/mixins/dotfiles/bin/plakar_estri | 2++
Amodules/mixins/dotfiles/bin/plakar_hoo | 2++
Amodules/mixins/dotfiles/bin/qbsd | 8++++++++
Rhosts/void/overlays/bin/rinit -> modules/mixins/dotfiles/bin/rinit | 0
Amodules/mixins/dotfiles/bin/scrobbler | 4++++
Mmodules/mixins/dotfiles/bin/todomenu | 25+++++++++++++++++++++----
Amodules/mixins/dotfiles/bin/yank-to-todo | 32++++++++++++++++++++++++++++++++
Mmodules/mixins/dotfiles/config/battery-notify/config.toml | 2+-
Amodules/mixins/dotfiles/config/containers/policy.json | 12++++++++++++
Amodules/mixins/dotfiles/config/containers/registries.conf | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mmodules/mixins/dotfiles/config/foot/foot.ini | 8++++----
Amodules/mixins/dotfiles/config/lazygit/config.yml | 24++++++++++++++++++++++++
Mmodules/mixins/dotfiles/config/newsraft/feeds | 1+
Amodules/mixins/dotfiles/config/newsraft/hack/cleanup | 10++++++++++
Amodules/mixins/dotfiles/config/newsraft/hack/fix_titles | 9+++++++++
Amodules/mixins/dotfiles/config/newsraft/hack/sync | 91+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Amodules/mixins/dotfiles/config/newsraft/hack/titles.json | 308+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Amodules/mixins/dotfiles/config/nvim/TREESITTER.md | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mmodules/mixins/dotfiles/config/nvim/fnl/config/blink.fnl | 1-
Mmodules/mixins/dotfiles/config/nvim/fnl/config/lsp.fnl | 2++
Mmodules/mixins/dotfiles/config/nvim/fnl/config/treesitter.fnl | 21++++++---------------
Mmodules/mixins/dotfiles/config/nvim/fnl/init.fnl | 5+----
Mmodules/mixins/dotfiles/config/river/init | 4+++-
Mmodules/mixins/dotfiles/config/shell/rc/aliased-short-names | 38+++++++++++---------------------------
Mmodules/mixins/dotfiles/config/shell/rc/command_overrides | 2++
Mmodules/mixins/dotfiles/config/shell/rc/functions | 9+--------
Mmodules/mixins/dotfiles/config/zsh/rc/functions | 4----
Mmodules/mixins/dotfiles/config/zsh/rc/keybindings | 2--
Mmodules/mixins/dotfiles/home/gitignore | 4+++-
Dmodules/mixins/dotfiles/home/netrc | 3---
Mmodules/services/caddy.nix | 4----
Mmodules/services/harmonia.nix | 2+-
Amodules/services/listenbrainz-mpd.nix | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Amodules/services/miniflux.nix | 32++++++++++++++++++++++++++++++++
Dmodules/services/monitord-exporter.lock | 2218-------------------------------------------------------------------------------
Dmodules/services/monitord.lock | 1664-------------------------------------------------------------------------------
Mmodules/services/monitoring.nix | 122+++++--------------------------------------------------------------------------
Dmodules/services/mtmn.nix | 0
Amodules/services/napkins.nix | 38++++++++++++++++++++++++++++++++++++++
Mmodules/services/redlib.nix | 51+++++++++++++++++++++++++++++++++++++++++----------
Amodules/services/scorpus.nix | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mmodules/services/static.nix | 47++++++++++++-----------------------------------
Mmodules/services/storage-box.nix | 16----------------
Msecrets.nix | 4++++
Msecrets/attic-credentials.age | 0
Asecrets/listenbrainz-token.age | 0
Asecrets/miniflux-secrets.age | 0
Asecrets/mpd-host.age | 0
Asecrets/mpd-port.age | 0
Dsecrets/netrc | 0
Asecrets/scorpus.age | 0
69 files changed, 1386 insertions(+), 4355 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,3 +1,2 @@ .crush result -*.png diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml @@ -1,5 +1,5 @@ --- -exclude: 'hardware-configuration\.nix$|^modules/mixins/dotfiles/config/(?:zsh/plugins|waybar/scripts)/' +exclude: ' hardware-configuration\.nix$|^modules/mixins/dotfiles/config/(?:zsh/plugins)/|^static/' repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 diff --git a/flake.lock b/flake.lock @@ -3,18 +3,19 @@ "agenix": { "inputs": { "darwin": "darwin", - "home-manager": "home-manager", + "home-manager": "home-manager_2", "nixpkgs": [ + "ragenix", "nixpkgs" ], - "systems": "systems" + "systems": "systems_2" }, "locked": { - "lastModified": 1770165109, - "narHash": "sha256-9VnK6Oqai65puVJ4WYtCTvlJeXxMzAp/69HhQuTdl/I=", + "lastModified": 1761656077, + "narHash": "sha256-lsNWuj4Z+pE7s0bd2OKicOFq9bK86JE0ZGeKJbNqb94=", "owner": "ryantm", "repo": "agenix", - "rev": "b027ee29d959fda4b60b57566d64c98a202e0feb", + "rev": "9ba0d85de3eaa7afeab493fed622008b6e4924f5", "type": "github" }, "original": { @@ -23,9 +24,25 @@ "type": "github" } }, + "crane": { + "locked": { + "lastModified": 1760924934, + "narHash": "sha256-tuuqY5aU7cUkR71sO2TraVKK2boYrdW3gCSXUkF4i44=", + "owner": "ipetkov", + "repo": "crane", + "rev": "c6b4d5308293d0d04fcfeee92705017537cad02f", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "darwin": { "inputs": { "nixpkgs": [ + "ragenix", "agenix", "nixpkgs" ] @@ -103,19 +120,54 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ - "agenix", "nixpkgs" ] }, "locked": { - "lastModified": 1745494811, - "narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=", + "lastModified": 1776030105, + "narHash": "sha256-b4cNpWPDSH+/CTTiw8++yGh1UYG2kQNrbIehV2iGoeo=", "owner": "nix-community", "repo": "home-manager", - "rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be", + "rev": "49088dc2e7a876e338e510c5f5f60f659819c650", "type": "github" }, "original": { @@ -127,15 +179,17 @@ "home-manager_2": { "inputs": { "nixpkgs": [ + "ragenix", + "agenix", "nixpkgs" ] }, "locked": { - "lastModified": 1775683737, - "narHash": "sha256-oBYyowo6yfgb95Z78s3uTnAd9KkpJpwzjJbfnpLaM2Y=", + "lastModified": 1745494811, + "narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=", "owner": "nix-community", "repo": "home-manager", - "rev": "7ba4ee4228ed36123c7cb75d50524b43514ef992", + "rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be", "type": "github" }, "original": { @@ -151,11 +205,11 @@ ] }, "locked": { - "lastModified": 1775365369, - "narHash": "sha256-DgH5mveLoau20CuTnaU5RXZWgFQWn56onQ4Du2CqYoI=", + "lastModified": 1775970782, + "narHash": "sha256-7jt9Vpm48Yy5yAWigYpde+HxtYEpEuyzIQJF4VYehhk=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "cef5cf82671e749ac87d69aadecbb75967e6f6c3", + "rev": "bedba5989b04614fc598af9633033b95a937933f", "type": "github" }, "original": { @@ -166,11 +220,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1775639890, - "narHash": "sha256-9O9gNidrdzcb7vgKGtff7QiLtr0IsVaCi0pAXm8anhQ=", + "lastModified": 1775888245, + "narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "456e8a9468b9d46bd8c9524425026c00745bc4d2", + "rev": "13043924aaa7375ce482ebe2494338e058282925", "type": "github" }, "original": { @@ -180,17 +234,98 @@ "type": "github" } }, - "root": { + "nixpkgs_2": { + "locked": { + "lastModified": 1775793324, + "narHash": "sha256-omax7atcZbol+6HJ2RLpP+ZCFcPa5bZ65Hn71RufeWQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9d29d5f667d7467f98efc31881e824fa586c927e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "ragenix": { "inputs": { "agenix": "agenix", + "crane": "crane", + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1761832913, + "narHash": "sha256-VCNVjjuRvrKPiYYwqhE3BAKIaReiKXGpxGp27lZ0MFM=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "83bccfdea758241999f32869fb6b36f7ac72f1ac", + "type": "github" + }, + "original": { + "owner": "yaxitech", + "repo": "ragenix", + "type": "github" + } + }, + "root": { + "inputs": { "deploy-rs": "deploy-rs", "disko": "disko", - "home-manager": "home-manager_2", + "home-manager": "home-manager", "nix-index-database": "nix-index-database", "nixpkgs": "nixpkgs", + "ragenix": "ragenix", + "scorpus": "scorpus", "tools": "tools" } }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "ragenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761791894, + "narHash": "sha256-myRIDh+PxaREz+z9LzbqBJF+SnTFJwkthKDX9zMyddY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "59c45eb69d9222a4362673141e00ff77842cd219", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "scorpus": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1776031188, + "narHash": "sha256-1OwH38hzswkol26qfqsoM9n/cZgFtoFi87kARldwl8s=", + "ref": "refs/heads/master", + "rev": "aa9ace4b5c5ccb23983417e8b366962d8ab95030", + "revCount": 43, + "type": "git", + "url": "ssh://git@codeberg.org/mtmn/scorpus.git" + }, + "original": { + "type": "git", + "url": "ssh://git@codeberg.org/mtmn/scorpus.git" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -221,14 +356,44 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tools": { "flake": false, "locked": { - "lastModified": 1775502308, - "narHash": "sha256-p4Mep5ay8YEao1gpADPb9jhTscbdQSOfnn5lI0eKphU=", + "lastModified": 1775935958, + "narHash": "sha256-OSC7fpM0ux0ZAGI0vwtv/4qpi0fieUgTpt3KIXDvkFI=", "ref": "refs/heads/main", - "rev": "d6246299905365cef213d21916013b56a24df9a0", - "revCount": 26, + "rev": "b1122f41f73f313149b37471686d8d841abe96d6", + "revCount": 27, "type": "git", "url": "ssh://git@codeberg.org/mtmn/tools.git" }, @@ -239,7 +404,7 @@ }, "utils": { "inputs": { - "systems": "systems_2" + "systems": "systems" }, "locked": { "lastModified": 1731533236, diff --git a/flake.nix b/flake.nix @@ -1,6 +1,8 @@ { inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + nixpkgs = { + url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + }; home-manager = { url = "github:nix-community/home-manager"; @@ -22,8 +24,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - agenix = { - url = "github:ryantm/agenix"; + ragenix = { + url = "github:yaxitech/ragenix"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -31,12 +33,16 @@ url = "git+ssh://git@codeberg.org/mtmn/tools.git"; flake = false; }; + + scorpus = { + url = "git+ssh://git@codeberg.org/mtmn/scorpus.git"; + }; }; outputs = { self, - nixpkgs, home-manager, + nixpkgs, deploy-rs, disko, ... @@ -53,24 +59,23 @@ username = host.username or "miro"; in lib.nixosSystem { - inherit (host) system; specialArgs = specialArgs // {inherit username;}; modules = [ { + nixpkgs.hostPlatform = host.system; nix.settings = { substituters = [ "https://cache.nixos.org" - "ssh-ng://root@nixaran:468?compress=true&max-connections=4" + "https://attic.saatana.cat/central" ]; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "nixaran:d63/FF1RnBYzFggx+wvp4SVtGmemzR1tlaRrh0Msf4M=" + "central:ljdT0TbVb3yqnBZt1dsWvxvkebyaZqyFEJBFaowLy6c=" ]; - netrc-file = ./secrets/netrc; }; } - inputs.agenix.nixosModules.default + inputs.ragenix.nixosModules.default (hostDir + "/configuration.nix") ] ++ (lib.attrValues self.nixosModules) @@ -100,13 +105,12 @@ nix.settings = { substituters = [ "https://cache.nixos.org" - "ssh-ng://root@nixaran:468?compress=true&max-connections=4" + "https://attic.saatana.cat/central" ]; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "nixaran:d63/FF1RnBYzFggx+wvp4SVtGmemzR1tlaRrh0Msf4M=" + "central:ljdT0TbVb3yqnBZt1dsWvxvkebyaZqyFEJBFaowLy6c=" ]; - netrc-file = ./secrets/netrc; }; } ./home.nix @@ -145,31 +149,38 @@ in { inherit nixosConfigurations homeConfigurations configData; - nixosModules = { - base = import ./modules/nixos/base.nix; - cinny = import ./modules/services/cinny.nix; - monitoring = import ./modules/services/monitoring.nix; - caddy = import ./modules/services/caddy.nix; - mtmn = import ./modules/services/mtmn.nix; - forgejo = import ./modules/services/forgejo.nix; - matrix = import ./modules/services/matrix.nix; - dex = import ./modules/services/dex.nix; - redlib = import ./modules/services/redlib.nix; - seaweedfs = import ./modules/services/seaweedfs.nix; - filestash = import ./modules/services/filestash.nix; - heisenbridge = import ./modules/services/heisenbridge.nix; - couchdb = import ./modules/services/couchdb.nix; - oauth2-proxy = import ./modules/services/oauth2-proxy.nix; - storage-box = import ./modules/services/storage-box.nix; - bazel-cache = import ./modules/services/bazel-cache.nix; - shirt-linkener = import ./modules/services/shirt-linkener.nix; - bandeno = import ./modules/services/bandeno.nix; - headscale = import ./modules/services/headscale.nix; - searxng = import ./modules/services/searxng.nix; - harmonia = import ./modules/services/harmonia.nix; - attic = import ./modules/services/attic.nix; - static = import ./modules/services/static.nix; - }; + nixosModules = let + importService = name: import ./modules/services/${name}.nix; + in + lib.genAttrs [ + "cinny" + "monitoring" + "caddy" + "forgejo" + "matrix" + "dex" + "seaweedfs" + "filestash" + "heisenbridge" + "couchdb" + "oauth2-proxy" + "storage-box" + "bazel-cache" + "shirt-linkener" + "bandeno" + "headscale" + "searxng" + "attic" + "static" + "miniflux" + "scorpus" + "napkins" + "listenbrainz-mpd" + ] + importService + // { + base = import ./modules/nixos/base.nix; + }; deploy = { nodes = deployNodes; diff --git a/home.nix b/home.nix @@ -29,16 +29,25 @@ programs.home-manager.enable = true; + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (lib.getName pkg) [ + "claude-code-bin" + "libvgm" + ]; + nix = { package = pkgs.nix; settings = { auto-optimise-store = true; warn-dirty = false; experimental-features = ["nix-command" "flakes"]; - substituters = ["https://cache.nixos.org" "https://nix-community.cachix.org"]; + substituters = [ + "https://cache.nixos.org" + "https://attic.saatana.cat/central" + ]; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "central:ljdT0TbVb3yqnBZt1dsWvxvkebyaZqyFEJBFaowLy6c=" ]; }; gc = { diff --git a/hosts.nix b/hosts.nix @@ -12,9 +12,9 @@ nixos = true; disko = true; }; - SK-M4KCG42FV9 = import ./hosts/work/host.nix; DESKTOP-0A5N7UT = { system = "x86_64-linux"; + hostname = "DESKTOP-0A5N7UT"; }; }; users = { @@ -38,13 +38,6 @@ ./hosts/proton ]; }; - SK-M4KCG42FV9 = { - pkgSets = [ - ./modules/mixins/dotfiles - ./hosts/work/overlays - ./hosts/work - ]; - }; DESKTOP-0A5N7UT = { pkgSets = [ ./modules/mixins/dotfiles diff --git a/hosts/nixaran/configuration.nix b/hosts/nixaran/configuration.nix Binary files differ. diff --git a/hosts/void/default.nix b/hosts/void/default.nix @@ -3,73 +3,67 @@ parts = { utils = with pkgs; [ - libvarlink - bandit - ruff shellcheck shfmt - sops - zls + gron bear - bmake ctags - biome entr - act hyperfine - iotop gdb strace perf - valgrind - aflplusplus meson ninja cmake moor - watchman buf - vdirsyncer + harper + ccache + hledger-iadd ]; - media = with pkgs; [ - mpd - mpc - listenbrainz-mpd - libmpdclient - ashuffle - ncmpcpp - mympd - sacad - ffmpeg - yt-dlp - python314Packages.yt-dlp-ejs - ]; + media = + (with pkgs; [ + ncmpcpp + sacad + ffmpeg + yt-dlp + imagemagick + exiftool + ]) + ++ (with pkgs.python314Packages; [ + yt-dlp-ejs + ]); ops = with pkgs; [ - ansible ansible-lint + ansible awscli2 - hadolint + dnscontrol woodpecker-cli - ansible-language-server + podman + skopeo + tenv ]; - gui = with pkgs; [ - feather - picard + lsp = with pkgs; [ + typescript-language-server + ansible-language-server + clang-tools + gopls + nixd + zls ]; data = with pkgs; [ duckdb - gron - jaq jless + jaq jq - pandoc - slop - taplo datasette + hledger + rainfrog ]; vcs = with pkgs; [ @@ -77,128 +71,94 @@ git-bug git-crypt git-absorb - git-filter-repo + git-annex gitleaks + lazygit jujutsu jjui prek - tig ]; nix = with pkgs; [ alejandra comma deadnix - deploy-rs nh - nil nix-du - nixd - nixfmt nixos-anywhere nvd ragenix statix nix-diff attic-client - attic-server + nix-output-monitor + devenv ]; net = with pkgs; [ bore-cli - chisel curl - dnscontrol - hurl inetutils lftp - monolith mosh mosquitto net-tools - newsraft nmap - offpunk rclone rsync sshfs thrift trickle - w3m websocat wget - whois xh ]; - bpf = with pkgs; [ - bpftools - bpftrace - bpfmon - bpftop - libbpf - pwru + web = with pkgs; [ + aerc + offpunk + monolith + newsraft + vdirsyncer ]; - beam28 = - (with pkgs.beam28Packages; [ - erlang - rebar3 - expert - elixir_1_20 - ]) - ++ (with pkgs; [ - gleam - ]); - llm = with pkgs; [ - gemini-cli-bin qwen-code + gemini-cli-bin + claude-code-bin ]; lua = (with pkgs.luaPackages; [ - luarocks fennel lua ]) ++ (with pkgs; [ fnlfmt - fennel-ls ]); - clj = with pkgs; [ - babashka - clojure - clojure-lsp - clj-kondo - leiningen - cljfmt - ]; - - go = with pkgs; [ - go - gopls - golangci-lint + javascript = with pkgs; [ + nodejs + esbuild + purescript ]; - ocaml = with pkgs; [ - ocaml - dune - ]; + beam28 = + (with pkgs.beam28Packages; [ + erlang + rebar3 + ]) + ++ (with pkgs; [ + gleam + ]); - rust = with pkgs; [ - cargo-outdated + rest = with pkgs; [ + miniserve + babashka + feather + picard rustup ]; - - javascript = with pkgs; [ - nodejs - bun - deno - purescript - typescript-language-server - ]; }; in { home.packages = lib.concatLists (lib.attrValues parts); diff --git a/hosts/void/overlays/bin/archeo_routes b/hosts/void/overlays/bin/archeo_routes @@ -0,0 +1,2 @@ +#!/bin/sh +sudo ip route add 10.0.0.0/8 dev ppp0 diff --git a/hosts/void/overlays/config/ncmpcpp/config b/hosts/void/overlays/config/ncmpcpp/config @@ -0,0 +1,36 @@ +mpd_host = 127.0.0.1 +mpd_port = 6695 +mpd_music_dir = /home/miro/misc/mnt/saturn/mu/mu + +lyrics_directory = ~/.cache/lyrics + +user_interface = "alternative" + +alternative_header_first_line_format = "$(11)─┤ $b$(13)%a$(end)$/b ├─$(end)" +alternative_header_second_line_format = "$(4)%t (%y)$(end)" +alternative_ui_separator_color = 11 + +color1 = 13 +color2 = 15 + +now_playing_prefix = "$b" +now_playing_suffix = "$/b" +song_list_format = " $(15)%t$(end) $(cyan){%g}$(end)$R $(11)%a [%b]$(end) ($(cyan)%l$(end)) " +song_columns_list_format = "(35)[15]{t|f} (10)[cyan]{g} (25)[13]{a} (25)[11]{b} (5)[cyan]{l}" +browser_playlist_prefix = "$(11) playlist $(end) " + +progressbar_color = 1 +progressbar_elapsed_color = 11 +progressbar_look = "──━" +song_status_format = " $(15)%a$(end) $4⟫$7⟫$0 $(13)%t$(end) $4⟫$7⟫$0 $(11)%b$(end)" + +mouse_support = "yes" +header_visibility = "no" +statusbar_visibility = "yes" +playlist_display_mode = "classic" (classic/columns) +browser_display_mode = "columns" +search_engine_display_mode = "columns" +playlist_editor_display_mode = "columns" +autocenter_mode = "yes" +titles_visibility = "no" +enable_window_title = "no" diff --git a/hosts/void/overlays/config/shell/rc/void b/hosts/void/overlays/config/shell/rc/void Binary files differ. diff --git a/hosts/wsl/default.nix b/hosts/wsl/default.nix @@ -76,6 +76,7 @@ nvd ragenix statix + nix-health ]; net_tools = with pkgs; [ diff --git a/justfile b/justfile @@ -12,7 +12,7 @@ deadnix: deploy host="nixaran": @backup nix - nix run github:serokell/deploy-rs .#{{ host }} 2>&1 | grep -vE "unknown flake output '(deploy|configData)'" + nix run --fallback github:serokell/deploy-rs .#{{ host }} 2>&1 | grep -vE "unknown flake output '(deploy|configData)'" update: nix flake update diff --git a/modules/mixins/dotfiles/bin/amen-or-not b/modules/mixins/dotfiles/bin/_amen diff --git a/modules/mixins/dotfiles/bin/hakuna b/modules/mixins/dotfiles/bin/hakuna @@ -1,2 +1,2 @@ #!/bin/sh -DISCOGS_TOKEN="$(pass show discogs-token)" /opt/tools/hakunadata "$@" +DISCOGS_TOKEN="$(pass show discogs-token)" hakunadata "$@" diff --git a/modules/mixins/dotfiles/bin/harper_dict_update b/modules/mixins/dotfiles/bin/harper_dict_update @@ -6,42 +6,41 @@ HARPER_DICT="${XDG_CONFIG_HOME:-$HOME/.config}/harper-ls/dictionary.txt" BASE_URL="https://raw.githubusercontent.com/streetsidesoftware/cspell-dicts/main/dictionaries" DICTS=( - "software-terms/dict/softwareTerms.txt" - "typescript/dict/typescript.txt" - "node/dict/node.txt" - "css/dict/css.txt" - "html/dict/html.txt" - "python/dict/python.txt" - "rust/dict/rust.txt" - "bash/samples/bash-words.txt" - "golang/dict/go.txt" - "docker/dict/docker-words.txt" - "k8s/dict/k8s.txt" - "aws/dict/aws.txt" - "sql/src/sql.txt" - "zig/dict/zig.txt" - "php/dict/php.txt" - + "software-terms/dict/softwareTerms.txt" + "typescript/dict/typescript.txt" + "node/dict/node.txt" + "css/dict/css.txt" + "html/dict/html.txt" + "python/dict/python.txt" + "rust/dict/rust.txt" + "bash/samples/bash-words.txt" + "golang/dict/go.txt" + "docker/dict/docker-words.txt" + "k8s/dict/k8s.txt" + "aws/dict/aws.txt" + "sql/src/sql.txt" + "zig/dict/zig.txt" + "php/dict/php.txt" ) WORK_DIR=$(mktemp -d) trap 'rm -rf "$WORK_DIR"' EXIT -log() { echo "▸ $*"; } +log() { echo "▸ $*"; } warn() { echo "⚠ $*" >&2; } clean_cspell_words() { - # - blank lines and comments (#) - # - cspell flags: lines starting with !, *, ~, / - # - inline flags after words: word+, word!, word~ - # - leading/trailing whitespace - grep -v '^\s*$' \ - | grep -v '^\s*#' \ - | grep -v '^\s*[!*~/]' \ - | sed 's/[+!~*]$//' \ - | sed 's/^\s*//;s/\s*$//' \ - | grep -E '^[A-Za-z]' \ - | tr '[:upper:]' '[:lower:]' + # - blank lines and comments (#) + # - cspell flags: lines starting with !, *, ~, / + # - inline flags after words: word+, word!, word~ + # - leading/trailing whitespace + grep -v '^\s*$' | + grep -v '^\s*#' | + grep -v '^\s*[!*~/]' | + sed 's/[+!~*]$//' | + sed 's/^\s*//;s/\s*$//' | + grep -E '^[A-Za-z]' | + tr '[:upper:]' '[:lower:]' } log "Fetching cspell dictionaries" @@ -49,18 +48,18 @@ log "Fetching cspell dictionaries" MERGED="$WORK_DIR/merged.txt" for dict in "${DICTS[@]}"; do - url="$BASE_URL/$dict" - name=$(basename "$dict") - log " $name" - if curl -fsSL "$url" -o "$WORK_DIR/$name" 2>/dev/null; then - clean_cspell_words < "$WORK_DIR/$name" >> "$MERGED" - else - warn "Failed to fetch $url" - fi + url="$BASE_URL/$dict" + name=$(basename "$dict") + log " $name" + if curl -fsSL "$url" -o "$WORK_DIR/$name" 2>/dev/null; then + clean_cspell_words <"$WORK_DIR/$name" >>"$MERGED" + else + warn "Failed to fetch $url" + fi done sort -u "$MERGED" -o "$MERGED" -FETCHED_COUNT=$(wc -l < "$MERGED") +FETCHED_COUNT=$(wc -l <"$MERGED") log "Fetched $FETCHED_COUNT unique words from cspell-dicts" mkdir -p "$(dirname "$HARPER_DICT")" @@ -69,9 +68,12 @@ touch "$HARPER_DICT" # Preserve any words added manually USER_ONLY=$(comm -23 <(sort "$HARPER_DICT") <(sort "$MERGED") || true) -{ cat "$MERGED"; echo "$USER_ONLY"; } | sort -u > "$WORK_DIR/final.txt" +{ + cat "$MERGED" + echo "$USER_ONLY" +} | sort -u >"$WORK_DIR/final.txt" -FINAL_COUNT=$(wc -l < "$WORK_DIR/final.txt") +FINAL_COUNT=$(wc -l <"$WORK_DIR/final.txt") cp "$WORK_DIR/final.txt" "$HARPER_DICT" log "Harper dictionary updated: $FINAL_COUNT words" diff --git a/modules/mixins/dotfiles/bin/meq b/modules/mixins/dotfiles/bin/meq @@ -1,3 +1,3 @@ #!/bin/sh eval "$("$HOME/bin/amen-or-not")" -exec /opt/tools/mpd_edit_queue "$@" +exec mpd_edit_queue "$@" diff --git a/modules/mixins/dotfiles/bin/ncm b/modules/mixins/dotfiles/bin/ncm @@ -1,3 +1,3 @@ #!/bin/sh eval "$("$HOME/bin/amen-or-not")" -exec /usr/sbin/ncmpcpp "$@" +exec ncmpcpp "$@" diff --git a/modules/mixins/dotfiles/bin/plakar_estri b/modules/mixins/dotfiles/bin/plakar_estri @@ -0,0 +1,2 @@ +#!/bin/bash +PLAKAR_PASSPHRASE="$(pass show void/plakar-estri-store)" plakar at "@estri" "$@" diff --git a/modules/mixins/dotfiles/bin/plakar_hoo b/modules/mixins/dotfiles/bin/plakar_hoo @@ -0,0 +1,2 @@ +#!/bin/bash +PLAKAR_PASSPHRASE="$(pass show void/plakar-hoo-store)" plakar at "@hoo" "$@" diff --git a/modules/mixins/dotfiles/bin/qbsd b/modules/mixins/dotfiles/bin/qbsd @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +qemu-system-x86_64 -M q35,usb=on,acpi=on,hpet=off -m 2G \ + -cpu host -smp cores=2 -accel kvm \ + -drive file="$HOME"/misc/random/openbsd.qcow2,format=qcow2 -device usb-tablet \ + -device VGA,vgamem_mb=128 -nic user,model=e1000 -monitor stdio \ + -device usb-ehci,id=ehci \ + -device usb-host,bus=ehci.0,vendorid=0x0781,productid=0x5588 \ + -audiodev pipewire,id=snd0 -device intel-hda -device hda-duplex,audiodev=snd0 diff --git a/hosts/void/overlays/bin/rinit b/modules/mixins/dotfiles/bin/rinit diff --git a/modules/mixins/dotfiles/bin/scrobbler b/modules/mixins/dotfiles/bin/scrobbler @@ -0,0 +1,4 @@ +#!/bin/bash +eval "$("$HOME/bin/amen-or-not")" + +listenbrainz-mpd "$@" | vlogger -t "listenbrainz-mpd" diff --git a/modules/mixins/dotfiles/bin/todomenu b/modules/mixins/dotfiles/bin/todomenu @@ -1,6 +1,23 @@ -#!/bin/sh -todo_file=~/misc/notes/nota/todo.txt +#!/bin/bash -if item=$(dmenu "$@" < /dev/null) && [ -n "$item" ]; then - printf "\n%s\ntodo: %s" "$(date --rfc-3339=s)" "$item" >> "$todo_file" +TODO_FILE="$HOME/misc/notes/nota/todo.txt" + +[ ! -f "$TODO_FILE" ] && exit 1 + +selected=$(awk '{ + if (/^[0-9]{4}-[0-9]{2}-[0-9]{2}/) { + getline + if (/^todo:/) { + match($0, /^todo: (.*)/, arr) + printf "%s\n", arr[1] + } + } +}' "$TODO_FILE" | tac | dmenu "$@") + +if [ -n "$selected" ]; then + if ! grep -q "^todo: $selected$" "$TODO_FILE"; then + printf "\n%s\ntodo: %s" "$(date --rfc-3339=s)" "$selected" >>"$TODO_FILE" + else + echo "$selected" | awk '{print $0}' | wl-copy + fi fi diff --git a/modules/mixins/dotfiles/bin/yank-to-todo b/modules/mixins/dotfiles/bin/yank-to-todo @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +todo_file=~/misc/notes/nota/todo.txt + +if [[ -n "$1" ]]; then + url="$1" +else + wl_focused_title="$(wlr-river-title)" + if [[ "$wl_focused_title" == *"Mozilla Firefox"* ]]; then + /usr/bin/wtype "yy" && sleep 0.5 + url=$(wl-paste 2>/dev/null) + else + notify-send -u critical "Error" "Focused window is not a web browser ($wl_focused_title)" + exit 1 + fi +fi + +if [[ -z "$url" ]]; then + notify-send "No url found" + exit 1 +fi + +if [[ ! "$url" =~ ^https?:// ]]; then + notify-send "Invalid format" "$url" + exit 1 +fi + +if printf "\n%s\ntodo: %s" "$(date --rfc-3339=s)" "$url" >>"$todo_file"; then + notify-send "Saved" "$url" +else + notify-send -u critical "Error" "$url" +fi diff --git a/modules/mixins/dotfiles/config/battery-notify/config.toml b/modules/mixins/dotfiles/config/battery-notify/config.toml @@ -1,4 +1,4 @@ -sleep_command = "systemctl suspend" +sleep_command = "sudo zzz" interval_secs = 30 sleep_pct = 15 low_pct = 40 diff --git a/modules/mixins/dotfiles/config/containers/policy.json b/modules/mixins/dotfiles/config/containers/policy.json @@ -0,0 +1,12 @@ +{ + "default": [ + { + "type": "insecureAcceptAnything" + } + ], + "transports": { + "docker-daemon": { + "": [{ "type": "insecureAcceptAnything" }] + } + } +} diff --git a/modules/mixins/dotfiles/config/containers/registries.conf b/modules/mixins/dotfiles/config/containers/registries.conf @@ -0,0 +1,77 @@ +# For more information on this configuration file, see containers-registries.conf(5). +# +# NOTE: RISK OF USING UNQUALIFIED IMAGE NAMES +# We recommend always using fully qualified image names including the registry +# server (full dns name), namespace, image name, and tag +# (e.g., registry.redhat.io/ubi8/ubi:latest). Pulling by digest (i.e., +# quay.io/repository/name@digest) further eliminates the ambiguity of tags. +# When using short names, there is always an inherent risk that the image being +# pulled could be spoofed. For example, a user wants to pull an image named +# `foobar` from a registry and expects it to come from myregistry.com. If +# myregistry.com is not first in the search list, an attacker could place a +# different `foobar` image at a registry earlier in the search list. The user +# would accidentally pull and run the attacker's image and code rather than the +# intended content. We recommend only adding registries which are completely +# trusted (i.e., registries which don't allow unknown or anonymous users to +# create accounts with arbitrary names). This will prevent an image from being +# spoofed, squatted or otherwise made insecure. If it is necessary to use one +# of these registries, it should be added at the end of the list. +# +# # An array of host[:port] registries to try when pulling an unqualified image, in order. +# unqualified-search-registries = ["example.com"] +# +# [[registry]] +# # The "prefix" field is used to choose the relevant [[registry]] TOML table; +# # (only) the TOML table with the longest match for the input image name +# # (taking into account namespace/repo/tag/digest separators) is used. +# # +# # The prefix can also be of the form: *.example.com for wildcard subdomain +# # matching. +# # +# # If the prefix field is missing, it defaults to be the same as the "location" field. +# prefix = "example.com/foo" +# +# # If true, unencrypted HTTP as well as TLS connections with untrusted +# # certificates are allowed. +# insecure = false +# +# # If true, pulling images with matching names is forbidden. +# blocked = false +# +# # The physical location of the "prefix"-rooted namespace. +# # +# # By default, this is equal to "prefix" (in which case "prefix" can be omitted +# # and the [[registry]] TOML table can only specify "location"). +# # +# # Example: Given +# # prefix = "example.com/foo" +# # location = "internal-registry-for-example.com/bar" +# # requests for the image example.com/foo/myimage:latest will actually work with the +# # internal-registry-for-example.com/bar/myimage:latest image. +# +# # The location can be empty if prefix is in a +# # wildcarded format: "*.example.com". In this case, the input reference will +# # be used as-is without any rewrite. +# location = internal-registry-for-example.com/bar" +# +# # (Possibly-partial) mirrors for the "prefix"-rooted namespace. +# # +# # The mirrors are attempted in the specified order; the first one that can be +# # contacted and contains the image will be used (and if none of the mirrors contains the image, +# # the primary location specified by the "registry.location" field, or using the unmodified +# # user-specified reference, is tried last). +# # +# # Each TOML table in the "mirror" array can contain the following fields, with the same semantics +# # as if specified in the [[registry]] TOML table directly: +# # - location +# # - insecure +# [[registry.mirror]] +# location = "example-mirror-0.local/mirror-for-foo" +# [[registry.mirror]] +# location = "example-mirror-1.local/mirrors/foo" +# insecure = true +# # Given the above, a pull of example.com/foo/image:latest will try: +# # 1. example-mirror-0.local/mirror-for-foo/image:latest +# # 2. example-mirror-1.local/mirrors/foo/image:latest +# # 3. internal-registry-for-example.com/bar/image:latest +# # in order, and use the first one that exists. diff --git a/modules/mixins/dotfiles/config/foot/foot.ini b/modules/mixins/dotfiles/config/foot/foot.ini @@ -1,8 +1,8 @@ [main] -font=Ttyp0 OTB:size=12 -font-bold=Ttyp0 OTB:size=12 -font-italic=Ttyp0 OTB:size=12 -font-bold-italic=Ttyp0 OTB:size=12 +font=Intel One Mono:style=Regular:size=12 +font-bold=Intel One Mono:style=Regular:size=12 +font-italic=Intel One Mono:style=Regular:size=12 +font-bold-italic=Intel One Mono:style=Regular:size=12 pad=2x2 [scrollback] diff --git a/modules/mixins/dotfiles/config/lazygit/config.yml b/modules/mixins/dotfiles/config/lazygit/config.yml @@ -0,0 +1,24 @@ +gui: + theme: + activeBorderColor: + - '#ccaaee' # cursor accent (purple) + - bold + inactiveBorderColor: + - '#332d38' # regular0 (dark) + searchingActiveBorderColor: + - '#c0b080' # regular3 (yellow) + - bold + optionsTextColor: + - '#9fbfe7' # regular4 (blue) + selectedLineBgColor: + - '#50447f' # selection-background + selectedRangeBgColor: + - '#50447f' # selection-background + cherryPickedCommitBgColor: + - '#a0c0d0' # regular6 (cyan) + cherryPickedCommitFgColor: + - '#000000' # background + unstagedChangesColor: + - '#eca28f' # regular1 (red/salmon) + defaultFgColor: + - '#ffffff' # foreground diff --git a/modules/mixins/dotfiles/config/newsraft/feeds b/modules/mixins/dotfiles/config/newsraft/feeds @@ -432,3 +432,4 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg Tso https://www.youtube.com/feeds/videos.xml?channel_id=UCS0N5baNlQWJCUrhCEo8WlA Ben Eater https://www.youtube.com/feeds/videos.xml?channel_id=UC3S8vxwRfqLBdIhgRlDRVzw stacksmashing https://www.youtube.com/feeds/videos.xml?channel_id=UCd3dNckv1Za2coSaHGHl5aA TJ DeVries +https://www.youtube.com/feeds/videos.xml?channel_id=UCaTznQhurW5AaiYPbhEA-KA Molly Rocket diff --git a/modules/mixins/dotfiles/config/newsraft/hack/cleanup b/modules/mixins/dotfiles/config/newsraft/hack/cleanup @@ -0,0 +1,10 @@ +#!/bin/sh + +MINIFLUX_URL="$(pass show miniflux-url)" +MINIFLUX_TOKEN=$(pass show miniflux-token) + +curl -s -H "X-Auth-Token: $MINIFLUX_TOKEN" "$MINIFLUX_URL/v1/feeds" | + jq -r '.[].id' | + xargs -P 10 -I {} curl -s -X DELETE -H "X-Auth-Token: $MINIFLUX_TOKEN" "$MINIFLUX_URL/v1/feeds/{}" + +echo "Done" diff --git a/modules/mixins/dotfiles/config/newsraft/hack/fix_titles b/modules/mixins/dotfiles/config/newsraft/hack/fix_titles @@ -0,0 +1,9 @@ +#!/usr/bin/env python + +import json + +c = json.load(open('hack/titles.json')) +for k, v in c.items(): + if not v and '?' in k: + c[k] = k.split('=')[-1] +json.dump(c, open('titles.json', 'w'), indent=2, ensure_ascii=False) diff --git a/modules/mixins/dotfiles/config/newsraft/hack/sync b/modules/mixins/dotfiles/config/newsraft/hack/sync @@ -0,0 +1,91 @@ +#!/usr/bin/env python + +import json +import re +import subprocess +import sys +import xml.etree.ElementTree as ET +from pathlib import Path +from typing import cast +from urllib.request import Request, urlopen +from urllib.error import URLError, HTTPError + +FEEDS_FILE = Path('feeds') +CACHE_FILE = Path('hack/titles.json') + +MINIFLUX_URL = subprocess.check_output( + ['pass', 'show', 'miniflux-url'], text=True +).strip() +MINIFLUX_TOKEN = subprocess.check_output( + ['pass', 'show', 'miniflux-token'], text=True +).strip() + +cache: dict[str, str] = ( + json.loads(CACHE_FILE.read_text()) if CACHE_FILE.exists() else {} +) + + +def fetch_title(url: str) -> str: + if url in cache: + return cache[url] + try: + req = Request(url, headers={'User-Agent': 'Mozilla/5.0'}) + with urlopen(req, timeout=10) as response: + content_type = ( + response.headers.get_content_charset() or 'utf-8' + ) + html = cast(bytes, response.read()).decode( + content_type, errors='ignore' + ) + match = re.search(r'<title>([^<]+)</title>', html, re.IGNORECASE) + if match: + cache[url] = match.group(1).strip() + return cache[url] + except Exception: + pass + cache[url] = '' + return '' + + +root = ET.Element('opml', version='1.0') +body = ET.SubElement(root, 'body') +outline = body + +for line in FEEDS_FILE.read_text().splitlines(): + if not (line := line.strip()): + continue + + if line.startswith('@'): + name = line.split('<')[0].replace('@', '').strip() + outline = ET.SubElement(body, 'outline', text=name, title=name) + elif line.startswith('http'): + url, _, title = line.partition(' ') + url = url.strip() + title = title.strip() or fetch_title(url) + + if outline == body: + outline = ET.SubElement( + body, 'outline', text='Uncategorized', title='Uncategorized' + ) + + elem = ET.SubElement(outline, 'outline', type='rss', xmlUrl=url) + if title: + elem.set('text', title) + elem.set('title', title) + +ET.indent(root, space=' ') +opml_data = cast(bytes, ET.tostring(root, encoding='utf-8', xml_declaration=True)) + +req = Request(f"{MINIFLUX_URL}/v1/import", data=opml_data, method='POST') +req.add_header('X-Auth-Token', MINIFLUX_TOKEN) +req.add_header('Content-Type', 'application/xml') + +try: + urlopen(req) + print('Done') +except HTTPError as e: + print(f"HTTP Error {e.code}", file=sys.stderr) +except URLError as e: + print(f"URL Error: {e.reason}", file=sys.stderr) +finally: + _ = CACHE_FILE.write_text(json.dumps(cache, indent=2, ensure_ascii=False)) diff --git a/modules/mixins/dotfiles/config/newsraft/hack/titles.json b/modules/mixins/dotfiles/config/newsraft/hack/titles.json @@ -0,0 +1,308 @@ +{ + "https://amy.is-a.dev/feed.xml": "amy's blog", + "https://apenwarr.ca/log/rss.php": "apenwarr", + "https://anirudh.fi/blog/feed.xml": "Anirudh Oppiliappan", + "https://eli.thegreenplace.net/feeds/all.atom.xml": "Eli Bendersky", + "https://brandur.org/articles.atom": "brandur.org", + "https://lemire.me/blog/feed/": "Daniel Lemire", + "https://computer.rip/rss.xml": "computers are bad", + "https://interrupt.memfault.com/feed.xml": "Interrupt", + "https://destevez.net/feed": "Daniel Estévez", + "https://ploum.net/atom_en.xml": "Lionel Dricot", + "https://fgiesen.wordpress.com/feed": "The ryg blog", + "https://jessitron.com/blog/feed": "Jessitron", + "https://tratt.net/laurie/news.rss": "Laurence Tratt", + "https://www.argmin.net/feed": "arg min", + "https://simblob.blogspot.com/feeds/posts/default": "Red Blob Games", + "https://huyenchip.com/feed.xml": "Chip Huyen", + "https://www.blogger.com/feeds/593563533834706486/posts/default": "", + "https://rachelbythebay.com/w/atom.xml": "", + "https://utcc.utoronto.ca/~cks/space/blog/?atom": "Wandering Thoughts: Your feed reader has a problem", + "https://drewdevault.com/blog/index.xml": "Drew DeVault", + "https://leahneukirchen.org/trivium/index.atom": "Leah Neukirchen", + "https://endler.dev/rss.xml": "Matthias Endler", + "https://vermaden.wordpress.com/feed": "𝚟𝚎𝚛𝚖𝚊𝚍𝚎𝚗", + "https://dataswamp.org/~solene/rss.xml": "Solene", + "https://backreaction.blogspot.com/feeds/posts/default": "Sabine Hossenfelder", + "https://www.marginalia.nu/index.xml": "marginalia.nu", + "https://bugwhisperer.dev/atom.xml": "Andie Keller", + "https://fasterthanli.me/index.xml": "fasterthanli.me", + "https://oddlama.org/rss.xml": "oddlama's blog", + "https://www.openmymind.net/atom.xml": "openmymind.net", + "https://arpozine.substack.com/feed": "Call Super's ARPOZINE", + "https://brittap.substack.com/feed": "BrittaRiffindots", + "https://herbsundays.substack.com/feed": "Herb Sundays", + "https://hypertextgarden.com/feed": "Hypertext Garden", + "https://infinitespeeds.substack.com/feed": "Infinite Speeds", + "https://journalofthemotherbeat.substack.com/feed": "Journal of the Motherbeat", + "https://linenoise.substack.com/feed": "Line Noise", + "https://naturalmusic.substack.com/feed": "Natural Music", + "https://networknotes.motiveunknown.com/feed": "Network Notes", + "https://noisenarrative.substack.com/feed": "Noise Narrative", + "https://outersignals.substack.com/feed": "Outer Signals", + "https://penelopetrappes.substack.com/feed": "My Requiem", + "https://plus.briantylercohen.com/feed": "Brian Tyler Cohen", + "https://politicsdancingxyz.substack.com/feed": "The Politics of Dancing", + "https://ravenewworld.substack.com/feed": "Rave New World", + "https://registerspill.thorstenball.com/feed": "Register Spill", + "https://resobscura.substack.com/feed": "Res Obscura", + "https://robertchristgau.substack.com/feed": "And It Don't Stop", + "https://robwalker.substack.com/feed": "The Art of Noticing", + "https://samkriss.substack.com/feed": "Numb at the Lodge", + "https://smallpotatoes.paulbloom.net/feed": "Small Potatoes", + "https://theanarchistgardenersclub.substack.com/feed": "The Anarchist Gardeners Club", + "https://thediscovertab.substack.com/feed": "The Discover Tab", + "https://thisweekinsound.disquiet.com/feed": "This Week in Sound", + "https://toneglow.substack.com/feed": "Tone Glow", + "https://tropicalwaste.substack.com/feed": "Waste Mail", + "https://www.astralcodexten.com/feed": "Astral Codex Ten", + "https://www.cantgetmuchhigher.com/feed": "Can't Get Much Higher", + "https://www.computerenhance.com/feed": "Computer, Enhance!", + "https://www.cremieux.xyz/feed": "Cremieux Recueil", + "https://www.experimental-history.com/feed": "Experimental History", + "https://www.statsignificant.com/feed": "Stat Significant", + "https://lwn.net/headlines/rss": "LWN.net", + "https://www.theregister.com/headlines.atom": "The Register", + "https://www.phoronix.com/rss.php": "Phoronix", + "https://undeadly.org/cgi?action=rss": "OpenBSD Journal", + "https://www.rfc-editor.org/rfcrss.xml": "Recent RFCs", + "https://feeds.simplecast.com/L9810DOa": "Signals and Threads", + "https://feeds.transistor.fm/oxide-and-friends": "Oxide and Friends", + "https://www.twoscomplement.org/podcast/feed.xml": "Two's Complement", + "https://feeds.simplecast.com/BqbsxVfO": "99% Invisible", + "https://podcasts.files.bbci.co.uk/b006qykl.rss": "In Our Time", + "https://feeds.megaphone.fm/GLT4787413333": "The Rest Is History", + "https://bikeshedpod.com/rss.xml": "The Bikeshed Pod", + "http://feeds.libsyn.com/499093/rss": "FLOSS Weekly", + "https://omny.fm/shows/future-of-coding/playlists/podcast.rss": "Feeling of Computing", + "https://www.typetheoryforall.com/episodes.mp3.rss": "Type Theory Forall", + "https://feed.podbean.com/acmbytecast/feed.xml": "ACM ByteCast", + "https://feeds.acast.com/public/shows/disseminate": "Disseminate: The Computer Science Research Podcast", + "https://firstfloor.substack.com/feed": "First Floor", + "https://boomkat.com/new-releases.rss": "Boomkat New Releases", + "https://acloserlisten.substack.com/feed": "a closer listen", + "https://andrewryce.substack.com/feed": "Futureproofing", + "https://charliefracture.substack.com/feed": "Fracture", + "https://futurismrestated.substack.com/feed": "Futurism Restated", + "https://loscil.substack.com/feed": "loscil news", + "https://martyn3024.substack.com/feed": "Four Things", + "https://musicofafrica.substack.com/feed": "Music of Africa", + "https://notagspodcast.substack.com/feed": "No Tags", + "https://reachsound.substack.com/feed": "Reach", + "https://cantilevermusic.substack.com/feed": "Cantilever", + "https://soundnvision.substack.com/feed": "Sound + Vision", + "https://acousticarchaeologies.substack.com/feed": "Acoustic Archaeologies", + "https://andrewtasselmyer.substack.com/feed": "Sound Methods", + "https://anoisosard.substack.com/feed": "Anois, Os Ard", + "https://vinylvagabond.substack.com/feed": "The Vinyl Vagabond", + "https://cloudcollecting.substack.com/feed": "cloud collecting", + "https://bc.mtmn.name/?fan=niccoloexad": "niccoloexad", + "https://bc.mtmn.name/?fan=wonja": "wonja", + "https://bc.mtmn.name/?fan=thetrilogytapes": "thetrilogytapes", + "https://bc.mtmn.name/?fan=maxaxa": "maxaxa", + "https://bc.mtmn.name/?fan=andriykostyukov": "andriykostyukov", + "https://bc.mtmn.name/?fan=c_aromando": "c_aromando", + "https://bc.mtmn.name/?fan=cccconrad": "cccconrad", + "https://bc.mtmn.name/?fan=carlosdelascuevas": "carlosdelascuevas", + "https://bc.mtmn.name/?fan=curated_by": "curated_by", + "https://bc.mtmn.name/?fan=philinamaze": "philinamaze", + "https://bc.mtmn.name/?fan=abdonoval": "abdonoval", + "https://bc.mtmn.name/?fan=ian_mcdowell": "ian_mcdowell", + "https://bc.mtmn.name/?fan=eehaw": "eehaw", + "https://bc.mtmn.name/?fan=trishak": "trishak", + "https://bc.mtmn.name/?fan=lolobcr": "lolobcr", + "https://bc.mtmn.name/?fan=weirdpebble": "weirdpebble", + "https://bc.mtmn.name/?fan=br_dge": "br_dge", + "https://bc.mtmn.name/?fan=senot": "senot", + "https://bc.mtmn.name/?fan=luuuc": "luuuc", + "https://bc.mtmn.name/?fan=personnealienee": "personnealienee", + "https://bc.mtmn.name/?fan=zitinio": "zitinio", + "https://bc.mtmn.name/?fan=peak_flow": "peak_flow", + "https://bc.mtmn.name/?fan=pugilisttunes": "pugilisttunes", + "https://bc.mtmn.name/?fan=willmemotone": "willmemotone", + "https://bc.mtmn.name/?fan=oortcloud": "oortcloud", + "https://bc.mtmn.name/?fan=shawnreynaldo": "shawnreynaldo", + "https://bc.mtmn.name/?fan=finnoftomland": "finnoftomland", + "https://bc.mtmn.name/?fan=poponly": "poponly", + "https://bc.mtmn.name/?fan=wejamencona": "wejamencona", + "https://bc.mtmn.name/?fan=avsluta": "avsluta", + "https://bc.mtmn.name/?fan=microchic": "microchic", + "https://bc.mtmn.name/?fan=stoneinfocus": "stoneinfocus", + "https://bc.mtmn.name/?fan=vannesacarlton": "vannesacarlton", + "https://bc.mtmn.name/?fan=kuscheln": "kuscheln", + "https://bc.mtmn.name/?fan=kmru": "kmru", + "https://bc.mtmn.name/?fan=theslowbrownfox": "theslowbrownfox", + "https://bc.mtmn.name/?fan=seafood_soup": "seafood_soup", + "https://bc.mtmn.name/?fan=akirayamagata": "akirayamagata", + "https://bc.mtmn.name/?fan=tomcolebrook": "tomcolebrook", + "https://bc.mtmn.name/?fan=ludwigundotto": "ludwigundotto", + "https://bc.mtmn.name/?fan=hugoz": "hugoz", + "https://bc.mtmn.name/?fan=rgb1": "rgb1", + "https://bc.mtmn.name/?fan=limbotapes": "limbotapes", + "https://bc.mtmn.name/?fan=mvachuska": "mvachuska", + "https://bc.mtmn.name/?fan=iffiiffi": "iffiiffi", + "https://bc.mtmn.name/?fan=ben_aguero": "ben_aguero", + "https://bc.mtmn.name/?fan=akse": "akse", + "https://bc.mtmn.name/?fan=sselevolave": "sselevolave", + "https://bc.mtmn.name/?fan=elephantjams": "elephantjams", + "https://bc.mtmn.name/?fan=sleekfata": "sleekfata", + "https://bc.mtmn.name/?fan=gibbin": "gibbin", + "https://bc.mtmn.name/?fan=jrhartley": "jrhartley", + "https://bc.mtmn.name/?fan=time_snark": "time_snark", + "https://bc.mtmn.name/?fan=jayfox16": "jayfox16", + "https://bc.mtmn.name/?fan=kumiaicho": "kumiaicho", + "https://bc.mtmn.name/?fan=enimsajirol": "enimsajirol", + "https://bc.mtmn.name/?fan=parcae": "parcae", + "https://bc.mtmn.name/?fan=wisecarver": "wisecarver", + "https://bc.mtmn.name/?fan=ysksaske": "ysksaske", + "https://bc.mtmn.name/?fan=sarahhwreath": "sarahhwreath", + "https://bc.mtmn.name/?fan=bossameow": "bossameow", + "https://bc.mtmn.name/?fan=oomcl": "oomcl", + "https://bc.mtmn.name/?fan=maxmackenzie": "maxmackenzie", + "https://bc.mtmn.name/?artist=tinarecords": "tinarecords", + "https://bc.mtmn.name/?artist=plasmasources": "plasmasources", + "https://bc.mtmn.name/?artist=worst-records": "worst-records", + "https://bc.mtmn.name/?artist=detachrecordings": "detachrecordings", + "https://bc.mtmn.name/?artist=5gatetemple": "5gatetemple", + "https://bc.mtmn.name/?artist=hotreleases": "hotreleases", + "https://bc.mtmn.name/?artist=idorecords": "idorecords", + "https://bc.mtmn.name/?artist=missile-records": "missile-records", + "https://bc.mtmn.name/?artist=lostdomain": "lostdomain", + "https://bc.mtmn.name/?artist=abulmogard": "abulmogard", + "https://bc.mtmn.name/?artist=silhouettetapes1": "silhouettetapes1", + "https://bc.mtmn.name/?artist=auralconduct": "auralconduct", + "https://bc.mtmn.name/?artist=southernlightsrec": "southernlightsrec", + "https://bc.mtmn.name/?artist=vladislavdelay": "vladislavdelay", + "https://bc.mtmn.name/?artist=hoganordrekords": "hoganordrekords", + "https://bc.mtmn.name/?artist=invisible-inc": "invisible-inc", + "https://bc.mtmn.name/?artist=sizetenrecords": "sizetenrecords", + "https://bc.mtmn.name/?artist=bluenightjungle": "bluenightjungle", + "https://bc.mtmn.name/?artist=malrecordings": "malrecordings", + "https://bc.mtmn.name/?artist=blackteethrecords": "blackteethrecords", + "https://bc.mtmn.name/?artist=hayescollective": "hayescollective", + "https://bc.mtmn.name/?artist=alwootton": "alwootton", + "https://bc.mtmn.name/?artist=chateauflight": "chateauflight", + "https://bc.mtmn.name/?artist=relationreset": "relationreset", + "https://bc.mtmn.name/?artist=tapehiss": "tapehiss", + "https://bc.mtmn.name/?artist=glinted-records": "glinted-records", + "https://bc.mtmn.name/?artist=efficientspace": "efficientspace", + "https://bc.mtmn.name/?artist=punctumtapes": "punctumtapes", + "https://bc.mtmn.name/?artist=emotional-response": "emotional-response", + "https://bc.mtmn.name/?artist=12thisle": "12thisle", + "https://bc.mtmn.name/?artist=lowtec-workshop-records": "lowtec-workshop-records", + "https://bc.mtmn.name/?artist=nonplusrecords": "nonplusrecords", + "https://bc.mtmn.name/?artist=fastcastle": "fastcastle", + "https://bc.mtmn.name/?artist=bardouinmusic": "bardouinmusic", + "https://bc.mtmn.name/?artist=blushtbc": "blushtbc", + "https://bc.mtmn.name/?artist=lakeway": "lakeway", + "https://bc.mtmn.name/?artist=distal": "distal", + "https://bc.mtmn.name/?artist=twtwlondon": "twtwlondon", + "https://bc.mtmn.name/?artist=worshipbristol": "worshipbristol", + "https://bc.mtmn.name/?artist=pressurerecords": "pressurerecords", + "https://bc.mtmn.name/?artist=worship-productions": "worship-productions", + "https://bc.mtmn.name/?artist=zamzamrec": "zamzamrec", + "https://bc.mtmn.name/?artist=digitalsting": "digitalsting", + "https://bc.mtmn.name/?artist=divisi62": "divisi62", + "https://bc.mtmn.name/?artist=ana-sound": "ana-sound", + "https://bc.mtmn.name/?artist=kashual": "kashual", + "https://bc.mtmn.name/?artist=bizaarbazaar": "bizaarbazaar", + "https://bc.mtmn.name/?artist=goo1": "goo1", + "https://bc.mtmn.name/?artist=doo-solution": "doo-solution", + "https://bc.mtmn.name/?artist=oscillasound": "oscillasound", + "https://bc.mtmn.name/?artist=appendixfiles": "appendixfiles", + "https://bc.mtmn.name/?artist=limbotapes": "limbotapes", + "https://bc.mtmn.name/?artist=clam-pressure": "clam-pressure", + "https://bc.mtmn.name/?artist=tomvalrecords": "tomvalrecords", + "https://bc.mtmn.name/?artist=29speedway1": "29speedway1", + "https://bc.mtmn.name/?artist=area127": "area127", + "https://bc.mtmn.name/?artist=iliantape": "iliantape", + "https://bc.mtmn.name/?artist=flxk1": "flxk1", + "https://bc.mtmn.name/?artist=subglow": "subglow", + "https://bc.mtmn.name/?artist=northernelectronics": "northernelectronics", + "https://bc.mtmn.name/?artist=nosejob": "nosejob", + "https://bc.mtmn.name/?artist=nousklaer": "nousklaer", + "https://bc.mtmn.name/?artist=delsinrecords": "delsinrecords", + "https://bc.mtmn.name/?artist=nullpunktrec": "nullpunktrec", + "https://bc.mtmn.name/?artist=nehzarecords": "nehzarecords", + "https://bc.mtmn.name/?artist=midgar-records": "midgar-records", + "https://bc.mtmn.name/?artist=mapledeathrecords": "mapledeathrecords", + "https://bc.mtmn.name/?artist=heatcrimes": "heatcrimes", + "https://bc.mtmn.name/?artist=manaabundance": "manaabundance", + "https://bc.mtmn.name/?artist=naffrecordings": "naffrecordings", + "https://bc.mtmn.name/?artist=pressuredome": "pressuredome", + "https://bc.mtmn.name/?artist=timedance": "timedance", + "https://bc.mtmn.name/?artist=cherche-encore": "cherche-encore", + "https://bc.mtmn.name/?artist=glarc": "glarc", + "https://bc.mtmn.name/?artist=acolourfulstorm": "acolourfulstorm", + "https://bc.mtmn.name/?artist=siamesetwinsrecords": "siamesetwinsrecords", + "https://bc.mtmn.name/?artist=banoffeepiesrecords": "banoffeepiesrecords", + "https://bc.mtmn.name/?artist=global-warming-records": "global-warming-records", + "https://bc.mtmn.name/?artist=atoldiskz1": "atoldiskz1", + "https://bc.mtmn.name/?artist=comicsansrecords": "comicsansrecords", + "https://bc.mtmn.name/?artist=organicsigns": "organicsigns", + "https://bc.mtmn.name/?artist=bblisss": "bblisss", + "https://bc.mtmn.name/?artist=omenwapta": "omenwapta", + "https://bc.mtmn.name/?artist=osare-editions": "osare-editions", + "https://bc.mtmn.name/?artist=brukrecords": "brukrecords", + "https://bc.mtmn.name/?artist=themothclub": "themothclub", + "https://bc.mtmn.name/?artist=analog-records": "analog-records", + "https://bc.mtmn.name/?artist=shaytoonrecords": "shaytoonrecords", + "https://bc.mtmn.name/?artist=poorlyknituk": "poorlyknituk", + "https://bc.mtmn.name/?artist=nyegenyegetapes": "nyegenyegetapes", + "https://bc.mtmn.name/?artist=accidentalmeetings": "accidentalmeetings", + "https://bc.mtmn.name/?artist=berceuseheroique": "berceuseheroique", + "https://bc.mtmn.name/?artist=pointless-geometry": "pointless-geometry", + "https://bc.mtmn.name/?artist=avonterrorcorps": "avonterrorcorps", + "https://bc.mtmn.name/?artist=theyouthlabel": "theyouthlabel", + "https://bc.mtmn.name/?artist=westmineral": "westmineral", + "https://bc.mtmn.name/?artist=motionward": "motionward", + "https://bc.mtmn.name/?artist=plaquebristol": "plaquebristol", + "https://bc.mtmn.name/?artist=baroquesunburst": "baroquesunburst", + "https://bc.mtmn.name/?artist=maloca": "maloca", + "https://bc.mtmn.name/?artist=corruptterritories": "corruptterritories", + "https://bc.mtmn.name/?artist=scopeotaku": "scopeotaku", + "https://bc.mtmn.name/?artist=eclipsetribez": "eclipsetribez", + "https://bc.mtmn.name/?artist=warmwintersltd": "warmwintersltd", + "https://bc.mtmn.name/?artist=mappa": "mappa", + "https://bc.mtmn.name/?artist=brutaz": "brutaz", + "https://bc.mtmn.name/?artist=heart": "heart", + "https://bc.mtmn.name/?artist=crowdspacer": "crowdspacer", + "https://bc.mtmn.name/?artist=unexplainedsoundsgroup": "unexplainedsoundsgroup", + "https://bc.mtmn.name/?artist=zvukolom": "zvukolom", + "https://bc.mtmn.name/?artist=bigsciencerecords": "bigsciencerecords", + "https://bc.mtmn.name/?artist=shukai": "shukai", + "https://bc.mtmn.name/?artist=flippendisks": "flippendisks", + "https://bc.mtmn.name/?artist=sneakersocialclub": "sneakersocialclub", + "https://bc.mtmn.name/?artist=feveram": "feveram", + "https://bc.mtmn.name/?artist=wellstreetrecords": "wellstreetrecords", + "https://bc.mtmn.name/?artist=stroomtv": "stroomtv", + "https://bc.mtmn.name/?artist=teenagemenopause": "teenagemenopause", + "https://bc.mtmn.name/?artist=redstonepress": "redstonepress", + "https://bc.mtmn.name/?artist=tempa": "tempa", + "https://bc.mtmn.name/?artist=tectonicrecordings": "tectonicrecordings", + "https://bc.mtmn.name/?artist=northfieldrecords": "northfieldrecords", + "https://bc.mtmn.name/?artist=drownedbylocals": "drownedbylocals", + "https://bc.mtmn.name/?artist=ad93": "ad93", + "https://bc.mtmn.name/?artist=mindgamesmusic": "mindgamesmusic", + "https://bc.mtmn.name/?artist=ruptureldn": "ruptureldn", + "https://bc.mtmn.name/?artist=isla": "isla", + "https://bc.mtmn.name/?artist=westernlore": "westernlore", + "https://bc.mtmn.name/?artist=thetrilogytapes": "thetrilogytapes", + "https://bc.mtmn.name/?artist=uvb-76music": "uvb-76music", + "https://bc.mtmn.name/?artist=murmursrecordings": "murmursrecordings", + "https://bc.mtmn.name/?artist=shortspanrecords": "shortspanrecords", + "https://bc.mtmn.name/?artist=trule": "trule", + "https://bc.mtmn.name/?artist=painmgmt": "painmgmt", + "https://bc.mtmn.name/?artist=canyoufeelthesun": "canyoufeelthesun", + "https://bc.mtmn.name/?artist=brainwavescrew": "brainwavescrew", + "https://bc.mtmn.name/?artist=yukumusic": "yukumusic", + "https://bc.mtmn.name/?artist=yesnowave": "yesnowave", + "https://bc.mtmn.name/?artist=fonstret": "fonstret", + "https://bc.mtmn.name/?artist=nostilevo": "nostilevo", + "https://bc.mtmn.name/?artist=odyseerecordings": "odyseerecordings", + "https://bc.mtmn.name/?artist=akuphone": "akuphone", + "https://bc.mtmn.name/?artist=annihayarecords": "annihayarecords", + "https://bc.mtmn.name/?artist=xterea": "xterea", + "https://bc.mtmn.name/?artist=svbkvlt": "svbkvlt", + "https://andrewkelley.me/rss.xml": "Andrew Kelley" +} diff --git a/modules/mixins/dotfiles/config/nvim/TREESITTER.md b/modules/mixins/dotfiles/config/nvim/TREESITTER.md @@ -0,0 +1,73 @@ +# Neovim 0.12+ Tree-sitter Manual + +In Neovim 0.12 and later, Tree-sitter support is deeply integrated into the core. While plugins like `nvim-treesitter` provide management commands, Neovim itself handles the loading of parsers and queries through the standard **runtimepath (RTP)** mechanism. + +## 1. Storage Location + +By default, Neovim looks for Tree-sitter assets in any directory listed in your `runtimepath`. The standard user-writable location for these is: + +`~/.local/share/nvim/site/` (or `stdpath('data') .. '/site'`) + +### Directory Structure +```text +~/.local/share/nvim/site/ +├── parser/ # Compiled grammar libraries (.so or .dll) +│ ├── fennel.so +│ ├── purescript.so +│ └── ... +├── parser-info/ # Metadata used by management tools (optional) +│ ├── fennel.lua +│ └── ... +└── queries/ # Tree-sitter query files (.scm) + ├── fennel/ + │ ├── highlights.scm + │ ├── folds.scm + │ └── injections.scm + └── purescript/ + └── highlights.scm +``` + +## 2. Discovery Mechanism + +Neovim discovers Tree-sitter assets by searching for specific subdirectories in the RTP: + +1. **Parsers**: It looks for a `parser/` directory and attempts to load `<language>.so`. +2. **Queries**: It looks for `queries/<language>/` and loads `.scm` files (e.g., `highlights.scm`, `folds.scm`, `indents.scm`). + +You can verify if a directory is in your RTP by running: +```vim +:set runtimepath? +``` + +## 3. Manual Installation + +If you want to install a parser manually without a plugin: + +1. **Compile the Parser**: Use the `tree-sitter` CLI or a C compiler to generate a shared object (`.so`) from the grammar's `src/parser.c` (and `src/scanner.c` if it exists). +2. **Move the Parser**: Place the `.so` file in `~/.local/share/nvim/site/parser/<lang>.so`. +3. **Install Queries**: Copy the `.scm` files from the grammar's `queries/` directory (ensure they are compatible with Neovim) into `~/.local/share/nvim/site/queries/<lang>/`. + +## 4. Configuration and Activation + +Since Neovim 0.12 does not enable Tree-sitter automatically for every file, you should use an autocommand in your `init.lua` (or Fennel equivalent) to start the parser: + +```lua +vim.api.nvim_create_autocmd('FileType', { + callback = function() + local lang = vim.treesitter.language.get_lang(vim.bo.filetype) + if lang and pcall(vim.treesitter.language.inspect, lang) then + vim.treesitter.start(0, lang) + -- Optional: Enable folding + vim.wo.foldmethod = 'expr' + vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()' + end + end, +}) +``` + +## 5. Useful Commands + +- `:lua =vim.treesitter.language.inspect("fennel")`: Check if a language parser is correctly loaded. +- `:lua =vim.treesitter.get_parser(0):parse()`: Force a re-parse of the current buffer. +- `:InspectTree`: Open a window showing the syntax tree (built-in to Neovim 0.10+). +- `:EditQuery`: Open the query editor for the current language. diff --git a/modules/mixins/dotfiles/config/nvim/fnl/config/blink.fnl b/modules/mixins/dotfiles/config/nvim/fnl/config/blink.fnl @@ -6,7 +6,6 @@ :<C-p> [:select_prev :fallback] :<C-n> [:select_next :fallback] :<C-b> [:scroll_documentation_up :fallback] - :<C-b> [:scroll_documentation_up :fallback] :<C-f> [:scroll_documentation_down :fallback] :<C-Space> [:show :show_documentation diff --git a/modules/mixins/dotfiles/config/nvim/fnl/config/lsp.fnl b/modules/mixins/dotfiles/config/nvim/fnl/config/lsp.fnl @@ -48,7 +48,9 @@ :nixd {} :intelephense {} :rust_analyzer {} + :harper_ls {} :expert {} + :ts_ls {} :zls {}}] (each [server config (pairs servers)] (vim.lsp.enable server config)) diff --git a/modules/mixins/dotfiles/config/nvim/fnl/config/treesitter.fnl b/modules/mixins/dotfiles/config/nvim/fnl/config/treesitter.fnl @@ -1,24 +1,15 @@ -(local {:nvim_command command :nvim_create_autocmd autocmd} vim.api) -(local {: keys} (require :std.table)) -(local ts (require :nvim-treesitter)) -(local all-parsers (keys (require :nvim-treesitter.parsers))) -(fn build [] - (: (ts.install all-parsers) :wait 300000) - (: (ts.update all-parsers) :wait 300000)) +(local {:nvim_create_autocmd autocmd} vim.api) -; To force rebuild: -; rm -rf ~/.local/share/nvim/site -; (ts.install all-parsers {:force true}) -;; Adapted from https://github.com/nvim-treesitter/nvim-treesitter/discussions/7894 (fn config [] - (local parsers (require :nvim-treesitter.parsers)) - (ts.setup {:highlight {:enable true} :indent {:enable true}}) (autocmd :FileType {:callback (fn [] (let [lang (vim.treesitter.language.get_lang vim.bo.filetype)] (when (and lang - (pcall vim.treesitter.get_parser 0 lang)) + (pcall vim.treesitter.language.inspect + lang)) + (vim.treesitter.start 0 lang) + (set vim.wo.foldmethod :expr) (set vim.wo.foldexpr "v:lua.vim.treesitter.foldexpr()"))))})) -{: build : config} +{: config} diff --git a/modules/mixins/dotfiles/config/nvim/fnl/init.fnl b/modules/mixins/dotfiles/config/nvim/fnl/init.fnl @@ -68,10 +68,6 @@ :branch :master :config (fn [] (: (require :config.lsp) :config))}) - (use "nvim-treesitter/nvim-treesitter" - {:branch :main - :build #(: (require :config.treesitter) :build) - :config #(: (require :config.treesitter) :config)}) (use "tpope/vim-commentary") (use "tpope/vim-repeat") (use "tpope/vim-surround") @@ -79,6 +75,7 @@ ]) (fn init [] + ((. (require :config.treesitter) :config)) (let [vimrc (.. (vim.fn.stdpath :config) :/init_.vim) vim-dir (.. (vim.fn.expand "~") :/.vim/)] (vim.cmd.source vimrc) diff --git a/modules/mixins/dotfiles/config/river/init b/modules/mixins/dotfiles/config/river/init @@ -40,7 +40,6 @@ riverctl map normal Control+$mod l spawn "monofetch" riverctl map normal $mod+Shift o spawn "todomenu $dmenu_args" riverctl map normal $alt+Shift d spawn "clipmenu $dmenu_args" riverctl map normal $alt+Shift l spawn "langmenu $dmenu_args" -riverctl map normal $alt+Shift t spawn "tempmenu $dmenu_args" riverctl map normal $alt+Shift m spawn "plsmenu $dmenu_args" riverctl map normal $alt+Shift h spawn "huemenu $dmenu_args" @@ -53,6 +52,9 @@ riverctl map normal $alt+Shift p spawn "passmenu $dmenu_args" riverctl map normal $mod+Shift s spawn "screenshot" riverctl map normal $alt+Shift s spawn "screenshot" +riverctl map normal $mod+Shift t spawn "yank-to-todo" +riverctl map normal $alt+Shift t spawn "tempmenu $dmenu_args" + riverctl map normal None XF86AudioMute spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && (wpctl get-volume @DEFAULT_AUDIO_SINK@ | grep -q MUTED && echo 0 > $wobsock) || wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/[^0-9]//g' > $wobsock" riverctl map normal None XF86AudioLowerVolume spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- && wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/[^0-9]//g' > $wobsock" riverctl map normal None XF86AudioRaiseVolume spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ && wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/[^0-9]//g' > $wobsock" diff --git a/modules/mixins/dotfiles/config/shell/rc/aliased-short-names b/modules/mixins/dotfiles/config/shell/rc/aliased-short-names @@ -1,13 +1,19 @@ #!/bin/sh +alias pw='LC_ALL=C tr -dc a-zA-Z0-9 < /dev/urandom | head -c 20; echo' alias fg='cdg && magdalena look-file && cd -' alias f='magdalena look-file' alias p='pmn' + alias l='ls' +alias lg='lazygit' -alias tailup='ss tailscaled && tailscale up --login-server https://head.saatana.cat:443' -alias metailup='ss tailscaled && tailscale up --login-server https://hs.metafori.com:443' +alias tailup='tailscale up --login-server https://head.saatana.cat:443' +alias metailup='tailscale up --login-server https://hs.metafori.com:443' + +alias taildo='tailscale down' +alias tailst='tailscale status' alias tailno="ssh nixaran 'sudo headscale nodes list'" alias metailno="ssh metafori-infra 'sudo headscale nodes list'" @@ -19,18 +25,6 @@ alias mrd='magdalena recent-dirs' alias mrf='magdalena recent-files' alias pdm='pkill -f dmenu' - -alias nprg="alafont --font 'PragmataPro' --size '14.0'" -alias bprg="alafont --font 'PragmataPro' --size '18.0'" -alias ncom="alafont --font 'Comic Code' --size '14.0'" -alias bcom="alafont --font 'Comic Code' --size '16.0'" -alias nbit="alafont --font 'UW ttyp0' --size '12.0'" -alias bbit="alafont --font 'UW ttyp0' --size '22.0'" - -alias nixaran='ssh nixaran' - -alias pw='LC_ALL=C tr -dc a-zA-Z0-9 < /dev/urandom | head -c 20; echo' - alias pcm='pcmanfm' alias duh='du -hs' @@ -43,14 +37,6 @@ alias scan='sudo nmap -n -PN -sT -sU -p-' alias tls='tmux ls' alias tma='tmux attach-session -t' -alias ss='sudo systemctl start' -alias st='sudo systemctl stop' -alias sd='sudo systemctl -n 100 status' - -alias us='systemctl --user start' -alias ut='systemctl --user stop' -alias ud='systemctl --user -n 100 status' - alias pps='podman ps' alias plo='podman logs' alias pst='podman stats' @@ -81,9 +67,9 @@ alias obsno='obsidian "obsidian://open?vault=nota" & disown' alias obscpt='obsidian "obsidian://open?vault=counterpoint" & disown' alias kat='khal at' -alias kan='khal new' alias khw='khal list now 7d' alias khi='khal interactive' +alias kan='khal new --alarms "1h,30m,15m,5m"' alias bpp='backup pass --push' alias bnp='backup nota --push' @@ -93,7 +79,7 @@ alias h='histdb' alias hs='histdb-sync' alias nr='newsraft' -alias nre='$EDITOR ~/.config/newsraft/feeds && backup rss' +alias nre='$EDITOR ~/src/nix/modules/mixins/dotfiles/config/newsraft/feeds && hms' alias age_decrypt='age --decrypt --identity "$HOME"/misc/random/key.txt' @@ -116,7 +102,6 @@ alias datamix='datasette serve $HOME/.mixxx/mixxxdb.sqlite --setting sql_time_li alias nd='nix develop' alias hms='backup nix && nh home switch ~/src/nix' -alias hmdiff='home-manager generations | head -n 2 | cut -d' ' -f 7 | tac | xargs nvd diff' alias amsp='mpva https://radio.stereoscenic.com/asp-s --no-resume-playback' alias nts1='mpva https://stream-relay-geo.ntslive.net/stream --no-resume-playback' @@ -125,6 +110,7 @@ alias nts2='mpva https://stream-relay-geo.ntslive.net/stream2 --no-resume-playba alias op='offpunk' alias mf='monofetch' alias sr='speedread -w 400' +alias jlr='jless --mode line' alias chop='perl -pe chop' alias chomp='perl -pe chomp' @@ -133,5 +119,3 @@ alias scr='source ./hack/creds-from-pass' alias cej='just check' alias dpj='just deploy' - -alias jlr='jless --mode line' diff --git a/modules/mixins/dotfiles/config/shell/rc/command_overrides b/modules/mixins/dotfiles/config/shell/rc/command_overrides @@ -65,3 +65,5 @@ alias mksrcinfo='makepkg --printsrcinfo >| .SRCINFO' alias ncdu='sudo ncdu -x --exclude /nix --exclude $config_home/misc/mnt /' alias pracomer='pracomer --file /tmp/pracomer.log' + +alias bazel='bazelisk' diff --git a/modules/mixins/dotfiles/config/shell/rc/functions b/modules/mixins/dotfiles/config/shell/rc/functions @@ -48,7 +48,7 @@ bandsnatch() { gotosleep() { date - sleep "${1?}m" && systemctl suspend + sleep "${1?}m" && sudo zzz } tracklist() { @@ -66,13 +66,6 @@ tracklist() { done } -taildo() { - if systemctl is-active --quiet tailscaled; then - tailscale down - sudo systemctl stop tailscaled - fi -} - fetch_rss() { url="${1?}" curl -s "$url" | xmllint --html --xpath "//link[@type='application/rss+xml' or @type='application/atom+xml']/@href" - 2>/dev/null diff --git a/modules/mixins/dotfiles/config/zsh/rc/functions b/modules/mixins/dotfiles/config/zsh/rc/functions @@ -4,10 +4,6 @@ fzf_copy_from_cliphist() { { cliphist list | fzf --no-sort | cliphist decode | wl-copy && zle reset-prompt || true } 2>/dev/null } -tms_open() { - tms && zle reset-prompt || true 2>/dev/null -} - erg() { $EDITOR \ +'/\v'"${1/\//\\/}" \ diff --git a/modules/mixins/dotfiles/config/zsh/rc/keybindings b/modules/mixins/dotfiles/config/zsh/rc/keybindings @@ -52,9 +52,7 @@ shift_right=$(tput kRIT 2>/dev/null) [[ $shift_right ]] && bindkey "$shift_right" forward-word zle -N fzf_copy_from_cliphist -zle -N tms_open -bindkey '^T' 'tms_open' bindkey '^J' 'fzf_copy_from_cliphist' bindkey '^F' 'magdalena_goto_file' bindkey '^K' 'magdalena_goto_dir' diff --git a/modules/mixins/dotfiles/home/gitignore b/modules/mixins/dotfiles/home/gitignore @@ -1,4 +1,6 @@ +.qwen/ .crush/ +.claude/ .gemini/ -.qwen/ AGENTS.md +CLAUDE.md diff --git a/modules/mixins/dotfiles/home/netrc b/modules/mixins/dotfiles/home/netrc @@ -1,3 +0,0 @@ -machine bazel.saatana.cat -login cache -password Zn7IIObC0CjnMobe41wq diff --git a/modules/services/caddy.nix b/modules/services/caddy.nix @@ -64,12 +64,8 @@ in { } } ''; - virtualHosts = {}; }; networking.firewall.allowedTCPPorts = [80 443]; - systemd.tmpfiles.rules = [ - "d /var/lib/haravara/static 0755 caddy caddy -" - ]; }; } diff --git a/modules/services/harmonia.nix b/modules/services/harmonia.nix @@ -62,7 +62,7 @@ in { bind = "127.0.0.1:${toString cfg.port}"; workers = 4; max_connection_rate = 256; - priority = cfg.priority; + inherit (cfg) priority; enable_compression = cfg.enableCompression; }; }; diff --git a/modules/services/listenbrainz-mpd.nix b/modules/services/listenbrainz-mpd.nix @@ -0,0 +1,83 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.services.haravara.listenbrainz-mpd; + configFile = pkgs.writeText "listenbrainz-mpd.toml" '' + [submission] + api_url = "${cfg.apiUrl}" + genres_as_folksonomy = ${lib.boolToString cfg.genresAsFolksonomy} + + [mpd] + address = "${cfg.mpdAddress}" + password = "${cfg.mpdPassword}" + ''; +in { + options.services.haravara.listenbrainz-mpd = { + enable = lib.mkEnableOption "ListenBrainz MPD client"; + tokenFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + description = "Path to the secret file containing the ListenBrainz token"; + }; + apiUrl = lib.mkOption { + type = lib.types.str; + default = "https://api.listenbrainz.org"; + }; + genresAsFolksonomy = lib.mkOption { + type = lib.types.bool; + default = false; + }; + mpdAddress = lib.mkOption { + type = lib.types.str; + default = "localhost:6695"; + }; + mpdPassword = lib.mkOption { + type = lib.types.str; + default = ""; + }; + mpdPort = lib.mkOption { + type = lib.types.port; + default = 37281; + }; + mpdHostFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + description = "Path to the secret file containing MPD_HOST"; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.services.listenbrainz-mpd = { + description = "ListenBrainz MPD client"; + after = ["network.target"]; + wantedBy = ["multi-user.target"]; + + environment = { + MPD_PORT = toString cfg.mpdPort; + XDG_DATA_HOME = "/var/lib/listenbrainz-mpd"; + }; + + serviceConfig = { + LoadCredential = + (lib.optional (cfg.mpdHostFile != null) "mpd_host:${toString cfg.mpdHostFile}") + ++ (lib.optional (cfg.tokenFile != null) "token:${toString cfg.tokenFile}"); + + ExecStart = pkgs.writeShellScript "listenbrainz-mpd-start" '' + if [ -f "$CREDENTIALS_DIRECTORY/mpd_host" ]; then + export MPD_HOST=$(cat "$CREDENTIALS_DIRECTORY/mpd_host") + fi + if [ -f "$CREDENTIALS_DIRECTORY/token" ]; then + export LISTENBRAINZ_TOKEN=$(cat "$CREDENTIALS_DIRECTORY/token") + fi + exec ${pkgs.listenbrainz-mpd}/bin/listenbrainz-mpd --config ${configFile} + ''; + Restart = "always"; + DynamicUser = true; + StateDirectory = "listenbrainz-mpd"; + }; + }; + }; +} diff --git a/modules/services/miniflux.nix b/modules/services/miniflux.nix @@ -0,0 +1,32 @@ +{ + config, + lib, + ... +}: let + cfg = config.services.haravara.miniflux; +in { + options.services.haravara.miniflux = { + enable = lib.mkEnableOption "Miniflux RSS Reader"; + domain = lib.mkOption { + type = lib.types.str; + }; + }; + + config = lib.mkIf cfg.enable { + age.secrets.miniflux-secrets.file = ../../secrets/miniflux-secrets.age; + + services.miniflux = { + enable = true; + config = { + LISTEN_ADDR = "127.0.0.1:8931"; + RUN_MIGRATIONS = 1; + CREATE_ADMIN = 0; + }; + adminCredentialsFile = config.age.secrets.miniflux-secrets.path; + }; + + services.caddy.virtualHosts."${cfg.domain}".extraConfig = '' + reverse_proxy 127.0.0.1:8931 + ''; + }; +} diff --git a/modules/services/monitord-exporter.lock b/modules/services/monitord-exporter.lock @@ -1,2218 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anstream" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "anstyle-parse" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys", -] - -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - -[[package]] -name = "ascii" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" - -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-io" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" -dependencies = [ - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "windows-sys", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "bitflags" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" - -[[package]] -name = "bumpalo" -version = "3.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" - -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" - -[[package]] -name = "cc" -version = "1.2.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" -dependencies = [ - "find-msvc-tools", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "chrono" -version = "0.4.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "wasm-bindgen", - "windows-link", -] - -[[package]] -name = "chunked_transfer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901" - -[[package]] -name = "clap" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "clap_lex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" - -[[package]] -name = "colorchoice" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "configparser" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b" -dependencies = [ - "indexmap", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "deranged" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "endi" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" - -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "event-listener" -version = "5.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "find-msvc-tools" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" - -[[package]] -name = "flate2" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-core" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" - -[[package]] -name = "futures-io" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" - -[[package]] -name = "futures-lite" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" - -[[package]] -name = "futures-task" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" - -[[package]] -name = "futures-util" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" -dependencies = [ - "futures-core", - "futures-macro", - "futures-task", - "pin-project-lite", - "slab", -] - -[[package]] -name = "getrandom" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasip2", - "wasip3", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "int-enum" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e366a1634cccc76b4cfd3e7580de9b605e4d93f1edac48d786c1f867c0def495" -dependencies = [ - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "js-sys" -version = "0.3.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - -[[package]] -name = "libc" -version = "0.2.183" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" - -[[package]] -name = "linux-raw-sys" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" - -[[package]] -name = "litemap" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" -dependencies = [ - "libc", - "wasi", - "windows-sys", -] - -[[package]] -name = "monitord" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f96683d462cb43b9060c23532b0506f9fa483058ed7583502a1c10accf9ffd5" -dependencies = [ - "anyhow", - "clap", - "configparser", - "futures-util", - "indexmap", - "int-enum", - "procfs", - "serde", - "serde_json", - "serde_repr", - "serde_tuple", - "struct-field-names-as-array", - "strum", - "strum_macros", - "thiserror 2.0.18", - "tokio", - "tracing", - "tracing-core", - "tracing-glog", - "tracing-subscriber", - "uzers", - "zbus", - "zlink", - "zvariant", - "zvariant_derive", -] - -[[package]] -name = "monitord-exporter" -version = "0.19.0" -dependencies = [ - "anyhow", - "clap", - "configparser", - "monitord", - "prometheus_exporter", - "signal-hook", - "tempfile", - "tokio", - "tracing", - "tracing-core", - "tracing-glog", - "tracing-subscriber", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "nu-ansi-term" -version = "0.50.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "num-conv" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "polling" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix", - "windows-sys", -] - -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - -[[package]] -name = "proc-macro-crate" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proc-macro2-diagnostics" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "procfs" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" -dependencies = [ - "bitflags", - "chrono", - "flate2", - "procfs-core", - "rustix", -] - -[[package]] -name = "procfs-core" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" -dependencies = [ - "bitflags", - "chrono", - "hex", -] - -[[package]] -name = "prometheus" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" -dependencies = [ - "cfg-if", - "fnv", - "lazy_static", - "memchr", - "parking_lot", - "thiserror 1.0.69", -] - -[[package]] -name = "prometheus_exporter" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf17cbebe0bfdf4f279ef84eeefe0d50468b0b7116f078acf41d456e48fe81a" -dependencies = [ - "ascii", - "lazy_static", - "log", - "prometheus", - "thiserror 1.0.69", - "tiny_http", -] - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags", -] - -[[package]] -name = "rustix" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_tuple" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af196b9c06f0aa5555ab980c01a2527b0f67517da8d68b1731b9d4764846a6f" -dependencies = [ - "serde", - "serde_tuple_macros", -] - -[[package]] -name = "serde_tuple_macros" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3a1e7d2eadec84deabd46ae061bf480a91a6bce74d25dad375bd656f2e19d8" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b57709da74f9ff9f4a27dce9526eec25ca8407c45a7887243b031a58935fb8e" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "simd-adler32" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "struct-field-names-as-array" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ba4bae771f9cc992c4f403636c54d2ef13acde6367583e99d06bb336674dd9" -dependencies = [ - "struct-field-names-as-array-derive", -] - -[[package]] -name = "struct-field-names-as-array-derive" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2dbf8b57f3ce20e4bb171a11822b283bdfab6c4bb0fe64fa729f045f23a0938" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tempfile" -version = "3.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" -dependencies = [ - "fastrand", - "getrandom", - "once_cell", - "rustix", - "windows-sys", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thread_local" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "time" -version = "0.3.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" - -[[package]] -name = "time-macros" -version = "0.2.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny_http" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f8734c6d6943ad6df6b588d228a87b4af184998bcffa268ceddf05c2055a8c" -dependencies = [ - "ascii", - "chunked_transfer", - "log", - "time", - "url", -] - -[[package]] -name = "tinystr" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tokio" -version = "1.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" -dependencies = [ - "bytes", - "libc", - "mio", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "tracing", - "windows-sys", -] - -[[package]] -name = "tokio-macros" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-stream" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.25.4+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" -dependencies = [ - "indexmap", - "toml_datetime", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_parser" -version = "1.0.9+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" -dependencies = [ - "winnow", -] - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-glog" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c45ab066a087486d062874889d4b551add3a33890969475d606f175c5ce7b68" -dependencies = [ - "chrono", - "nu-ansi-term 0.46.0", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" -dependencies = [ - "chrono", - "nu-ansi-term 0.50.3", - "sharded-slab", - "smallvec", - "thread_local", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "uds_windows" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" -dependencies = [ - "memoffset", - "tempfile", - "windows-sys", -] - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "uuid" -version = "1.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" -dependencies = [ - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "uzers" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8275fb1afee25b4111d2dc8b5c505dbbc4afd0b990cb96deb2d88bff8be18d" -dependencies = [ - "libc", - "log", -] - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "yoke" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zbus" -version = "5.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc" -dependencies = [ - "async-broadcast", - "async-recursion", - "async-trait", - "enumflags2", - "event-listener", - "futures-core", - "futures-lite", - "hex", - "libc", - "ordered-stream", - "rustix", - "serde", - "serde_repr", - "tokio", - "tracing", - "uds_windows", - "uuid", - "windows-sys", - "winnow", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "5.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zbus_names", - "zvariant", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "4.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" -dependencies = [ - "serde", - "winnow", - "zvariant", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zlink" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5ad065e2697e98764f2738793904ff0aaa672707d0ee1592dfb4c47800962a" -dependencies = [ - "zlink-smol", - "zlink-tokio", -] - -[[package]] -name = "zlink-core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae6561573e9996c2c26bf1c723b137a99c2d571a3276bd8f4ac52bfa44b3f2c" -dependencies = [ - "futures-util", - "itoa", - "libc", - "pin-project-lite", - "rustix", - "ryu", - "serde", - "serde_json", - "tracing", - "zlink-macros", -] - -[[package]] -name = "zlink-macros" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4219a5aadc4844073d134e27fd52228933a462fbd07fe51ac5df8393f08168a" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zlink-smol" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "befa02505904ee15f6721fdae1b6473d59649049c1f1810175fb7205a4dca82a" -dependencies = [ - "async-broadcast", - "async-channel", - "async-io", - "futures-lite", - "futures-util", - "pin-project-lite", - "zlink-core", -] - -[[package]] -name = "zlink-tokio" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "378110fc4fad5fa9359251eb830d87993efcca44245f538a552cf26001649378" -dependencies = [ - "futures-util", - "pin-project-lite", - "tokio", - "tokio-stream", - "zlink-core", -] - -[[package]] -name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - -[[package]] -name = "zvariant" -version = "5.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b" -dependencies = [ - "endi", - "enumflags2", - "serde", - "winnow", - "zvariant_derive", - "zvariant_utils", -] - -[[package]] -name = "zvariant_derive" -version = "5.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "syn", - "winnow", -] diff --git a/modules/services/monitord.lock b/modules/services/monitord.lock @@ -1,1664 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anstyle" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" - -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-io" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" -dependencies = [ - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "windows-sys", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "bitflags" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" - -[[package]] -name = "bumpalo" -version = "3.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" - -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" - -[[package]] -name = "cc" -version = "1.2.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" -dependencies = [ - "find-msvc-tools", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "chrono" -version = "0.4.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "wasm-bindgen", - "windows-link", -] - -[[package]] -name = "clap" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" -dependencies = [ - "anstyle", - "clap_lex", -] - -[[package]] -name = "clap_derive" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "clap_lex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "configparser" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b" -dependencies = [ - "indexmap", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "endi" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" - -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "event-listener" -version = "5.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "find-msvc-tools" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" - -[[package]] -name = "flate2" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "futures-core" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" - -[[package]] -name = "futures-io" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" - -[[package]] -name = "futures-lite" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" - -[[package]] -name = "futures-task" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" - -[[package]] -name = "futures-util" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" -dependencies = [ - "futures-core", - "futures-macro", - "futures-task", - "pin-project-lite", - "slab", -] - -[[package]] -name = "getrandom" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasip2", - "wasip3", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "int-enum" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e366a1634cccc76b4cfd3e7580de9b605e4d93f1edac48d786c1f867c0def495" -dependencies = [ - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn", -] - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "js-sys" -version = "0.3.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - -[[package]] -name = "libc" -version = "0.2.183" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" - -[[package]] -name = "linux-raw-sys" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" -dependencies = [ - "libc", - "wasi", - "windows-sys", -] - -[[package]] -name = "monitord" -version = "0.20.0" -dependencies = [ - "anyhow", - "clap", - "configparser", - "futures-util", - "indexmap", - "int-enum", - "procfs", - "serde", - "serde_json", - "serde_repr", - "serde_tuple", - "struct-field-names-as-array", - "strum", - "strum_macros", - "tempfile", - "thiserror", - "tokio", - "tracing", - "tracing-core", - "tracing-glog", - "tracing-subscriber", - "uzers", - "zbus", - "zlink", - "zvariant", - "zvariant_derive", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "nu-ansi-term" -version = "0.50.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "polling" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix", - "windows-sys", -] - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - -[[package]] -name = "proc-macro-crate" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proc-macro2-diagnostics" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "procfs" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" -dependencies = [ - "bitflags", - "chrono", - "flate2", - "procfs-core", - "rustix", -] - -[[package]] -name = "procfs-core" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" -dependencies = [ - "bitflags", - "chrono", - "hex", -] - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" - -[[package]] -name = "rustix" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_tuple" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af196b9c06f0aa5555ab980c01a2527b0f67517da8d68b1731b9d4764846a6f" -dependencies = [ - "serde", - "serde_tuple_macros", -] - -[[package]] -name = "serde_tuple_macros" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3a1e7d2eadec84deabd46ae061bf480a91a6bce74d25dad375bd656f2e19d8" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "simd-adler32" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "struct-field-names-as-array" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ba4bae771f9cc992c4f403636c54d2ef13acde6367583e99d06bb336674dd9" -dependencies = [ - "struct-field-names-as-array-derive", -] - -[[package]] -name = "struct-field-names-as-array-derive" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2dbf8b57f3ce20e4bb171a11822b283bdfab6c4bb0fe64fa729f045f23a0938" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tempfile" -version = "3.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" -dependencies = [ - "fastrand", - "getrandom", - "once_cell", - "rustix", - "windows-sys", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thread_local" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "tokio" -version = "1.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" -dependencies = [ - "bytes", - "libc", - "mio", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "tracing", - "windows-sys", -] - -[[package]] -name = "tokio-macros" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-stream" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.25.4+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" -dependencies = [ - "indexmap", - "toml_datetime", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_parser" -version = "1.0.9+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" -dependencies = [ - "winnow", -] - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-glog" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c45ab066a087486d062874889d4b551add3a33890969475d606f175c5ce7b68" -dependencies = [ - "chrono", - "nu-ansi-term 0.46.0", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" -dependencies = [ - "chrono", - "nu-ansi-term 0.50.3", - "sharded-slab", - "smallvec", - "thread_local", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "uds_windows" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" -dependencies = [ - "memoffset", - "tempfile", - "windows-sys", -] - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "uuid" -version = "1.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" -dependencies = [ - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "uzers" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8275fb1afee25b4111d2dc8b5c505dbbc4afd0b990cb96deb2d88bff8be18d" -dependencies = [ - "libc", - "log", -] - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - -[[package]] -name = "zbus" -version = "5.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc" -dependencies = [ - "async-broadcast", - "async-recursion", - "async-trait", - "enumflags2", - "event-listener", - "futures-core", - "futures-lite", - "hex", - "libc", - "ordered-stream", - "rustix", - "serde", - "serde_repr", - "tokio", - "tracing", - "uds_windows", - "uuid", - "windows-sys", - "winnow", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "5.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zbus_names", - "zvariant", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "4.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" -dependencies = [ - "serde", - "winnow", - "zvariant", -] - -[[package]] -name = "zlink" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5ad065e2697e98764f2738793904ff0aaa672707d0ee1592dfb4c47800962a" -dependencies = [ - "zlink-smol", - "zlink-tokio", -] - -[[package]] -name = "zlink-core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae6561573e9996c2c26bf1c723b137a99c2d571a3276bd8f4ac52bfa44b3f2c" -dependencies = [ - "futures-util", - "itoa", - "libc", - "pin-project-lite", - "rustix", - "ryu", - "serde", - "serde_json", - "tracing", - "zlink-macros", -] - -[[package]] -name = "zlink-macros" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4219a5aadc4844073d134e27fd52228933a462fbd07fe51ac5df8393f08168a" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zlink-smol" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "befa02505904ee15f6721fdae1b6473d59649049c1f1810175fb7205a4dca82a" -dependencies = [ - "async-broadcast", - "async-channel", - "async-io", - "futures-lite", - "futures-util", - "pin-project-lite", - "zlink-core", -] - -[[package]] -name = "zlink-tokio" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "378110fc4fad5fa9359251eb830d87993efcca44245f538a552cf26001649378" -dependencies = [ - "futures-util", - "pin-project-lite", - "tokio", - "tokio-stream", - "zlink-core", -] - -[[package]] -name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - -[[package]] -name = "zvariant" -version = "5.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b" -dependencies = [ - "endi", - "enumflags2", - "serde", - "winnow", - "zvariant_derive", - "zvariant_utils", -] - -[[package]] -name = "zvariant_derive" -version = "5.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "syn", - "winnow", -] diff --git a/modules/services/monitoring.nix b/modules/services/monitoring.nix @@ -29,11 +29,6 @@ sha256 = "665bc3e86b79749b2fdae7787f4b7502e00830898bf48f73c68134471f72bf33"; } { - name = "monitord.json"; - url = "https://grafana.com/api/dashboards/21855/revisions/1/download"; - sha256 = "JJdkgnlctjofhaLFmwZrPe37oL7kmlK4srCUVH/2cJw="; - } - { name = "seaweedfs.json"; url = "https://raw.githubusercontent.com/chrislusf/seaweedfs/c9100a7213e27963f58a0ba783c9598a177384b6/other/metrics/grafana_seaweedfs.json"; sha256 = "e364d113fed54127cbda10c4c2809d99a90dcc38bcd949b91846d0831e1a68e4"; @@ -57,42 +52,6 @@ ''; } ]); - - monitord = pkgs.rustPlatform.buildRustPackage rec { - pname = "monitord"; - version = "0.20.0"; - src = pkgs.fetchFromGitHub { - owner = "cooperlees"; - repo = "monitord"; - rev = version; - hash = "sha256-+mqGt79e8sdfClc+066d5T7V4atl3DJRs65elyGpNcE="; - }; - cargoLock.lockFile = ./monitord.lock; - postUnpack = '' - cp ${./monitord.lock} source/Cargo.lock - ''; - nativeBuildInputs = [pkgs.pkg-config]; - buildInputs = [pkgs.dbus]; - doCheck = false; - }; - - monitord-exporter = pkgs.rustPlatform.buildRustPackage rec { - pname = "monitord-exporter"; - version = "0.19.0"; - src = pkgs.fetchFromGitHub { - owner = "cooperlees"; - repo = "monitord-exporter"; - rev = version; - hash = "sha256-z1a20SXtEuVGDcxuJ7HWd1GzzaSZT30biYX89fS5AZM="; - }; - cargoLock.lockFile = ./monitord-exporter.lock; - postUnpack = '' - cp ${./monitord-exporter.lock} source/Cargo.lock - ''; - nativeBuildInputs = [pkgs.pkg-config]; - buildInputs = [pkgs.dbus]; - doCheck = false; - }; in { options.services.haravara.monitoring = { enable = lib.mkEnableOption "Monitoring stack (VictoriaMetrics + Grafana)"; @@ -136,7 +95,7 @@ in { prometheus-node-exporter.serviceConfig = { # Relaxing sandboxing and running as root as it fails to collect metrics reliably - # due to dbus connection resets and pending reply limits. + # due to DBus connection resets and pending reply limits. RestrictNamespaces = lib.mkForce false; RestrictAddressFamilies = lib.mkForce ["AF_UNIX" "AF_INET" "AF_INET6" "AF_NETLINK"]; DynamicUser = lib.mkForce false; @@ -146,79 +105,15 @@ in { prometheus-systemd-exporter.serviceConfig = { # Relaxing sandboxing and running as root as it fails to collect metrics reliably - # due to dbus connection resets and pending reply limits. + # due to DBus connection resets and pending reply limits. RestrictNamespaces = lib.mkForce false; RestrictAddressFamilies = lib.mkForce ["AF_UNIX" "AF_INET" "AF_INET6" "AF_NETLINK"]; DynamicUser = lib.mkForce false; User = lib.mkForce "root"; Group = lib.mkForce "root"; }; - - monitord-exporter = { - description = "monitord-exporter"; - after = ["network-online.target"]; - requires = ["network-online.target"]; - wantedBy = ["multi-user.target"]; - serviceConfig = { - ExecStart = "${monitord-exporter}/bin/monitord-exporter --port 9091"; - Restart = "on-failure"; - User = "root"; - Group = "root"; - IPAddressAllow = ["127.0.0.1" "::1"]; - IPAddressDeny = "any"; - }; - }; - - monitord = { - description = "monitord - systemd health metrics collector"; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${monitord}/bin/monitord -c /etc/monitord.conf"; - User = "root"; - Group = "root"; - }; - }; - }; - - timers = { - monitord = { - description = "Run monitord periodically"; - wantedBy = ["timers.target"]; - timerConfig = { - OnBootSec = "1min"; - OnUnitActiveSec = "5min"; - }; - }; }; }; - - environment.etc."monitord.conf".text = '' - [monitord] - daemon = false - output_format = json - daemon_stats_refresh_secs = 300 - - [units] - enabled = true - - [pid1] - enabled = true - - [networkd] - enabled = true - - [dbus] - enabled = false - - [varlink] - enabled = false - ''; - - environment.systemPackages = [ - monitord - monitord-exporter - ]; - services = { victoriametrics = { enable = true; @@ -246,11 +141,6 @@ in { metrics_path = "/metrics"; } { - job_name = "monitord"; - static_configs = [{targets = ["127.0.0.1:9091"];}]; - metrics_path = "/metrics"; - } - { job_name = "seaweedfs"; static_configs = [ { @@ -296,9 +186,11 @@ in { loki = { enable = true; configuration = { - server.http_listen_address = "127.0.0.1"; - server.http_listen_port = 3100; - server.grpc_listen_address = "127.0.0.1"; + server = { + http_listen_address = "127.0.0.1"; + http_listen_port = 3100; + grpc_listen_address = "127.0.0.1"; + }; auth_enabled = false; common = { diff --git a/modules/services/mtmn.nix b/modules/services/mtmn.nix Binary files differ. diff --git a/modules/services/napkins.nix b/modules/services/napkins.nix @@ -0,0 +1,38 @@ +{ + config, + lib, + ... +}: let + cfg = config.services.haravara.napkins; +in { + options.services.haravara.napkins = { + enable = lib.mkEnableOption "Napkins file server"; + domain = lib.mkOption { + type = lib.types.str; + description = "Domain to serve napkins on"; + }; + upstream = lib.mkOption { + type = lib.types.str; + default = "https://estri.saatana.cat"; + description = "Upstream host to proxy napkins content from"; + }; + path = lib.mkOption { + type = lib.types.str; + default = "/napkins"; + description = "Path prefix on the upstream host"; + }; + }; + + config = lib.mkIf cfg.enable { + services.caddy.virtualHosts."${cfg.domain}".extraConfig = '' + @spa not path_regexp \.[^/]+$ + rewrite @spa ${cfg.path}/index.html + + @jsasset path_regexp napkins\.js$ + rewrite @jsasset ${cfg.path}/napkins.js + + rewrite * ${cfg.path}{uri} + reverse_proxy ${cfg.upstream} + ''; + }; +} diff --git a/modules/services/redlib.nix b/modules/services/redlib.nix @@ -1,9 +1,26 @@ { config, lib, + pkgs, ... }: let cfg = config.services.haravara.redlib; + redlib-package = pkgs.stdenv.mkDerivation rec { + pname = "redlib"; + version = "0.36.0"; + src = builtins.fetchurl { + url = "https://github.com/Silvenga/redlib/releases/download/v${version}/redlib-x86_64-unknown-linux-gnu.tar.gz"; + sha256 = "dd652c806de2b604c105e6e8c1a960102b3387228b6afc04cc90f6ab7324d588"; + }; + unpackPhase = '' + tar -xzf $src + ''; + installPhase = '' + mkdir -p $out/bin + cp redlib $out/bin/ + chmod +x $out/bin/redlib + ''; + }; in { options.services.haravara.redlib = { enable = lib.mkEnableOption "Redlib Reddit Frontend"; @@ -15,22 +32,36 @@ in { default = null; description = "The auth snippet to import"; }; + port = lib.mkOption { + type = lib.types.port; + default = 7828; + description = "Port to bind to"; + }; + address = lib.mkOption { + type = lib.types.str; + default = "127.0.0.1"; + description = "Address to bind to"; + }; }; config = lib.mkIf cfg.enable { - services.redlib = { - enable = true; - port = 7828; - address = "127.0.0.1"; + systemd.services.redlib = { + description = "Redlib Reddit Frontend"; + after = ["network.target"]; + wantedBy = ["multi-user.target"]; + serviceConfig = { + ExecStart = "${redlib-package}/bin/redlib"; + Restart = "always"; + DynamicUser = true; + }; + environment = { + REDLIB_PORT = toString cfg.port; + REDLIB_ADDRESS = cfg.address; + }; }; services.caddy.virtualHosts."${cfg.domain}".extraConfig = '' - ${lib.optionalString (cfg.authLabel != null) "import ${ - if cfg.authLabel == "default" - then "auth" - else "auth_${cfg.authLabel}" - }"} - reverse_proxy 127.0.0.1:7828 + reverse_proxy ${cfg.address}:${toString cfg.port} ''; }; } diff --git a/modules/services/scorpus.nix b/modules/services/scorpus.nix @@ -0,0 +1,65 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: let + cfg = config.services.haravara.scorpus; +in { + options.services.haravara.scorpus = { + enable = lib.mkEnableOption "Scorpus - ListenBrainz frontend"; + + port = lib.mkOption { + type = lib.types.port; + default = 8321; + }; + + domain = lib.mkOption { + type = lib.types.str; + }; + + dataDir = lib.mkOption { + type = lib.types.str; + default = "/var/lib/scorpus"; + }; + }; + + config = lib.mkIf cfg.enable { + age.secrets.scorpus = { + file = ../../secrets/scorpus.age; + owner = "scorpus"; + }; + + systemd.services.scorpus = { + description = "Scorpus - ListenBrainz frontend"; + wantedBy = ["multi-user.target"]; + after = ["network.target"]; + + environment = { + PORT = toString cfg.port; + DATABASE_FILE = "${cfg.dataDir}/scorpus.db"; + }; + + serviceConfig = { + ExecStart = "${inputs.scorpus.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/scorpus-server"; + EnvironmentFile = config.age.secrets.scorpus.path; + Restart = "always"; + User = "scorpus"; + Group = "scorpus"; + StateDirectory = "scorpus"; + WorkingDirectory = cfg.dataDir; + }; + }; + + users.users.scorpus = { + isSystemUser = true; + group = "scorpus"; + }; + users.groups.scorpus = {}; + + services.caddy.virtualHosts."${cfg.domain}".extraConfig = '' + reverse_proxy 127.0.0.1:${toString cfg.port} + ''; + }; +} diff --git a/modules/services/static.nix b/modules/services/static.nix @@ -17,11 +17,6 @@ in { type = lib.types.str; description = "Directory name in static folder"; }; - hasMine = lib.mkOption { - type = lib.types.bool; - default = false; - description = "Whether to handle the ~m/mine directory mapping"; - }; hasRedirect = lib.mkOption { type = lib.types.bool; default = false; @@ -32,6 +27,11 @@ in { default = false; description = "Whether to handle /s/ shortener proxy"; }; + extraConfig = lib.mkOption { + type = lib.types.lines; + default = ""; + description = "Extra Caddy config appended to the virtual host"; + }; }; }); }; @@ -41,41 +41,17 @@ in { users.users.caddy.extraGroups = ["storage-users"]; systemd.tmpfiles.rules = - [ - "d /var/lib/haravara/static 0755 caddy caddy -" - ] - ++ (lib.concatLists (lib.mapAttrsToList (_: opt: - [ - "d /var/lib/haravara/static/${opt.dir} 0755 caddy caddy -" - "L+ /var/lib/haravara/static/${opt.dir}/index.html - - - - ${staticFiles}/${opt.dir}/index.html" - ] - ++ lib.optionals opt.hasMine [ - "d /var/lib/haravara/static/${opt.dir}/mine 0755 caddy caddy -" - "L+ /var/lib/haravara/static/${opt.dir}/mine/tempo.html - - - - ${staticFiles}/${opt.dir}/mine/tempo.html" - # Special case for avatar which might not exist in all dirs, but we link it if it's there - "L+ /var/lib/haravara/static/${opt.dir}/mine/avatar.jpg - - - - ${staticFiles}/${opt.dir}/mine/avatar.jpg" - ] - ++ lib.optionals (opt.dir != "") [ - "L+ /var/lib/haravara/static/${opt.dir}/hello.jpg - - - - ${staticFiles}/${opt.dir}/hello.jpg" - ]) - cfg.domains)); + ["d /var/lib/haravara/static 0755 caddy caddy -"] + ++ lib.mapAttrsToList ( + _: opt: "L+ /var/lib/haravara/static/${opt.dir} - - - - ${staticFiles}/${opt.dir}" + ) + cfg.domains; services.caddy.virtualHosts = lib.mapAttrs (domain: opt: { extraConfig = '' root * /var/lib/haravara/static/${opt.dir} - '' - + lib.optionalString opt.hasMine '' - # Map ~m to the physical 'mine' directory - handle /~m/* { - uri strip_prefix /~m - file_server { - root /var/lib/haravara/static/${opt.dir}/mine - } - } - '' - + '' file_server '' + lib.optionalString opt.hasShortener '' @@ -85,7 +61,8 @@ in { '' + lib.optionalString opt.hasRedirect '' redir / https://${lib.concatStringsSep "." (lib.drop 1 (lib.splitString "." domain))} - ''; + '' + + opt.extraConfig; }) cfg.domains; }; diff --git a/modules/services/storage-box.nix b/modules/services/storage-box.nix @@ -69,9 +69,6 @@ in { ++ lib.optionals config.services.haravara.monitoring.enable [ "d ${cfg.mountPoint}/nixaran/victoriametrics - - - -" ] - ++ lib.optionals config.services.haravara.harmonia.enable [ - "d ${cfg.mountPoint}/nixaran/harmonia 0750 harmonia harmonia -" - ] ++ lib.optionals config.services.haravara.bazel-cache.enable [ "d ${cfg.mountPoint}/nixaran/bazel-cache 0750 bazel-remote bazel-remote -" ] @@ -102,7 +99,6 @@ in { "seal" "nofail" "x-systemd.automount" - "x-systemd.device-timeout=10" "noauto" ]; }; @@ -123,14 +119,6 @@ in { depends = [cfg.mountPoint]; }; } - // lib.optionalAttrs config.services.haravara.harmonia.enable { - "/var/lib/harmonia" = { - device = "${cfg.mountPoint}/nixaran/harmonia"; - fsType = "none"; - options = ["bind" "nofail" "_netdev"]; - depends = ["${cfg.mountPoint}"]; - }; - } // lib.optionalAttrs config.services.haravara.bazel-cache.enable { "/var/lib/bazel-cache" = { device = "${cfg.mountPoint}/nixaran/bazel-cache"; @@ -163,10 +151,6 @@ in { victoriametrics.after = ["var-lib-victoriametrics.mount"]; victoriametrics.requires = ["var-lib-victoriametrics.mount"]; }) - (lib.mkIf config.services.haravara.harmonia.enable { - harmonia.after = ["var-lib-harmonia.mount"]; - harmonia.requires = ["var-lib-harmonia.mount"]; - }) (lib.mkIf config.services.haravara.bazel-cache.enable { bazel-remote.after = ["var-lib-bazel\\x2dcache.mount"]; bazel-remote.requires = ["var-lib-bazel\\x2dcache.mount"]; diff --git a/secrets.nix b/secrets.nix @@ -13,4 +13,8 @@ in { "secrets/searx-secret-key.age".publicKeys = allKeys; "secrets/headscale-api-key.age".publicKeys = allKeys; "secrets/attic-credentials.age".publicKeys = allKeys; + "secrets/miniflux-secrets.age".publicKeys = allKeys; + "secrets/listenbrainz-token.age".publicKeys = allKeys; + "secrets/mpd-host.age".publicKeys = allKeys; + "secrets/scorpus.age".publicKeys = allKeys; } diff --git a/secrets/attic-credentials.age b/secrets/attic-credentials.age Binary files differ. diff --git a/secrets/listenbrainz-token.age b/secrets/listenbrainz-token.age Binary files differ. diff --git a/secrets/miniflux-secrets.age b/secrets/miniflux-secrets.age Binary files differ. diff --git a/secrets/mpd-host.age b/secrets/mpd-host.age Binary files differ. diff --git a/secrets/mpd-port.age b/secrets/mpd-port.age Binary files differ. diff --git a/secrets/netrc b/secrets/netrc Binary files differ. diff --git a/secrets/scorpus.age b/secrets/scorpus.age Binary files differ.