From 94acdc937bb6d9127a9fada76175ae19c30aef71 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Fri, 25 Sep 2026 23:19:33 +0900 Subject: [PATCH] knotmirror,nix: make knotmirror as sidecar service of gitmirror Signed-off-by: Seongmin Lee --- knotmirror/config/config.go | 1 + knotmirror/knotmirror.go | 8 +- knotmirror/resyncer.go | 159 +++++--- knotmirror/resyncer_test.go | 28 +- nix/Cargo.nix | 782 ++++++++++++++---------------------- nix/modules/knotmirror.nix | 12 +- nix/vm.nix | 4 +- 7 files changed, 458 insertions(+), 536 deletions(-) diff --git a/knotmirror/config/config.go b/knotmirror/config/config.go index 60987c0ec..603597317 100644 --- a/knotmirror/config/config.go +++ b/knotmirror/config/config.go @@ -14,6 +14,7 @@ type Config struct { PlcUrl string `env:"MIRROR_PLC_URL, default=https://plc.directory"` TapUrl string `env:"MIRROR_TAP_URL, default=http://localhost:2480"` DbUrl string `env:"MIRROR_DB_URL, required"` + GitmirrorDbUrl string `env:"MIRROR_GITMIRROR_DB_URL, required"` RedisAddr string `env:"MIRROR_REDIS_ADDR, required"` KnotUseSSL bool `env:"MIRROR_KNOT_USE_SSL, default=false"` // use SSL for Knot when not scheme is not specified KnotSSRF bool `env:"MIRROR_KNOT_SSRF, default=false"` diff --git a/knotmirror/knotmirror.go b/knotmirror/knotmirror.go index 56c6cb1e3..b2bb0136c 100644 --- a/knotmirror/knotmirror.go +++ b/knotmirror/knotmirror.go @@ -2,6 +2,7 @@ package knotmirror import ( "context" + "database/sql" "fmt" "net/http" _ "net/http/pprof" @@ -45,6 +46,11 @@ func Run(ctx context.Context, cfg *config.Config) error { return fmt.Errorf("initializing db: %w", err) } + gitmirrorDb, err := sql.Open("pgx", cfg.GitmirrorDbUrl) + if err != nil { + return fmt.Errorf("opening gitmirror db: %w", err) + } + rdb := redis.NewClient(&redis.Options{Addr: cfg.RedisAddr}) resolver, err := idresolver.RedisResolver("redis://"+cfg.RedisAddr, cfg.PlcUrl) @@ -80,7 +86,7 @@ func Run(ctx context.Context, cfg *config.Config) error { knotstream := knotstream.NewKnotStream(logger, db, cfg) crawler := NewCrawler(logger, db) - resyncer := NewResyncer(logger, db, gitm, indexScheduler, activityScheduler, cfg) + resyncer := NewResyncer(logger, db, gitmirrorDb, gitm, indexScheduler, activityScheduler, cfg) xrpc := xrpc.New(logger, cfg, db, rdb, indexer, resolver, knotstream) xrpc.SetServiceSigner(serviceSigner) adminpage := NewAdminServer(logger, db, resyncer, xrpc, resolver) diff --git a/knotmirror/resyncer.go b/knotmirror/resyncer.go index e2045ab6d..af9854154 100644 --- a/knotmirror/resyncer.go +++ b/knotmirror/resyncer.go @@ -3,20 +3,26 @@ package knotmirror import ( "bytes" "context" + "crypto/sha256" "database/sql" + "encoding/hex" "encoding/json" "errors" "fmt" "io" "log/slog" + "maps" "math/rand" "net/http" "net/url" + "slices" "strings" "sync" "time" "github.com/bluesky-social/indigo/atproto/syntax" + "github.com/go-git/go-git/v5/plumbing/protocol/packp" + "github.com/go-git/go-git/v5/plumbing/protocol/packp/capability" "tangled.org/core/knotmirror/config" "tangled.org/core/knotmirror/db" "tangled.org/core/knotmirror/knotstream" @@ -28,6 +34,7 @@ import ( type Resyncer struct { logger *slog.Logger db *sql.DB + gitmirrorDb *sql.DB gitm GitMirrorManager cfg *config.Config indexer *knotstream.ParallelScheduler @@ -51,6 +58,7 @@ type Resyncer struct { func NewResyncer( l *slog.Logger, db *sql.DB, + gitmirrorDb *sql.DB, gitm GitMirrorManager, indexer *knotstream.ParallelScheduler, activityIndexer *repoindexer.CommitActivityScheduler, @@ -59,6 +67,7 @@ func NewResyncer( return &Resyncer{ logger: log.SubLogger(l, "resyncer"), db: db, + gitmirrorDb: gitmirrorDb, gitm: gitm, cfg: cfg, indexer: indexer, @@ -242,7 +251,7 @@ func (r *Resyncer) doResync(ctx context.Context, repoDid syntax.DID) (bool, erro // HACK: check knot reachability with short timeout before running actual fetch. // This is crucial as git-cli doesn't support http connection timeout. // `http.lowSpeedTime` is only applied _after_ the connection. - format, err := r.checkKnot(ctx, repo) + format, adv, err := r.handshakeKnot(ctx, repo) if err != nil { if isRateLimitError(err) { r.knotBackoffMu.Lock() @@ -254,45 +263,76 @@ func (r *Resyncer) doResync(ctx context.Context, repoDid syntax.DID) (bool, erro return false, fmt.Errorf("knot unreachable: %w", err) } - if format == models.ObjectFormatSHA256 { - return r.suspendUnsupported(ctx, repo) - } - - timeout := r.repoFetchTimeout - if repo.RetryAfter == -1 { - timeout = r.manualResyncTimeout - } - fetchCtx, cancel := context.WithTimeout(ctx, timeout) - defer cancel() - - if err := r.gitm.Sync(fetchCtx, repo); err != nil { - return false, err - } - - // request index to zoekt server - // NOTE: indexing after full git resync is bad design. We are doing _after_ the sync because the firehose's git.ref ops don't carry the repository's full ref set. - // NOTE: and zoekt indexer should directly subscribe to the knot. remove this when we have knotrelay. - if r.cfg.Search.ZoektUrl != "" { - go func() { - idxCtx, cancel := context.WithTimeout(ctx, 10*time.Second) - defer cancel() - defaultBranch, err := r.gitm.DefaultBranch(idxCtx, repo) - if err != nil { - r.logger.Warn("resolving default branch for indexing failed", "did", repo.RepoDid, "error", err) - return - } - if err := r.requestIndex(idxCtx, repo.RepoDid, []branch{defaultBranch}); err != nil { - r.logger.Warn("requesting zoekt index failed", "did", repo.RepoDid, "err", err) - } - }() + // schedule the git sync in gitmirror + defaultBranch, refs, err := parseAdvertisement(adv) + if errors.Is(err, packp.ErrEmptyAdvRefs) { + // empty repo, nothing to mirror + } else if err != nil { + return false, fmt.Errorf("parsing upload-pack advertisement: %w", err) + } else { + sum := sha256.Sum256([]byte(defaultBranch + "\n" + string(refs))) + repo.RepoSha = hex.EncodeToString(sum[:]) + if _, err := r.gitmirrorDb.ExecContext(ctx, + `insert into repos (did, refs_cid, default_branch, refs, deleted_at) + values ($1, $2, $3, $4, null) + on conflict (did) do update set + refs_cid = excluded.refs_cid, + default_branch = excluded.default_branch, + refs = excluded.refs, + deleted_at = null, + state = 'pending', + error_msg = null, + retry_count = 0, + retry_after_us = null, + updated_at = now() + where (repos.refs_cid like 'knotmirror:%' and repos.refs_cid is distinct from excluded.refs_cid) + or repos.deleted_at is not null`, + repo.RepoDid.String(), "knotmirror:"+repo.RepoSha, defaultBranch, refs, + ); err != nil { + return false, fmt.Errorf("scheduling gitmirror sync: %w", err) + } } - // queue repo_stats_update job - r.indexer.AddTask(context.TODO(), &knotstream.Task{Key: repo.RepoDid.String()}) - - if err := r.activityIndexer.Enqueue(ctx, repo.RepoDid); err != nil { - return false, fmt.Errorf("queueing commit activity: %w", err) - } + _ = format + // if format == models.ObjectFormatSHA256 { + // return r.suspendUnsupported(ctx, repo) + // } + // + // timeout := r.repoFetchTimeout + // if repo.RetryAfter == -1 { + // timeout = r.manualResyncTimeout + // } + // fetchCtx, cancel := context.WithTimeout(ctx, timeout) + // defer cancel() + // + // if err := r.gitm.Sync(fetchCtx, repo); err != nil { + // return false, err + // } + // + // // request index to zoekt server + // // NOTE: indexing after full git resync is bad design. We are doing _after_ the sync because the firehose's git.ref ops don't carry the repository's full ref set. + // // NOTE: and zoekt indexer should directly subscribe to the knot. remove this when we have knotrelay. + // if r.cfg.Search.ZoektUrl != "" { + // go func() { + // idxCtx, cancel := context.WithTimeout(ctx, 10*time.Second) + // defer cancel() + // defaultBranch, err := r.gitm.DefaultBranch(idxCtx, repo) + // if err != nil { + // r.logger.Warn("resolving default branch for indexing failed", "did", repo.RepoDid, "error", err) + // return + // } + // if err := r.requestIndex(idxCtx, repo.RepoDid, []branch{defaultBranch}); err != nil { + // r.logger.Warn("requesting zoekt index failed", "did", repo.RepoDid, "err", err) + // } + // }() + // } + // + // // queue repo_stats_update job + // r.indexer.AddTask(context.TODO(), &knotstream.Task{Key: repo.RepoDid.String()}) + // + // if err := r.activityIndexer.Enqueue(ctx, repo.RepoDid); err != nil { + // return false, fmt.Errorf("queueing commit activity: %w", err) + // } // repo.GitRev = // repo.RepoSha = @@ -322,10 +362,10 @@ func isRateLimitError(err error) bool { return false } -func (r *Resyncer) checkKnot(ctx context.Context, repo *models.Repo) (models.ObjectFormat, error) { +func (r *Resyncer) handshakeKnot(ctx context.Context, repo *models.Repo) (models.ObjectFormat, []byte, error) { repoUrl, err := makeRepoRemoteUrl(repo.KnotDomain, repo.RepoIdentifier(), r.cfg.KnotUseSSL) if err != nil { - return "", err + return "", nil, err } repoUrl += "/info/refs?service=git-upload-pack" @@ -334,7 +374,7 @@ func (r *Resyncer) checkKnot(ctx context.Context, repo *models.Repo) (models.Obj req, err := http.NewRequestWithContext(ctx, "GET", repoUrl, nil) if err != nil { - return "", err + return "", nil, err } req.Header.Set("User-Agent", "git/2.x") req.Header.Set("Accept", "*/*") @@ -343,31 +383,52 @@ func (r *Resyncer) checkKnot(ctx context.Context, repo *models.Repo) (models.Obj if err != nil { var uerr *url.Error if errors.As(err, &uerr) { - return "", fmt.Errorf("request failed: %w", uerr.Unwrap()) + return "", nil, fmt.Errorf("request failed: %w", uerr.Unwrap()) } - return "", fmt.Errorf("request failed: %w", err) + return "", nil, fmt.Errorf("request failed: %w", err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - return "", &knotStatusError{resp.StatusCode} + return "", nil, &knotStatusError{resp.StatusCode} } // check if target is git server ct := resp.Header.Get("Content-Type") if !strings.Contains(ct, "application/x-git-upload-pack-advertisement") { - return "", fmt.Errorf("unexpected content-type: %s", ct) + return "", nil, fmt.Errorf("unexpected content-type: %s", ct) } - advertisement, err := io.ReadAll(io.LimitReader(resp.Body, 64*1024)) + advertisement, err := io.ReadAll(io.LimitReader(resp.Body, 64<<20)) if err != nil { - return "", fmt.Errorf("reading upload-pack advertisement: %w", err) + return "", nil, fmt.Errorf("reading upload-pack advertisement: %w", err) } if bytes.Contains(advertisement, []byte("object-format=sha256")) { - return models.ObjectFormatSHA256, nil + return models.ObjectFormatSHA256, advertisement, nil + } + + return models.ObjectFormatSHA1, advertisement, nil +} + +func parseAdvertisement(adv []byte) (string, []byte, error) { + ar := packp.NewAdvRefs() + if err := ar.Decode(bytes.NewReader(adv)); err != nil { + return "", nil, err } - return models.ObjectFormatSHA1, nil + defaultBranch := "main" + for _, symref := range ar.Capabilities.Get(capability.SymRef) { + if target, ok := strings.CutPrefix(symref, "HEAD:refs/heads/"); ok { + defaultBranch = target + } + } + + names := slices.Sorted(maps.Keys(ar.References)) + var refs bytes.Buffer + for _, name := range names { + fmt.Fprintf(&refs, "%s %s\n", ar.References[name], name) + } + return defaultBranch, refs.Bytes(), nil } func (r *Resyncer) suspendUnsupported(ctx context.Context, repo *models.Repo) (bool, error) { diff --git a/knotmirror/resyncer_test.go b/knotmirror/resyncer_test.go index 8bead0c48..a3e4ede68 100644 --- a/knotmirror/resyncer_test.go +++ b/knotmirror/resyncer_test.go @@ -2,6 +2,7 @@ package knotmirror import ( "context" + "fmt" "io" "log/slog" "net/http" @@ -103,7 +104,7 @@ func TestCheckKnotObjectFormat(t *testing.T) { KnotDomain: srv.URL, } - format, err := r.checkKnot(context.Background(), repo) + format, _, err := r.handshakeKnot(context.Background(), repo) if tt.wantErr { if err == nil { @@ -130,3 +131,28 @@ func TestCheckKnotObjectFormat(t *testing.T) { }) } } + +func TestParseAdvertisement(t *testing.T) { + pkt := func(s string) string { return fmt.Sprintf("%04x%s", len(s)+4, s) } + a := strings.Repeat("a", 40) + b := strings.Repeat("b", 40) + c := strings.Repeat("c", 40) + adv := pkt("# service=git-upload-pack\n") + "0000" + + pkt(a+" HEAD\x00symref=HEAD:refs/heads/trunk agent=git/2.x\n") + + pkt(b+" refs/tags/v1\n") + + pkt(c+" refs/tags/v1^{}\n") + + pkt(a+" refs/heads/trunk\n") + + "0000" + + branch, refs, err := parseAdvertisement([]byte(adv)) + if err != nil { + t.Fatal(err) + } + if branch != "trunk" { + t.Errorf("branch = %q, want trunk", branch) + } + want := a + " refs/heads/trunk\n" + b + " refs/tags/v1\n" + if string(refs) != want { + t.Errorf("refs = %q, want %q", refs, want) + } +} diff --git a/nix/Cargo.nix b/nix/Cargo.nix index 9375583e2..fab810ca3 100644 --- a/nix/Cargo.nix +++ b/nix/Cargo.nix @@ -233,6 +233,16 @@ rec { # File a bug if you depend on any for non-debug work! debug = internal.debugCrate { inherit packageId; }; }; + "gitmirror-types" = rec { + packageId = "gitmirror-types"; + build = internal.buildRustCrateWithFeatures { + packageId = "gitmirror-types"; + }; + + # Debug support which might change between releases. + # File a bug if you depend on any for non-debug work! + debug = internal.debugCrate { inherit packageId; }; + }; "gitmirror-xrpc" = rec { packageId = "gitmirror-xrpc"; build = internal.buildRustCrateWithFeatures { @@ -2180,7 +2190,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; optional = true; } { @@ -2568,7 +2578,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "bytes"; @@ -2757,7 +2767,7 @@ rec { ]; }; - "base64" = rec { + "base64 0.22.1" = rec { crateName = "base64"; version = "0.22.1"; edition = "2018"; @@ -2771,6 +2781,20 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; + "base64 0.23.1" = rec { + crateName = "base64"; + version = "0.23.1"; + edition = "2021"; + sha256 = "19cdw4vh3d8qndbxjmbf6ddvmpicyddg704b4fjxjlchz7ncs1xc"; + authors = [ + "Marshall Pierce " + ]; + features = { + "default" = [ "std" "simd-unsafe" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "simd-unsafe" "std" ]; + }; "base64ct" = rec { crateName = "base64ct"; version = "1.8.3"; @@ -3292,7 +3316,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "http"; @@ -3304,7 +3328,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -3596,7 +3620,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -3680,7 +3704,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -3878,7 +3902,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -4127,7 +4151,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -4297,7 +4321,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -4352,7 +4376,7 @@ rec { devDependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "bobbin-ingest"; @@ -4871,7 +4895,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; optional = true; } { @@ -5798,7 +5822,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; optional = true; } { @@ -8710,7 +8734,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.61.2"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_Diagnostics_Debug" ]; } @@ -10393,6 +10417,10 @@ rec { name = "gitmirror-sync"; packageId = "gitmirror-sync"; } + { + name = "gitmirror-types"; + packageId = "gitmirror-types"; + } { name = "gitmirror-xrpc"; packageId = "gitmirror-xrpc"; @@ -10442,7 +10470,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -10625,6 +10653,46 @@ rec { name = "gitmirror-git"; packageId = "gitmirror-git"; } + { + name = "gitmirror-types"; + packageId = "gitmirror-types"; + } + { + name = "gix"; + packageId = "gix"; + features = [ "parallel" "revision" "blob-diff" "blame" "merge" "worktree-archive" "tree-editor" "sha1" "sha256" ]; + } + { + name = "gix-hash"; + packageId = "gix-hash"; + features = [ "sha1" "sha256" ]; + } + { + name = "gix-negotiate"; + packageId = "gix-negotiate"; + } + { + name = "gix-object"; + packageId = "gix-object"; + } + { + name = "gix-pack"; + packageId = "gix-pack"; + usesDefaultFeatures = false; + features = [ "generate" "streaming-input" "sha1" "sha256" ]; + } + { + name = "gix-protocol"; + packageId = "gix-protocol"; + usesDefaultFeatures = false; + features = [ "blocking-client" ]; + } + { + name = "gix-transport"; + packageId = "gix-transport"; + usesDefaultFeatures = false; + features = [ "http-client-reqwest-rust-tls" ]; + } { name = "jacquard-common"; packageId = "jacquard-common"; @@ -10636,7 +10704,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -10675,6 +10743,28 @@ rec { usesDefaultFeatures = false; features = [ "runtime-tokio" "tls-rustls-aws-lc-rs" "postgres" "chrono" "macros" "migrate" ]; } + { + name = "tempfile"; + packageId = "tempfile"; + } + ]; + + }; + "gitmirror-types" = rec { + crateName = "gitmirror-types"; + version = "0.0.1"; + edition = "2024"; + src = lib.cleanSourceWith { filter = sourceFilter; src = ../gitmirror/crates/gitmirror-types; }; + libName = "gitmirror_types"; + dependencies = [ + { + name = "bobbin-knot-proxy"; + packageId = "bobbin-knot-proxy"; + } + { + name = "jacquard-common"; + packageId = "jacquard-common"; + } ]; }; @@ -10780,7 +10870,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -12303,7 +12393,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown 0.17.1"; + packageId = "hashbrown 0.15.5"; usesDefaultFeatures = false; features = [ "default-hasher" "inline-more" ]; } @@ -13040,6 +13130,11 @@ rec { usesDefaultFeatures = false; features = [ "std" "unicode" ]; } + { + name = "gix-credentials"; + packageId = "gix-credentials"; + optional = true; + } { name = "gix-date"; packageId = "gix-date"; @@ -13053,14 +13148,44 @@ rec { name = "gix-hash"; packageId = "gix-hash"; } + { + name = "gix-lock"; + packageId = "gix-lock"; + optional = true; + } + { + name = "gix-negotiate"; + packageId = "gix-negotiate"; + optional = true; + } + { + name = "gix-object"; + packageId = "gix-object"; + optional = true; + } { name = "gix-ref"; packageId = "gix-ref"; } + { + name = "gix-refspec"; + packageId = "gix-refspec"; + optional = true; + } + { + name = "gix-revwalk"; + packageId = "gix-revwalk"; + optional = true; + } { name = "gix-shallow"; packageId = "gix-shallow"; } + { + name = "gix-trace"; + packageId = "gix-trace"; + optional = true; + } { name = "gix-transport"; packageId = "gix-transport"; @@ -13093,6 +13218,7 @@ rec { "sha1" = [ "gix-hash/sha1" ]; "sha256" = [ "gix-hash/sha256" ]; }; + resolvedDefaultFeatures = [ "blocking-client" "fetch" "handshake" ]; }; "gix-quote" = rec { crateName = "gix-quote"; @@ -13756,6 +13882,11 @@ rec { packageId = "async-trait"; optional = true; } + { + name = "base64"; + packageId = "base64 0.22.1"; + optional = true; + } { name = "bstr"; packageId = "bstr"; @@ -13776,6 +13907,11 @@ rec { name = "gix-command"; packageId = "gix-command"; } + { + name = "gix-credentials"; + packageId = "gix-credentials"; + optional = true; + } { name = "gix-features"; packageId = "gix-features"; @@ -13801,6 +13937,13 @@ rec { packageId = "pin-project-lite"; optional = true; } + { + name = "reqwest"; + packageId = "reqwest 0.13.5"; + optional = true; + usesDefaultFeatures = false; + features = [ "blocking" "charset" "http2" ]; + } { name = "thiserror"; packageId = "thiserror 2.0.18"; @@ -13829,7 +13972,7 @@ rec { "reqwest" = [ "dep:reqwest" ]; "serde" = [ "dep:serde" "bstr/serde" ]; }; - resolvedDefaultFeatures = [ "async-client" "async-trait" "default" "futures-io" "futures-lite" "pin-project-lite" ]; + resolvedDefaultFeatures = [ "async-client" "async-trait" "base64" "blocking-client" "default" "futures-io" "futures-lite" "gix-credentials" "http-client" "http-client-reqwest" "http-client-reqwest-rust-tls" "pin-project-lite" "reqwest" ]; }; "gix-traverse" = rec { crateName = "gix-traverse"; @@ -16434,7 +16577,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; optional = true; } { @@ -17765,7 +17908,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; usesDefaultFeatures = false; features = [ "alloc" ]; } @@ -17901,7 +18044,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; usesDefaultFeatures = false; features = [ "alloc" ]; } @@ -18504,7 +18647,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; usesDefaultFeatures = false; features = [ "alloc" ]; } @@ -19487,7 +19630,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "bs58"; @@ -19811,7 +19954,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "confique"; @@ -19869,7 +20012,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "bytes"; @@ -20052,7 +20195,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "flate2"; @@ -20587,7 +20730,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "chrono"; @@ -21171,7 +21314,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -21221,7 +21364,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "hkdf"; @@ -21300,7 +21443,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "clap"; @@ -21385,7 +21528,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" ]; } @@ -21481,7 +21624,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "bytes"; @@ -21917,7 +22060,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "bytes"; @@ -22962,7 +23105,7 @@ rec { ]; features = { }; - resolvedDefaultFeatures = [ "default" ]; + resolvedDefaultFeatures = [ "default" "is_sync" ]; }; "md-5" = rec { crateName = "md-5"; @@ -23128,7 +23271,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; usesDefaultFeatures = false; features = [ "std" ]; } @@ -24087,7 +24230,7 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.61.2"; + packageId = "windows-sys 0.59.0"; rename = "windows"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_Console" "Win32_Storage_FileSystem" "Win32_Security" ]; @@ -24617,7 +24760,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; optional = true; usesDefaultFeatures = false; } @@ -24679,7 +24822,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; optional = true; usesDefaultFeatures = false; } @@ -25673,7 +25816,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; usesDefaultFeatures = false; features = [ "alloc" ]; } @@ -27203,7 +27346,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; optional = true; } { @@ -27698,7 +27841,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.60.2"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_IO" "Win32_Networking_WinSock" ]; } @@ -28594,7 +28737,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "bytes"; @@ -28793,7 +28936,7 @@ rec { } { name = "wasm-streams"; - packageId = "wasm-streams"; + packageId = "wasm-streams 0.4.2"; optional = true; target = { target, features }: ("wasm32" == target."arch" or null); } @@ -28893,28 +29036,34 @@ rec { }; resolvedDefaultFeatures = [ "__rustls" "__rustls-ring" "__tls" "brotli" "charset" "deflate" "gzip" "h2" "http2" "json" "rustls-tls" "rustls-tls-manual-roots" "rustls-tls-manual-roots-no-provider" "rustls-tls-native-roots" "rustls-tls-native-roots-no-provider" "rustls-tls-webpki-roots" "rustls-tls-webpki-roots-no-provider" "stream" "system-proxy" "zstd" ]; }; - "reqwest 0.13.1" = rec { + "reqwest 0.13.5" = rec { crateName = "reqwest"; - version = "0.13.1"; + version = "0.13.5"; edition = "2021"; - sha256 = "0qig3k8sh6lcwygjsq89wrqkbaxff4rg180nrhq5ykl1kn603s84"; + sha256 = "0ac0n0g7xaffc6q3dhn9rixr4h1f0h7533l1smrxv1n1bjkwz88n"; authors = [ "Sean McArthur " ]; dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.23.1"; } { name = "bytes"; packageId = "bytes"; } + { + name = "encoding_rs"; + packageId = "encoding_rs"; + optional = true; + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); + } { name = "futures-channel"; packageId = "futures-channel"; optional = true; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } { name = "futures-core"; @@ -28931,7 +29080,7 @@ rec { name = "h2"; packageId = "h2"; optional = true; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } { name = "http"; @@ -28940,17 +29089,17 @@ rec { { name = "http-body"; packageId = "http-body"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } { name = "http-body-util"; packageId = "http-body-util"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } { name = "hyper"; packageId = "hyper"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "http1" "client" ]; } { @@ -28958,41 +29107,47 @@ rec { packageId = "hyper-rustls"; optional = true; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "http1" "tls12" ]; } { name = "hyper-util"; packageId = "hyper-util"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "http1" "client" "client-legacy" "client-proxy" "tokio" ]; } { name = "js-sys"; packageId = "js-sys"; - target = { target, features }: ("wasm32" == target."arch" or null); + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); } { name = "log"; packageId = "log"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); + } + { + name = "mime"; + packageId = "mime"; + optional = true; + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } { name = "percent-encoding"; packageId = "percent-encoding"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } { name = "pin-project-lite"; packageId = "pin-project-lite"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } { name = "quinn"; packageId = "quinn"; optional = true; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "runtime-tokio" ]; } { @@ -29000,21 +29155,21 @@ rec { packageId = "rustls"; optional = true; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "std" "tls12" ]; } { name = "rustls-pki-types"; packageId = "rustls-pki-types"; optional = true; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "std" ]; } { name = "rustls-platform-verifier"; packageId = "rustls-platform-verifier"; optional = true; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } { name = "serde"; @@ -29040,7 +29195,7 @@ rec { name = "tokio"; packageId = "tokio"; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "net" "time" ]; } { @@ -29048,7 +29203,7 @@ rec { packageId = "tokio-rustls"; optional = true; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "tls12" ]; } { @@ -29056,27 +29211,27 @@ rec { packageId = "tokio-util"; optional = true; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "io" ]; } { name = "tower"; packageId = "tower"; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "retry" "timeout" "util" ]; } { name = "tower-http"; packageId = "tower-http 0.6.11"; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "follow-redirect" ]; } { name = "tower-service"; packageId = "tower-service"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); } { name = "url"; @@ -29085,24 +29240,24 @@ rec { { name = "wasm-bindgen"; packageId = "wasm-bindgen"; - target = { target, features }: ("wasm32" == target."arch" or null); + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); } { name = "wasm-bindgen-futures"; packageId = "wasm-bindgen-futures"; - target = { target, features }: ("wasm32" == target."arch" or null); + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); } { name = "wasm-streams"; - packageId = "wasm-streams"; + packageId = "wasm-streams 0.5.0"; optional = true; - target = { target, features }: ("wasm32" == target."arch" or null); + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); } { name = "web-sys"; packageId = "web-sys"; - target = { target, features }: ("wasm32" == target."arch" or null); - features = [ "AbortController" "AbortSignal" "Headers" "Request" "RequestInit" "RequestMode" "Response" "Window" "FormData" "Blob" "BlobPropertyBag" "ServiceWorkerGlobalScope" "RequestCredentials" "File" "ReadableStream" "RequestCache" ]; + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); + features = [ "AbortController" "AbortSignal" "Headers" "Request" "RequestInit" "RequestMode" "Response" "Window" "FormData" "Blob" "BlobPropertyBag" "ServiceWorkerGlobalScope" "RequestCredentials" "File" "ReadableStream" "ReferrerPolicy" "RequestCache" ]; } ]; devDependencies = [ @@ -29110,33 +29265,33 @@ rec { name = "futures-util"; packageId = "futures-util"; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "std" "alloc" ]; } { name = "hyper"; packageId = "hyper"; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "http1" "http2" "client" "server" ]; } { name = "hyper-util"; packageId = "hyper-util"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "http1" "http2" "client" "client-legacy" "server-auto" "server-graceful" "tokio" ]; } { name = "serde"; packageId = "serde"; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "derive" ]; } { name = "tokio"; packageId = "tokio"; usesDefaultFeatures = false; - target = { target, features }: (!("wasm32" == target."arch" or null)); + target = { target, features }: (!(("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null)))); features = [ "macros" "rt-multi-thread" ]; } { @@ -29148,7 +29303,7 @@ rec { { name = "wasm-bindgen"; packageId = "wasm-bindgen"; - target = { target, features }: ("wasm32" == target."arch" or null); + target = { target, features }: (("wasm32" == target."arch" or null) && (("unknown" == target."os" or null) || ("none" == target."os" or null))); features = [ "serde-serialize" ]; } ]; @@ -29178,14 +29333,12 @@ rec { "native-tls-vendored-no-alpn" = [ "__native-tls" "native-tls-crate?/vendored" ]; "query" = [ "dep:serde" "dep:serde_urlencoded" ]; "rustls" = [ "__rustls-aws-lc-rs" "dep:rustls-platform-verifier" "__rustls" ]; - "rustls-native-certs" = [ "dep:rustls-native-certs" ]; "rustls-no-provider" = [ "dep:rustls-platform-verifier" "__rustls" ]; "stream" = [ "tokio/fs" "dep:futures-util" "dep:tokio-util" "dep:wasm-streams" ]; "system-proxy" = [ "hyper-util/client-proxy-system" ]; - "webpki-roots" = [ "dep:webpki-roots" ]; "zstd" = [ "tower-http/decompression-zstd" ]; }; - resolvedDefaultFeatures = [ "__rustls" "__rustls-aws-lc-rs" "__tls" "blocking" "gzip" "http2" "json" "query" "rustls" "stream" ]; + resolvedDefaultFeatures = [ "__rustls" "__rustls-aws-lc-rs" "__tls" "blocking" "charset" "gzip" "http2" "json" "query" "rustls" "stream" ]; }; "resolv-conf" = rec { crateName = "resolv-conf"; @@ -30218,7 +30371,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.61.2"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Networking_WinSock" ]; } @@ -30366,7 +30519,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "blocking"; @@ -30615,7 +30768,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.61.2"; + packageId = "windows-sys 0.59.0"; usesDefaultFeatures = false; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Security_Cryptography" ]; @@ -31609,7 +31762,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; optional = true; usesDefaultFeatures = false; } @@ -32120,7 +32273,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "libc"; @@ -32782,7 +32935,7 @@ rec { dependencies = [ { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; usesDefaultFeatures = false; features = [ "alloc" ]; } @@ -33341,7 +33494,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; usesDefaultFeatures = false; features = [ "alloc" ]; } @@ -34332,7 +34485,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "bitpacking"; @@ -34867,7 +35020,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.61.2"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Storage_FileSystem" "Win32_Foundation" ]; } @@ -34924,7 +35077,7 @@ rec { } { name = "windows-sys"; - packageId = "windows-sys 0.61.2"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_System_Console" ]; } @@ -35981,7 +36134,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; optional = true; } { @@ -37058,7 +37211,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "bobbin-runtime"; @@ -37099,7 +37252,7 @@ rec { } { name = "reqwest"; - packageId = "reqwest 0.13.1"; + packageId = "reqwest 0.13.5"; usesDefaultFeatures = false; features = [ "rustls" "http2" "json" "gzip" "stream" "query" ]; } @@ -38311,7 +38464,7 @@ rec { ]; }; - "wasm-streams" = rec { + "wasm-streams 0.4.2" = rec { crateName = "wasm-streams"; version = "0.4.2"; edition = "2021"; @@ -38352,6 +38505,48 @@ rec { } ]; + }; + "wasm-streams 0.5.0" = rec { + crateName = "wasm-streams"; + version = "0.5.0"; + edition = "2021"; + sha256 = "1fqbcx33w8ys5i5dv3p28a82g4yiclmhn80fcfp137kwa7vc87lx"; + libName = "wasm_streams";type = [ "cdylib" "rlib" ]; + authors = [ + "Mattias Buelens " + ]; + dependencies = [ + { + name = "futures-util"; + packageId = "futures-util"; + features = [ "io" "sink" ]; + } + { + name = "js-sys"; + packageId = "js-sys"; + } + { + name = "wasm-bindgen"; + packageId = "wasm-bindgen"; + } + { + name = "wasm-bindgen-futures"; + packageId = "wasm-bindgen-futures"; + } + { + name = "web-sys"; + packageId = "web-sys"; + features = [ "AbortSignal" "QueuingStrategy" "ReadableStream" "ReadableStreamType" "ReadableWritablePair" "ReadableStreamByobReader" "ReadableStreamReaderMode" "ReadableStreamReadResult" "ReadableStreamByobRequest" "ReadableStreamDefaultReader" "ReadableByteStreamController" "ReadableStreamGetReaderOptions" "ReadableStreamDefaultController" "StreamPipeOptions" "TransformStream" "TransformStreamDefaultController" "Transformer" "UnderlyingSink" "UnderlyingSource" "WritableStream" "WritableStreamDefaultController" "WritableStreamDefaultWriter" ]; + } + ]; + devDependencies = [ + { + name = "web-sys"; + packageId = "web-sys"; + features = [ "console" "AbortSignal" "ErrorEvent" "PromiseRejectionEvent" "Response" "ReadableStream" "Window" ]; + } + ]; + }; "web-sys" = rec { crateName = "web-sys"; @@ -38848,7 +39043,7 @@ rec { "default" = [ "std" ]; "std" = [ "wasm-bindgen/std" "js-sys/std" ]; }; - resolvedDefaultFeatures = [ "AbortController" "AbortSignal" "BinaryType" "Blob" "BlobPropertyBag" "CloseEvent" "Document" "Element" "ErrorEvent" "Event" "EventTarget" "File" "FormData" "Headers" "History" "HtmlElement" "HtmlHeadElement" "Location" "MessageEvent" "Node" "Performance" "QueuingStrategy" "ReadableByteStreamController" "ReadableStream" "ReadableStreamByobReader" "ReadableStreamByobRequest" "ReadableStreamDefaultController" "ReadableStreamDefaultReader" "ReadableStreamGetReaderOptions" "ReadableStreamReadResult" "ReadableStreamReaderMode" "ReadableStreamType" "ReadableWritablePair" "Request" "RequestCache" "RequestCredentials" "RequestInit" "RequestMode" "Response" "ServiceWorkerGlobalScope" "Storage" "StreamPipeOptions" "TransformStream" "TransformStreamDefaultController" "Transformer" "UnderlyingSink" "UnderlyingSource" "WebSocket" "Window" "WorkerGlobalScope" "WritableStream" "WritableStreamDefaultController" "WritableStreamDefaultWriter" "default" "std" ]; + resolvedDefaultFeatures = [ "AbortController" "AbortSignal" "BinaryType" "Blob" "BlobPropertyBag" "CloseEvent" "Document" "Element" "ErrorEvent" "Event" "EventTarget" "File" "FormData" "Headers" "History" "HtmlElement" "HtmlHeadElement" "Location" "MessageEvent" "Node" "Performance" "QueuingStrategy" "ReadableByteStreamController" "ReadableStream" "ReadableStreamByobReader" "ReadableStreamByobRequest" "ReadableStreamDefaultController" "ReadableStreamDefaultReader" "ReadableStreamGetReaderOptions" "ReadableStreamReadResult" "ReadableStreamReaderMode" "ReadableStreamType" "ReadableWritablePair" "ReferrerPolicy" "Request" "RequestCache" "RequestCredentials" "RequestInit" "RequestMode" "Response" "ServiceWorkerGlobalScope" "Storage" "StreamPipeOptions" "TransformStream" "TransformStreamDefaultController" "Transformer" "UnderlyingSink" "UnderlyingSource" "WebSocket" "Window" "WorkerGlobalScope" "WritableStream" "WritableStreamDefaultController" "WritableStreamDefaultWriter" "default" "std" ]; }; "web-time" = rec { crateName = "web-time"; @@ -39024,7 +39219,7 @@ rec { dependencies = [ { name = "windows-sys"; - packageId = "windows-sys 0.61.2"; + packageId = "windows-sys 0.59.0"; target = { target, features }: (target."windows" or false); features = [ "Win32_Foundation" "Win32_Storage_FileSystem" "Win32_System_Console" "Win32_System_SystemInformation" ]; } @@ -40775,272 +40970,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_IO" "default" ]; - }; - "windows-sys 0.60.2" = rec { - crateName = "windows-sys"; - version = "0.60.2"; - edition = "2021"; - sha256 = "1jrbc615ihqnhjhxplr2kw7rasrskv9wj3lr80hgfd42sbj01xgj"; - libName = "windows_sys"; - authors = [ - "Microsoft" - ]; - dependencies = [ - { - name = "windows-targets"; - packageId = "windows-targets 0.53.5"; - usesDefaultFeatures = false; - } - ]; - features = { - "Wdk" = [ "Win32_Foundation" ]; - "Wdk_Devices" = [ "Wdk" ]; - "Wdk_Devices_Bluetooth" = [ "Wdk_Devices" ]; - "Wdk_Devices_HumanInterfaceDevice" = [ "Wdk_Devices" ]; - "Wdk_Foundation" = [ "Wdk" ]; - "Wdk_Graphics" = [ "Wdk" ]; - "Wdk_Graphics_Direct3D" = [ "Wdk_Graphics" ]; - "Wdk_NetworkManagement" = [ "Wdk" ]; - "Wdk_NetworkManagement_Ndis" = [ "Wdk_NetworkManagement" ]; - "Wdk_NetworkManagement_WindowsFilteringPlatform" = [ "Wdk_NetworkManagement" ]; - "Wdk_Storage" = [ "Wdk" ]; - "Wdk_Storage_FileSystem" = [ "Wdk_Storage" ]; - "Wdk_Storage_FileSystem_Minifilters" = [ "Wdk_Storage_FileSystem" ]; - "Wdk_System" = [ "Wdk" ]; - "Wdk_System_IO" = [ "Wdk_System" ]; - "Wdk_System_Memory" = [ "Wdk_System" ]; - "Wdk_System_OfflineRegistry" = [ "Wdk_System" ]; - "Wdk_System_Registry" = [ "Wdk_System" ]; - "Wdk_System_SystemInformation" = [ "Wdk_System" ]; - "Wdk_System_SystemServices" = [ "Wdk_System" ]; - "Wdk_System_Threading" = [ "Wdk_System" ]; - "Win32" = [ "Win32_Foundation" ]; - "Win32_Data" = [ "Win32" ]; - "Win32_Data_HtmlHelp" = [ "Win32_Data" ]; - "Win32_Data_RightsManagement" = [ "Win32_Data" ]; - "Win32_Devices" = [ "Win32" ]; - "Win32_Devices_AllJoyn" = [ "Win32_Devices" ]; - "Win32_Devices_Beep" = [ "Win32_Devices" ]; - "Win32_Devices_BiometricFramework" = [ "Win32_Devices" ]; - "Win32_Devices_Bluetooth" = [ "Win32_Devices" ]; - "Win32_Devices_Cdrom" = [ "Win32_Devices" ]; - "Win32_Devices_Communication" = [ "Win32_Devices" ]; - "Win32_Devices_DeviceAndDriverInstallation" = [ "Win32_Devices" ]; - "Win32_Devices_DeviceQuery" = [ "Win32_Devices" ]; - "Win32_Devices_Display" = [ "Win32_Devices" ]; - "Win32_Devices_Dvd" = [ "Win32_Devices" ]; - "Win32_Devices_Enumeration" = [ "Win32_Devices" ]; - "Win32_Devices_Enumeration_Pnp" = [ "Win32_Devices_Enumeration" ]; - "Win32_Devices_Fax" = [ "Win32_Devices" ]; - "Win32_Devices_HumanInterfaceDevice" = [ "Win32_Devices" ]; - "Win32_Devices_Nfc" = [ "Win32_Devices" ]; - "Win32_Devices_Nfp" = [ "Win32_Devices" ]; - "Win32_Devices_PortableDevices" = [ "Win32_Devices" ]; - "Win32_Devices_Properties" = [ "Win32_Devices" ]; - "Win32_Devices_Pwm" = [ "Win32_Devices" ]; - "Win32_Devices_Sensors" = [ "Win32_Devices" ]; - "Win32_Devices_SerialCommunication" = [ "Win32_Devices" ]; - "Win32_Devices_Tapi" = [ "Win32_Devices" ]; - "Win32_Devices_Usb" = [ "Win32_Devices" ]; - "Win32_Devices_WebServicesOnDevices" = [ "Win32_Devices" ]; - "Win32_Foundation" = [ "Win32" ]; - "Win32_Gaming" = [ "Win32" ]; - "Win32_Globalization" = [ "Win32" ]; - "Win32_Graphics" = [ "Win32" ]; - "Win32_Graphics_Dwm" = [ "Win32_Graphics" ]; - "Win32_Graphics_Gdi" = [ "Win32_Graphics" ]; - "Win32_Graphics_GdiPlus" = [ "Win32_Graphics" ]; - "Win32_Graphics_Hlsl" = [ "Win32_Graphics" ]; - "Win32_Graphics_OpenGL" = [ "Win32_Graphics" ]; - "Win32_Graphics_Printing" = [ "Win32_Graphics" ]; - "Win32_Graphics_Printing_PrintTicket" = [ "Win32_Graphics_Printing" ]; - "Win32_Management" = [ "Win32" ]; - "Win32_Management_MobileDeviceManagementRegistration" = [ "Win32_Management" ]; - "Win32_Media" = [ "Win32" ]; - "Win32_Media_Audio" = [ "Win32_Media" ]; - "Win32_Media_DxMediaObjects" = [ "Win32_Media" ]; - "Win32_Media_KernelStreaming" = [ "Win32_Media" ]; - "Win32_Media_Multimedia" = [ "Win32_Media" ]; - "Win32_Media_Streaming" = [ "Win32_Media" ]; - "Win32_Media_WindowsMediaFormat" = [ "Win32_Media" ]; - "Win32_NetworkManagement" = [ "Win32" ]; - "Win32_NetworkManagement_Dhcp" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Dns" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_InternetConnectionWizard" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_IpHelper" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Multicast" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Ndis" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_NetBios" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_NetManagement" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_NetShell" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_NetworkDiagnosticsFramework" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_P2P" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_QoS" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Rras" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_Snmp" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WNet" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WebDav" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WiFi" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WindowsConnectionManager" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WindowsFilteringPlatform" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WindowsFirewall" = [ "Win32_NetworkManagement" ]; - "Win32_NetworkManagement_WindowsNetworkVirtualization" = [ "Win32_NetworkManagement" ]; - "Win32_Networking" = [ "Win32" ]; - "Win32_Networking_ActiveDirectory" = [ "Win32_Networking" ]; - "Win32_Networking_Clustering" = [ "Win32_Networking" ]; - "Win32_Networking_HttpServer" = [ "Win32_Networking" ]; - "Win32_Networking_Ldap" = [ "Win32_Networking" ]; - "Win32_Networking_WebSocket" = [ "Win32_Networking" ]; - "Win32_Networking_WinHttp" = [ "Win32_Networking" ]; - "Win32_Networking_WinInet" = [ "Win32_Networking" ]; - "Win32_Networking_WinSock" = [ "Win32_Networking" ]; - "Win32_Networking_WindowsWebServices" = [ "Win32_Networking" ]; - "Win32_Security" = [ "Win32" ]; - "Win32_Security_AppLocker" = [ "Win32_Security" ]; - "Win32_Security_Authentication" = [ "Win32_Security" ]; - "Win32_Security_Authentication_Identity" = [ "Win32_Security_Authentication" ]; - "Win32_Security_Authorization" = [ "Win32_Security" ]; - "Win32_Security_Credentials" = [ "Win32_Security" ]; - "Win32_Security_Cryptography" = [ "Win32_Security" ]; - "Win32_Security_Cryptography_Catalog" = [ "Win32_Security_Cryptography" ]; - "Win32_Security_Cryptography_Certificates" = [ "Win32_Security_Cryptography" ]; - "Win32_Security_Cryptography_Sip" = [ "Win32_Security_Cryptography" ]; - "Win32_Security_Cryptography_UI" = [ "Win32_Security_Cryptography" ]; - "Win32_Security_DiagnosticDataQuery" = [ "Win32_Security" ]; - "Win32_Security_DirectoryServices" = [ "Win32_Security" ]; - "Win32_Security_EnterpriseData" = [ "Win32_Security" ]; - "Win32_Security_ExtensibleAuthenticationProtocol" = [ "Win32_Security" ]; - "Win32_Security_Isolation" = [ "Win32_Security" ]; - "Win32_Security_LicenseProtection" = [ "Win32_Security" ]; - "Win32_Security_NetworkAccessProtection" = [ "Win32_Security" ]; - "Win32_Security_WinTrust" = [ "Win32_Security" ]; - "Win32_Security_WinWlx" = [ "Win32_Security" ]; - "Win32_Storage" = [ "Win32" ]; - "Win32_Storage_Cabinets" = [ "Win32_Storage" ]; - "Win32_Storage_CloudFilters" = [ "Win32_Storage" ]; - "Win32_Storage_Compression" = [ "Win32_Storage" ]; - "Win32_Storage_DistributedFileSystem" = [ "Win32_Storage" ]; - "Win32_Storage_FileHistory" = [ "Win32_Storage" ]; - "Win32_Storage_FileSystem" = [ "Win32_Storage" ]; - "Win32_Storage_Imapi" = [ "Win32_Storage" ]; - "Win32_Storage_IndexServer" = [ "Win32_Storage" ]; - "Win32_Storage_InstallableFileSystems" = [ "Win32_Storage" ]; - "Win32_Storage_IscsiDisc" = [ "Win32_Storage" ]; - "Win32_Storage_Jet" = [ "Win32_Storage" ]; - "Win32_Storage_Nvme" = [ "Win32_Storage" ]; - "Win32_Storage_OfflineFiles" = [ "Win32_Storage" ]; - "Win32_Storage_OperationRecorder" = [ "Win32_Storage" ]; - "Win32_Storage_Packaging" = [ "Win32_Storage" ]; - "Win32_Storage_Packaging_Appx" = [ "Win32_Storage_Packaging" ]; - "Win32_Storage_ProjectedFileSystem" = [ "Win32_Storage" ]; - "Win32_Storage_StructuredStorage" = [ "Win32_Storage" ]; - "Win32_Storage_Vhd" = [ "Win32_Storage" ]; - "Win32_Storage_Xps" = [ "Win32_Storage" ]; - "Win32_System" = [ "Win32" ]; - "Win32_System_AddressBook" = [ "Win32_System" ]; - "Win32_System_Antimalware" = [ "Win32_System" ]; - "Win32_System_ApplicationInstallationAndServicing" = [ "Win32_System" ]; - "Win32_System_ApplicationVerifier" = [ "Win32_System" ]; - "Win32_System_ClrHosting" = [ "Win32_System" ]; - "Win32_System_Com" = [ "Win32_System" ]; - "Win32_System_Com_Marshal" = [ "Win32_System_Com" ]; - "Win32_System_Com_StructuredStorage" = [ "Win32_System_Com" ]; - "Win32_System_Com_Urlmon" = [ "Win32_System_Com" ]; - "Win32_System_ComponentServices" = [ "Win32_System" ]; - "Win32_System_Console" = [ "Win32_System" ]; - "Win32_System_CorrelationVector" = [ "Win32_System" ]; - "Win32_System_DataExchange" = [ "Win32_System" ]; - "Win32_System_DeploymentServices" = [ "Win32_System" ]; - "Win32_System_DeveloperLicensing" = [ "Win32_System" ]; - "Win32_System_Diagnostics" = [ "Win32_System" ]; - "Win32_System_Diagnostics_Ceip" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_Debug" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_Debug_Extensions" = [ "Win32_System_Diagnostics_Debug" ]; - "Win32_System_Diagnostics_Etw" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_ProcessSnapshotting" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_ToolHelp" = [ "Win32_System_Diagnostics" ]; - "Win32_System_Diagnostics_TraceLogging" = [ "Win32_System_Diagnostics" ]; - "Win32_System_DistributedTransactionCoordinator" = [ "Win32_System" ]; - "Win32_System_Environment" = [ "Win32_System" ]; - "Win32_System_ErrorReporting" = [ "Win32_System" ]; - "Win32_System_EventCollector" = [ "Win32_System" ]; - "Win32_System_EventLog" = [ "Win32_System" ]; - "Win32_System_EventNotificationService" = [ "Win32_System" ]; - "Win32_System_GroupPolicy" = [ "Win32_System" ]; - "Win32_System_HostCompute" = [ "Win32_System" ]; - "Win32_System_HostComputeNetwork" = [ "Win32_System" ]; - "Win32_System_HostComputeSystem" = [ "Win32_System" ]; - "Win32_System_Hypervisor" = [ "Win32_System" ]; - "Win32_System_IO" = [ "Win32_System" ]; - "Win32_System_Iis" = [ "Win32_System" ]; - "Win32_System_Ioctl" = [ "Win32_System" ]; - "Win32_System_JobObjects" = [ "Win32_System" ]; - "Win32_System_Js" = [ "Win32_System" ]; - "Win32_System_Kernel" = [ "Win32_System" ]; - "Win32_System_LibraryLoader" = [ "Win32_System" ]; - "Win32_System_Mailslots" = [ "Win32_System" ]; - "Win32_System_Mapi" = [ "Win32_System" ]; - "Win32_System_Memory" = [ "Win32_System" ]; - "Win32_System_Memory_NonVolatile" = [ "Win32_System_Memory" ]; - "Win32_System_MessageQueuing" = [ "Win32_System" ]; - "Win32_System_MixedReality" = [ "Win32_System" ]; - "Win32_System_Ole" = [ "Win32_System" ]; - "Win32_System_PasswordManagement" = [ "Win32_System" ]; - "Win32_System_Performance" = [ "Win32_System" ]; - "Win32_System_Performance_HardwareCounterProfiling" = [ "Win32_System_Performance" ]; - "Win32_System_Pipes" = [ "Win32_System" ]; - "Win32_System_Power" = [ "Win32_System" ]; - "Win32_System_ProcessStatus" = [ "Win32_System" ]; - "Win32_System_Recovery" = [ "Win32_System" ]; - "Win32_System_Registry" = [ "Win32_System" ]; - "Win32_System_RemoteDesktop" = [ "Win32_System" ]; - "Win32_System_RemoteManagement" = [ "Win32_System" ]; - "Win32_System_RestartManager" = [ "Win32_System" ]; - "Win32_System_Restore" = [ "Win32_System" ]; - "Win32_System_Rpc" = [ "Win32_System" ]; - "Win32_System_Search" = [ "Win32_System" ]; - "Win32_System_Search_Common" = [ "Win32_System_Search" ]; - "Win32_System_SecurityCenter" = [ "Win32_System" ]; - "Win32_System_Services" = [ "Win32_System" ]; - "Win32_System_SetupAndMigration" = [ "Win32_System" ]; - "Win32_System_Shutdown" = [ "Win32_System" ]; - "Win32_System_StationsAndDesktops" = [ "Win32_System" ]; - "Win32_System_SubsystemForLinux" = [ "Win32_System" ]; - "Win32_System_SystemInformation" = [ "Win32_System" ]; - "Win32_System_SystemServices" = [ "Win32_System" ]; - "Win32_System_Threading" = [ "Win32_System" ]; - "Win32_System_Time" = [ "Win32_System" ]; - "Win32_System_TpmBaseServices" = [ "Win32_System" ]; - "Win32_System_UserAccessLogging" = [ "Win32_System" ]; - "Win32_System_Variant" = [ "Win32_System" ]; - "Win32_System_VirtualDosMachines" = [ "Win32_System" ]; - "Win32_System_WindowsProgramming" = [ "Win32_System" ]; - "Win32_System_Wmi" = [ "Win32_System" ]; - "Win32_UI" = [ "Win32" ]; - "Win32_UI_Accessibility" = [ "Win32_UI" ]; - "Win32_UI_ColorSystem" = [ "Win32_UI" ]; - "Win32_UI_Controls" = [ "Win32_UI" ]; - "Win32_UI_Controls_Dialogs" = [ "Win32_UI_Controls" ]; - "Win32_UI_HiDpi" = [ "Win32_UI" ]; - "Win32_UI_Input" = [ "Win32_UI" ]; - "Win32_UI_Input_Ime" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_KeyboardAndMouse" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_Pointer" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_Touch" = [ "Win32_UI_Input" ]; - "Win32_UI_Input_XboxController" = [ "Win32_UI_Input" ]; - "Win32_UI_InteractionContext" = [ "Win32_UI" ]; - "Win32_UI_Magnification" = [ "Win32_UI" ]; - "Win32_UI_Shell" = [ "Win32_UI" ]; - "Win32_UI_Shell_Common" = [ "Win32_UI_Shell" ]; - "Win32_UI_Shell_PropertiesSystem" = [ "Win32_UI_Shell" ]; - "Win32_UI_TabletPC" = [ "Win32_UI" ]; - "Win32_UI_TextServices" = [ "Win32_UI" ]; - "Win32_UI_WindowsAndMessaging" = [ "Win32_UI" ]; - "Win32_Web" = [ "Win32" ]; - "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; - }; - resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_System" "Win32_System_IO" "default" ]; + resolvedDefaultFeatures = [ "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_System_IO" "Win32_System_SystemInformation" "default" ]; }; "windows-sys 0.61.2" = rec { crateName = "windows-sys"; @@ -41302,7 +41232,7 @@ rec { "Win32_Web" = [ "Win32" ]; "Win32_Web_InternetExplorer" = [ "Win32_Web" ]; }; - resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Authorization" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_Diagnostics" "Win32_System_Diagnostics_Debug" "Win32_System_IO" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_Registry" "Win32_System_SystemInformation" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Shell" "default" ]; + resolvedDefaultFeatures = [ "Wdk" "Wdk_Foundation" "Wdk_Storage" "Wdk_Storage_FileSystem" "Wdk_System" "Wdk_System_IO" "Win32" "Win32_Foundation" "Win32_Networking" "Win32_Networking_WinSock" "Win32_Security" "Win32_Security_Authentication" "Win32_Security_Authentication_Identity" "Win32_Security_Authorization" "Win32_Security_Credentials" "Win32_Security_Cryptography" "Win32_Storage" "Win32_Storage_FileSystem" "Win32_System" "Win32_System_Com" "Win32_System_Console" "Win32_System_IO" "Win32_System_LibraryLoader" "Win32_System_Memory" "Win32_System_Pipes" "Win32_System_Registry" "Win32_System_SystemInformation" "Win32_System_SystemServices" "Win32_System_Threading" "Win32_System_WindowsProgramming" "Win32_UI" "Win32_UI_Shell" "default" ]; }; "windows-targets 0.42.2" = rec { crateName = "windows-targets"; @@ -41404,7 +41334,7 @@ rec { } { name = "windows_i686_gnullvm"; - packageId = "windows_i686_gnullvm 0.52.6"; + packageId = "windows_i686_gnullvm"; target = { target, features }: (target.name == "i686-pc-windows-gnullvm"); } { @@ -41429,62 +41359,6 @@ rec { } ]; - }; - "windows-targets 0.53.5" = rec { - crateName = "windows-targets"; - version = "0.53.5"; - edition = "2021"; - sha256 = "1wv9j2gv3l6wj3gkw5j1kr6ymb5q6dfc42yvydjhv3mqa7szjia9"; - libName = "windows_targets"; - dependencies = [ - { - name = "windows-link"; - packageId = "windows-link"; - usesDefaultFeatures = false; - target = { target, features }: (target."windows_raw_dylib" or false); - } - { - name = "windows_aarch64_gnullvm"; - packageId = "windows_aarch64_gnullvm 0.53.1"; - target = { target, features }: (target.name == "aarch64-pc-windows-gnullvm"); - } - { - name = "windows_aarch64_msvc"; - packageId = "windows_aarch64_msvc 0.53.1"; - target = { target, features }: (("aarch64" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_i686_gnu"; - packageId = "windows_i686_gnu 0.53.1"; - target = { target, features }: (("x86" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_i686_gnullvm"; - packageId = "windows_i686_gnullvm 0.53.1"; - target = { target, features }: (target.name == "i686-pc-windows-gnullvm"); - } - { - name = "windows_i686_msvc"; - packageId = "windows_i686_msvc 0.53.1"; - target = { target, features }: (("x86" == target."arch" or null) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_x86_64_gnu"; - packageId = "windows_x86_64_gnu 0.53.1"; - target = { target, features }: (("x86_64" == target."arch" or null) && ("gnu" == target."env" or null) && (!("llvm" == target."abi" or null)) && (!(target."windows_raw_dylib" or false))); - } - { - name = "windows_x86_64_gnullvm"; - packageId = "windows_x86_64_gnullvm 0.53.1"; - target = { target, features }: (target.name == "x86_64-pc-windows-gnullvm"); - } - { - name = "windows_x86_64_msvc"; - packageId = "windows_x86_64_msvc 0.53.1"; - target = { target, features }: ((("x86_64" == target."arch" or null) || ("arm64ec" == target."arch" or null)) && ("msvc" == target."env" or null) && (!(target."windows_raw_dylib" or false))); - } - ]; - }; "windows-threading" = rec { crateName = "windows-threading"; @@ -41520,13 +41394,6 @@ rec { "Microsoft" ]; - }; - "windows_aarch64_gnullvm 0.53.1" = rec { - crateName = "windows_aarch64_gnullvm"; - version = "0.53.1"; - edition = "2021"; - sha256 = "0lqvdm510mka9w26vmga7hbkmrw9glzc90l4gya5qbxlm1pl3n59"; - }; "windows_aarch64_msvc 0.42.2" = rec { crateName = "windows_aarch64_msvc"; @@ -41547,13 +41414,6 @@ rec { "Microsoft" ]; - }; - "windows_aarch64_msvc 0.53.1" = rec { - crateName = "windows_aarch64_msvc"; - version = "0.53.1"; - edition = "2021"; - sha256 = "01jh2adlwx043rji888b22whx4bm8alrk3khjpik5xn20kl85mxr"; - }; "windows_i686_gnu 0.42.2" = rec { crateName = "windows_i686_gnu"; @@ -41575,14 +41435,7 @@ rec { ]; }; - "windows_i686_gnu 0.53.1" = rec { - crateName = "windows_i686_gnu"; - version = "0.53.1"; - edition = "2021"; - sha256 = "18wkcm82ldyg4figcsidzwbg1pqd49jpm98crfz0j7nqd6h6s3ln"; - - }; - "windows_i686_gnullvm 0.52.6" = rec { + "windows_i686_gnullvm" = rec { crateName = "windows_i686_gnullvm"; version = "0.52.6"; edition = "2021"; @@ -41591,13 +41444,6 @@ rec { "Microsoft" ]; - }; - "windows_i686_gnullvm 0.53.1" = rec { - crateName = "windows_i686_gnullvm"; - version = "0.53.1"; - edition = "2021"; - sha256 = "030qaxqc4salz6l4immfb6sykc6gmhyir9wzn2w8mxj8038mjwzs"; - }; "windows_i686_msvc 0.42.2" = rec { crateName = "windows_i686_msvc"; @@ -41618,13 +41464,6 @@ rec { "Microsoft" ]; - }; - "windows_i686_msvc 0.53.1" = rec { - crateName = "windows_i686_msvc"; - version = "0.53.1"; - edition = "2021"; - sha256 = "1hi6scw3mn2pbdl30ji5i4y8vvspb9b66l98kkz350pig58wfyhy"; - }; "windows_x86_64_gnu 0.42.2" = rec { crateName = "windows_x86_64_gnu"; @@ -41645,13 +41484,6 @@ rec { "Microsoft" ]; - }; - "windows_x86_64_gnu 0.53.1" = rec { - crateName = "windows_x86_64_gnu"; - version = "0.53.1"; - edition = "2021"; - sha256 = "16d4yiysmfdlsrghndr97y57gh3kljkwhfdbcs05m1jasz6l4f4w"; - }; "windows_x86_64_gnullvm 0.42.2" = rec { crateName = "windows_x86_64_gnullvm"; @@ -41672,13 +41504,6 @@ rec { "Microsoft" ]; - }; - "windows_x86_64_gnullvm 0.53.1" = rec { - crateName = "windows_x86_64_gnullvm"; - version = "0.53.1"; - edition = "2021"; - sha256 = "1qbspgv4g3q0vygkg8rnql5c6z3caqv38japiynyivh75ng1gyhg"; - }; "windows_x86_64_msvc 0.42.2" = rec { crateName = "windows_x86_64_msvc"; @@ -41699,13 +41524,6 @@ rec { "Microsoft" ]; - }; - "windows_x86_64_msvc 0.53.1" = rec { - crateName = "windows_x86_64_msvc"; - version = "0.53.1"; - edition = "2021"; - sha256 = "0l6npq76vlq4ksn4bwsncpr8508mk0gmznm6wnhjg95d19gzzfyn"; - }; "winnow 0.7.15" = rec { crateName = "winnow"; @@ -41751,7 +41569,7 @@ rec { } { name = "base64"; - packageId = "base64"; + packageId = "base64 0.22.1"; } { name = "deadpool"; diff --git a/nix/modules/knotmirror.nix b/nix/modules/knotmirror.nix index f296322fc..767471547 100644 --- a/nix/modules/knotmirror.nix +++ b/nix/modules/knotmirror.nix @@ -31,6 +31,12 @@ in description = "Address to listen on"; }; + dbUrl = mkOption { + type = types.str; + example = "postgresql://..."; + description = "gitmirror database URL. knotmirror schedules repo syncs by writing to it (required)"; + }; + logging = { endpoint = mkOption { type = types.str; @@ -199,7 +205,7 @@ in systemd.services.knotmirror = { description = "knotmirror service"; - after = ["network.target" "tap-knotmirror.service"]; + after = ["network.target" "tap-knotmirror.service" "gitmirror.service"]; wantedBy = ["multi-user.target"]; path = [ pkgs.git @@ -215,6 +221,7 @@ in "MIRROR_HOSTNAME=${cfg.hostname}" "MIRROR_TAP_URL=http://localhost:${toString cfg.tap.port}" "MIRROR_DB_URL=${cfg.dbUrl}" + "MIRROR_GITMIRROR_DB_URL=${cfg.v2.dbUrl}" "MIRROR_REDIS_ADDR=localhost:6377" "MIRROR_GIT_BASEPATH=/var/lib/knotmirror/repos" "MIRROR_KNOT_USE_SSL=${boolToString cfg.knotUseSSL}" @@ -235,13 +242,14 @@ in systemd.services.gitmirror = { description = "gitmirror service"; - after = ["network.target" "knotmirror.service"]; + after = ["network.target"]; wantedBy = ["multi-user.target"]; serviceConfig = { LogsDirectory = "gitmirror"; StateDirectory = "gitmirror"; Environment = [ "GITMIRROR_BIND=${cfg.v2.listenAddr}" + "GITMIRROR_DATABASE_URL=${cfg.v2.dbUrl}" "GITMIRROR_SCAN_PATH=/var/lib/knotmirror/repos" "GITMIRROR_PLC_URL=${cfg.atpPlcUrl}" "GITMIRROR_SERVICE_DID=did:web:${cfg.hostname}" diff --git a/nix/vm.nix b/nix/vm.nix index b312f18b2..c5cfed6ee 100644 --- a/nix/vm.nix +++ b/nix/vm.nix @@ -190,7 +190,7 @@ in services.postgresql = { enable = true; package = pkgs.postgresql_14; - ensureDatabases = ["mirror" "tap"]; + ensureDatabases = ["mirror" "tap" "gitmirror"]; ensureUsers = [ {name = "tnglr";} ]; @@ -207,6 +207,7 @@ in adminListenAddr = "0.0.0.0:7200"; hostname = "localhost:7000"; dbUrl = "postgresql://tnglr@127.0.0.1:5432/mirror"; + v2.dbUrl = "postgresql://tnglr@127.0.0.1:5432/gitmirror"; fullNetwork = false; tap.dbUrl = "postgresql://tnglr@127.0.0.1:5432/tap"; }; @@ -238,6 +239,7 @@ in spindle = mkDataSyncScripts "/mnt/spindle-data" (dirOf config.services.tangled.spindle.server.dbPath); knotmirror.after = ["postgresql.target"]; tap-knotmirror.after = ["postgresql.target"]; + gitmirror.after = ["postgresql.target"]; }; }) ]; -- 2.51.2