Merge master into haskell-updates

This commit is contained in:
github-actions[bot] 2024-06-07 00:13:56 +00:00 committed by GitHub
commit a5d1b908b4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
264 changed files with 15048 additions and 14035 deletions

1
.github/labeler.yml vendored
View File

@ -212,6 +212,7 @@
- pkgs/development/node-packages/**/*
- pkgs/development/tools/yarn/*
- pkgs/development/tools/yarn2nix-moretea/**/*
- pkgs/development/tools/pnpm/**/*
- pkgs/development/web/nodejs/*
"6.topic: ocaml":

View File

@ -0,0 +1,53 @@
# Hare {#sec-language-hare}
## Building Hare programs with `hareHook` {#ssec-language-hare}
The `hareHook` package sets up the environment for building Hare programs by
doing the following:
1. Setting the `HARECACHE`, `HAREPATH` and `NIX_HAREFLAGS` environment variables;
1. Propagating `harec`, `qbe` and two wrapper scripts for the hare binary.
It is not a function as is the case for some other languages --- *e. g.*, Go or
Rust ---, but a package to be added to `nativeBuildInputs`.
## Attributes of `hareHook` {#hareHook-attributes}
The following attributes are accepted by `hareHook`:
1. `hareBuildType`: Either `release` (default) or `debug`. It controls if the
`-R` flag is added to `NIX_HAREFLAGS`.
## Example for `hareHook` {#ex-hareHook}
```nix
{
hareHook,
lib,
stdenv,
}: stdenv.mkDerivation {
pname = "<name>";
version = "<version>";
src = "<src>";
nativeBuildInputs = [ hareHook ];
meta = {
description = "<description>";
inherit (hareHook) badPlatforms platforms;
};
}
```
## Cross Compilation {#hareHook-cross-compilation}
`hareHook` should handle cross compilation out of the box. This is the main
purpose of `NIX_HAREFLAGS`: In it, the `-a` flag is passed with the architecture
of the `hostPlatform`.
However, manual intervention may be needed when a binary compiled by the build
process must be run for the build to complete --- *e. g.*, when using Hare's
`hare` module for code generation.
In those cases, `hareHook` provides the `hare-native` script, which is a wrapper
around the hare binary for using the native (`buildPlatform`) toolchain.

View File

@ -19,6 +19,7 @@ dotnet.section.md
emscripten.section.md
gnome.section.md
go.section.md
hare.section.md
haskell.section.md
hy.section.md
idris.section.md

View File

@ -310,6 +310,71 @@ See `node2nix` [docs](https://github.com/svanderburg/node2nix) for more info.
- `node2nix` has some [bugs](https://github.com/svanderburg/node2nix/issues/238) related to working with lock files from npm distributed with `nodejs_16`.
- `node2nix` does not like missing packages from npm. If you see something like `Cannot resolve version: vue-loader-v16@undefined` then you might want to try another tool. The package might have been pulled off of npm.
### pnpm {#javascript-pnpm}
Pnpm is available as the top-level package `pnpm`. Additionally, there are variants pinned to certain major versions, like `pnpm_8` and `pnpm_9`, which support different sets of lock file versions.
When packaging an application that includes a `pnpm-lock.yaml`, you need to fetch the pnpm store for that project using a fixed-output-derivation. The functions `pnpm_8.fetchDeps` and `pnpm_9.fetchDeps` can create this pnpm store derivation. In conjunction, the setup hooks `pnpm_8.configHook` and `pnpm_9.configHook` will prepare the build environment to install the prefetched dependencies store. Here is an example for a package that contains a `package.json` and a `pnpm-lock.yaml` files using the above `pnpm_` attributes:
```nix
{
stdenv,
nodejs,
# This is pinned as { pnpm = pnpm_9; }
pnpm
}:
stdenv.mkDerivation (finalAttrs: {
pname = "foo";
version = "0-unstable-1980-01-01";
src = ...;
nativeBuildInputs = [
nodejs
pnpm.configHook
];
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
hash = "...";
};
})
```
NOTE: It is highly recommended to use a pinned version of pnpm (i.e. `pnpm_8` or `pnpm_9`), to increase future reproducibility. It might also be required to use an older version, if the package needs support for a certain lock file version.
In case you are patching `package.json` or `pnpm-lock.yaml`, make sure to pass `finalAttrs.patches` to the function as well (i.e. `inherit (finalAttrs) patches`.
#### Dealing with `sourceRoot` {#javascript-pnpm-sourceRoot}
NOTE: Nixpkgs pnpm tooling doesn't support building projects with a `pnpm-workspace.yaml`, or building monorepos. It maybe possible to use `pnpm.fetchDeps` for these projects, but it may be hard or impossible to produce a binary from such projects ([an example attempt](https://github.com/NixOS/nixpkgs/pull/290715#issuecomment-2144543728)).
If the pnpm project is in a subdirectory, you can just define `sourceRoot` or `setSourceRoot` for `fetchDeps`. Note, that projects using `pnpm-workspace.yaml` are currently not supported, and will probably not work using this approach.
If `sourceRoot` is different between the parent derivation and `fetchDeps`, you will have to set `pnpmRoot` to effectively be the same location as it is in `fetchDeps`.
Assuming the following directory structure, we can define `sourceRoot` and `pnpmRoot` as follows:
```
.
├── frontend
│   ├── ...
│   ├── package.json
│   └── pnpm-lock.yaml
└── ...
```
```nix
...
pnpmDeps = pnpm.fetchDeps {
...
sourceRoot = "${finalAttrs.src.name}/frontend";
};
# by default the working directory is the extracted source
pnpmRoot = "frontend";
```
### yarn2nix {#javascript-yarn2nix}
#### Preparation {#javascript-yarn2nix-preparation}

View File

@ -1558,6 +1558,8 @@ Both parameters take a list of flags as strings. The special `"all"` flag can be
For more in-depth information on these hardening flags and hardening in general, refer to the [Debian Wiki](https://wiki.debian.org/Hardening), [Ubuntu Wiki](https://wiki.ubuntu.com/Security/Features), [Gentoo Wiki](https://wiki.gentoo.org/wiki/Project:Hardened), and the [Arch Wiki](https://wiki.archlinux.org/title/Security).
Note that support for some hardening flags varies by compiler, CPU architecture, target OS and libc. Combinations of these that don't support a particular hardening flag will silently ignore attempts to enable it. To see exactly which hardening flags are being employed in any invocation, the `NIX_DEBUG` environment variable can be used.
### Hardening flags enabled by default {#sec-hardening-flags-enabled-by-default}
The following flags are enabled by default and might require disabling with `hardeningDisable` if the program to package is incompatible.
@ -1607,6 +1609,16 @@ installwatch.c:3751:5: error: conflicting types for '__open_2'
fcntl2.h:50:4: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT or O_TMPFILE in second argument needs 3 arguments
```
Disabling `fortify` implies disablement of `fortify3`
#### `fortify3` {#fortify3}
Adds the `-O2 -D_FORTIFY_SOURCE=3` compiler options. This expands the cases that can be protected by fortify-checks to include some situations with dynamic-length buffers whose length can be inferred at runtime using compiler hints.
Enabling this flag implies enablement of `fortify`. Disabling this flag does not imply disablement of `fortify`.
This flag can sometimes conflict with a build-system's own attempts at enabling fortify support and result in errors complaining about `redefinition of _FORTIFY_SOURCE`.
#### `pic` {#pic}
Adds the `-fPIC` compiler options. This options adds support for position independent code in shared libraries and thus making ASLR possible.
@ -1655,6 +1667,16 @@ Adds the `-fPIE` compiler and `-pie` linker options. Position Independent Execut
Static libraries need to be compiled with `-fPIE` so that executables can link them in with the `-pie` linker option.
If the libraries lack `-fPIE`, you will get the error `recompile with -fPIE`.
#### `zerocallusedregs` {#zerocallusedregs}
Adds the `-fzero-call-used-regs=used-gpr` compiler option. This causes the general-purpose registers that an architecture's calling convention considers "call-used" to be zeroed on return from the function. This can make it harder for attackers to construct useful ROP gadgets and also reduces the chance of data leakage from a function call.
#### `trivialautovarinit` {#trivialautovarinit}
Adds the `-ftrivial-auto-var-init=pattern` compiler option. This causes "trivially-initializable" uninitialized stack variables to be forcibly initialized with a nonzero value that is likely to cause a crash (and therefore be noticed). Uninitialized variables generally take on their values based on fragments of previous program state, and attackers can carefully manipulate that state to craft malicious initial values for these variables.
Use of this flag is controversial as it can prevent tools that detect uninitialized variable use (such as valgrind) from operating correctly.
[^footnote-stdenv-ignored-build-platform]: The build platform is ignored because it is a mere implementation detail of the package satisfying the dependency: As a general programming principle, dependencies are always *specified* as interfaces, not concrete implementation.
[^footnote-stdenv-native-dependencies-in-path]: Currently, this means for native builds all dependencies are put on the `PATH`. But in the future that may not be the case for sake of matching cross: the platforms would be assumed to be unique for native and cross builds alike, so only the `depsBuild*` and `nativeBuildInputs` would be added to the `PATH`.
[^footnote-stdenv-propagated-dependencies]: Nix itself already takes a packages transitive dependencies into account, but this propagation ensures nixpkgs-specific infrastructure like [setup hooks](#ssec-setup-hooks) also are run as if it were a propagated dependency.

View File

@ -1310,6 +1310,13 @@
githubId = 29887;
name = "Andrew Smith";
};
Andy3153 = {
name = "Andrei Dobrete";
email = "andy3153@protonmail.com";
matrix = "@andy3153:matrix.org";
github = "Andy3153";
githubId = 53472302;
};
andys8 = {
github = "andys8";
githubId = 13085980;
@ -7412,6 +7419,16 @@
fingerprint = "386E D1BF 848A BB4A 6B4A 3C45 FC83 907C 125B C2BC";
}];
};
geoffreyfrogeye = {
name = "Geoffrey Frogeye";
email = "geoffrey@frogeye.fr";
matrix = "@geoffrey:frogeye.fr";
github = "GeoffreyFrogeye";
githubId = 1685403;
keys = [{
fingerprint = "4FBA 930D 314A 0321 5E2C DB0A 8312 C8CA C1BA C289";
}];
};
georgesalkhouri = {
name = "Georges Alkhouri";
email = "incense.stitch_0w@icloud.com";

View File

@ -962,6 +962,12 @@ with lib.maintainers; {
shortName = "SageMath";
};
sdl = {
members = [ ];
scope = "Maintain SDL libraries.";
shortName = "SDL";
};
sphinx = {
members = [ ];
scope = "Maintain Sphinx related packages.";

View File

@ -12,6 +12,8 @@
for LLMs. Available as [services.open-webui](#opt-services.open-webui.enable)
service.
- [Quickwit](https://quickwit.io), sub-second search & analytics engine on cloud storage. Available as [services.quickwit](options.html#opt-services.quickwit).
## Backward Incompatibilities {#sec-release-24.11-incompatibilities}
- `nginx` package no longer includes `gd` and `geoip` dependencies. For enabling it, override `nginx` package with the optionals `withImageFilter` and `withGeoIP`.
@ -64,6 +66,10 @@
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- `hareHook` has been added as the language framework for Hare. From now on, it,
not the `hare` package, should be added to `nativeBuildInputs` when building
Hare programs.
- To facilitate dependency injection, the `imgui` package now builds a static archive using vcpkg' CMake rules.
The derivation now installs "impl" headers selectively instead of by a wildcard.
Use `imgui.src` if you just want to access the unpacked sources.

View File

@ -106,7 +106,6 @@ class Driver:
with self.logger.subtest(name):
try:
yield
return True
except Exception as e:
self.logger.error(f'Test "{name}" failed with error: "{e}"')
raise e

View File

@ -1,7 +1,5 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.hardware.opengl;
@ -25,14 +23,14 @@ in
{
imports = [
(mkRenamedOptionModule [ "services" "xserver" "vaapiDrivers" ] [ "hardware" "opengl" "extraPackages" ])
(mkRemovedOptionModule [ "hardware" "opengl" "s3tcSupport" ] "S3TC support is now always enabled in Mesa.")
(lib.mkRenamedOptionModule [ "services" "xserver" "vaapiDrivers" ] [ "hardware" "opengl" "extraPackages" ])
(lib.mkRemovedOptionModule [ "hardware" "opengl" "s3tcSupport" ] "S3TC support is now always enabled in Mesa.")
];
options = {
hardware.opengl = {
enable = mkOption {
enable = lib.mkOption {
description = ''
Whether to enable OpenGL drivers. This is needed to enable
OpenGL support in X11 systems, as well as for Wayland compositors
@ -42,12 +40,12 @@ in
compositor of choice. See services.xserver.enable and
programs.sway.enable.
'';
type = types.bool;
type = lib.types.bool;
default = false;
};
driSupport = mkOption {
type = types.bool;
driSupport = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Whether to enable accelerated OpenGL rendering through the
@ -55,8 +53,8 @@ in
'';
};
driSupport32Bit = mkOption {
type = types.bool;
driSupport32Bit = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
On 64-bit systems, whether to support Direct Rendering for
@ -66,16 +64,16 @@ in
'';
};
package = mkOption {
type = types.package;
package = lib.mkOption {
type = lib.types.package;
internal = true;
description = ''
The package that provides the OpenGL implementation.
'';
};
package32 = mkOption {
type = types.package;
package32 = lib.mkOption {
type = lib.types.package;
internal = true;
description = ''
The package that provides the 32-bit OpenGL implementation on
@ -84,10 +82,10 @@ in
'';
};
extraPackages = mkOption {
type = types.listOf types.package;
extraPackages = lib.mkOption {
type = lib.types.listOf lib.types.package;
default = [];
example = literalExpression "with pkgs; [ intel-media-driver intel-ocl intel-vaapi-driver ]";
example = lib.literalExpression "with pkgs; [ intel-media-driver intel-ocl intel-vaapi-driver ]";
description = ''
Additional packages to add to OpenGL drivers.
This can be used to add OpenCL drivers, VA-API/VDPAU drivers etc.
@ -98,10 +96,10 @@ in
'';
};
extraPackages32 = mkOption {
type = types.listOf types.package;
extraPackages32 =lib. mkOption {
type = lib.types.listOf lib.types.package;
default = [];
example = literalExpression "with pkgs.pkgsi686Linux; [ intel-media-driver intel-vaapi-driver ]";
example = lib.literalExpression "with pkgs.pkgsi686Linux; [ intel-media-driver intel-vaapi-driver ]";
description = ''
Additional packages to add to 32-bit OpenGL drivers on 64-bit systems.
Used when {option}`driSupport32Bit` is set. This can be used to add OpenCL drivers, VA-API/VDPAU drivers etc.
@ -112,8 +110,8 @@ in
'';
};
setLdLibraryPath = mkOption {
type = types.bool;
setLdLibraryPath = lib.mkOption {
type = lib.types.bool;
internal = true;
default = false;
description = ''
@ -128,7 +126,7 @@ in
};
config = mkIf cfg.enable {
config = lib.mkIf cfg.enable {
assertions = [
{ assertion = cfg.driSupport32Bit -> pkgs.stdenv.isx86_64;
message = "Option driSupport32Bit only makes sense on a 64-bit system.";
@ -138,24 +136,23 @@ in
}
];
systemd.tmpfiles.rules = [
"L+ /run/opengl-driver - - - - ${package}"
(
systemd.tmpfiles.settings.opengl = {
"/run/opengl-driver"."L+".argument = toString package;
"/run/opengl-drive-32" =
if pkgs.stdenv.isi686 then
"L+ /run/opengl-driver-32 - - - - opengl-driver"
{ "L+".argument = "opengl-driver"; }
else if cfg.driSupport32Bit then
"L+ /run/opengl-driver-32 - - - - ${package32}"
{ "L+".argument = toString package32; }
else
"r /run/opengl-driver-32"
)
];
{ "r" = {}; };
};
environment.sessionVariables.LD_LIBRARY_PATH = mkIf cfg.setLdLibraryPath
([ "/run/opengl-driver/lib" ] ++ optional cfg.driSupport32Bit "/run/opengl-driver-32/lib");
environment.sessionVariables.LD_LIBRARY_PATH = lib.mkIf cfg.setLdLibraryPath
([ "/run/opengl-driver/lib" ] ++ lib.optional cfg.driSupport32Bit "/run/opengl-driver-32/lib");
hardware.opengl.package = mkDefault pkgs.mesa.drivers;
hardware.opengl.package32 = mkDefault pkgs.pkgsi686Linux.mesa.drivers;
hardware.opengl.package = lib.mkDefault pkgs.mesa.drivers;
hardware.opengl.package32 = lib.mkDefault pkgs.pkgsi686Linux.mesa.drivers;
boot.extraModulePackages = optional (elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions;
boot.extraModulePackages = lib.optional (lib.elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions;
};
}

View File

@ -1248,6 +1248,7 @@
./services/search/meilisearch.nix
./services/search/opensearch.nix
./services/search/qdrant.nix
./services/search/quickwit.nix
./services/search/sonic-server.nix
./services/search/typesense.nix
./services/security/aesmd.nix

View File

@ -1,16 +1,22 @@
{ config, lib, pkgs, ... }:
let
enable = config.programs.bash.enableCompletion;
cfg = config.programs.bash;
in
{
options = {
programs.bash.enableCompletion = lib.mkEnableOption "Bash completion for all interactive bash shells" // {
options.programs.bash.completion = {
enable = lib.mkEnableOption "Bash completion for all interactive bash shells" // {
default = true;
};
package = lib.mkPackageOption pkgs "bash-completion" { };
};
config = lib.mkIf enable {
imports = [
(lib.mkRenamedOptionModule [ "programs" "bash" "enableCompletion" ] [ "programs" "bash" "completion" "enable" ])
];
config = lib.mkIf cfg.completion.enable {
programs.bash.promptPluginInit = ''
# Check whether we're running a version of Bash that has support for
# programmable completion. If we do, enable all modules installed in
@ -19,7 +25,7 @@ in
# $XDG_DATA_DIRS/bash-completion/completions/
# on demand, so they do not need to be sourced here.
if shopt -q progcomp &>/dev/null; then
. "${pkgs.bash-completion}/etc/profile.d/bash_completion.sh"
. "${cfg.completion.package}/etc/profile.d/bash_completion.sh"
nullglobStatus=$(shopt -p nullglob)
shopt -s nullglob
for p in $NIX_PROFILES; do

View File

@ -198,7 +198,7 @@ in
users.defaultUserShell = lib.mkDefault pkgs.bashInteractive;
environment.pathsToLink = lib.optionals cfg.enableCompletion [
environment.pathsToLink = lib.optionals cfg.completion.enable [
"/etc/bash_completion.d"
"/share/bash-completion"
];

View File

@ -15,7 +15,7 @@ in
environment.systemPackages = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) [ pkgs.fzf ];
programs = {
# load after programs.bash.enableCompletion
# load after programs.bash.completion.enable
bash.promptPluginInit = lib.mkAfter (lib.optionalString cfg.fuzzyCompletion ''
source ${pkgs.fzf}/share/fzf/completion.bash
'' + lib.optionalString cfg.keybindings ''

View File

@ -60,6 +60,7 @@ in
default = null;
description = ''
The password of the user used by netbird to connect to the coturn server.
Be advised this will be world readable in the nix store.
'';
};
@ -142,7 +143,11 @@ in
];
});
security.acme.certs.${cfg.domain}.postRun = optionalString cfg.useAcmeCertificates "systemctl restart coturn.service";
security.acme.certs = mkIf cfg.useAcmeCertificates {
${cfg.domain}.postRun = ''
systemctl restart coturn.service
'';
};
networking.firewall = {
allowedUDPPorts = cfg.openPorts;

View File

@ -2,6 +2,7 @@
let
inherit (lib)
mkDefault
mkEnableOption
mkIf
mkOption
@ -15,7 +16,7 @@ in
{
meta = {
maintainers = with lib.maintainers; [ thubrecht ];
maintainers = with lib.maintainers; [thubrecht patrickdag];
doc = ./server.md;
};
@ -41,26 +42,46 @@ in
config = mkIf cfg.enable {
services.netbird.server = {
dashboard = {
inherit (cfg) enable domain enableNginx;
domain = mkDefault cfg.domain;
enable = mkDefault cfg.enable;
enableNginx = mkDefault cfg.enableNginx;
managementServer = "https://${cfg.domain}";
};
management =
{
inherit (cfg) enable domain enableNginx;
domain = mkDefault cfg.domain;
enable = mkDefault cfg.enable;
enableNginx = mkDefault cfg.enableNginx;
}
// (optionalAttrs cfg.coturn.enable {
// (optionalAttrs cfg.coturn.enable rec {
turnDomain = cfg.domain;
turnPort = config.services.coturn.tls-listening-port;
# We cannot merge a list of attrsets so we have to redefine the whole list
settings = {
TURNConfig.Turns = mkDefault [
{
Proto = "udp";
URI = "turn:${turnDomain}:${builtins.toString turnPort}";
Username = "netbird";
Password =
if (cfg.coturn.password != null)
then cfg.coturn.password
else {_secret = cfg.coturn.passwordFile;};
}
];
};
});
signal = {
inherit (cfg) enable domain enableNginx;
domain = mkDefault cfg.domain;
enable = mkDefault cfg.enable;
enableNginx = mkDefault cfg.enableNginx;
};
coturn = {
inherit (cfg) domain;
domain = mkDefault cfg.domain;
};
};
};

View File

@ -0,0 +1,190 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.quickwit;
settingsFormat = pkgs.formats.yaml {};
quickwitYml = settingsFormat.generate "quickwit.yml" cfg.settings;
usingDefaultDataDir = cfg.dataDir == "/var/lib/quickwit";
usingDefaultUserAndGroup = cfg.user == "quickwit" && cfg.group == "quickwit";
in
{
options.services.quickwit = {
enable = mkEnableOption "Quickwit";
package = lib.mkPackageOption pkgs "Quickwit" {
default = [ "quickwit" ];
};
settings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;
options."rest" = lib.mkOption {
default = {};
description = ''
Rest server configuration for Quickwit
'';
type = lib.types.submodule {
freeformType = settingsFormat.type;
options."listen_port" = lib.mkOption {
type = lib.types.port;
default = 7280;
description = ''
The port to listen on for HTTP REST traffic.
'';
};
};
};
options."grpc_listen_port" = lib.mkOption {
type = lib.types.port;
default = 7281;
description = ''
The port to listen on for gRPC traffic.
'';
};
options."listen_address" = lib.mkOption {
type = lib.types.str;
default = "127.0.0.1";
description = ''
Listen address of Quickwit.
'';
};
options."version" = lib.mkOption {
type = lib.types.float;
default = 0.7;
description = ''
Configuration file version.
'';
};
};
default = {};
description = ''
Quickwit configuration.
'';
};
dataDir = lib.mkOption {
type = lib.types.path;
default = "/var/lib/quickwit";
apply = converge (removeSuffix "/");
description = ''
Data directory for Quickwit. If you change this, you need to
manually create the directory. You also need to create the
`quickwit` user and group, or change
[](#opt-services.quickwit.user) and
[](#opt-services.quickwit.group) to existing ones with
access to the directory.
'';
};
user = lib.mkOption {
type = lib.types.str;
default = "quickwit";
description = ''
The user Quickwit runs as. Should be left at default unless
you have very specific needs.
'';
};
group = lib.mkOption {
type = lib.types.str;
default = "quickwit";
description = ''
The group quickwit runs as. Should be left at default unless
you have very specific needs.
'';
};
extraFlags = lib.mkOption {
description = "Extra command line options to pass to Quickwit.";
default = [ ];
type = lib.types.listOf lib.types.str;
};
restartIfChanged = lib.mkOption {
type = lib.types.bool;
description = ''
Automatically restart the service on config change.
This can be set to false to defer restarts on a server or cluster.
Please consider the security implications of inadvertently running an older version,
and the possibility of unexpected behavior caused by inconsistent versions across a cluster when disabling this option.
'';
default = true;
};
};
config = mkIf cfg.enable {
systemd.services.quickwit = {
description = "Quickwit";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
inherit (cfg) restartIfChanged;
environment = {
QW_DATA_DIR = cfg.dataDir;
};
serviceConfig = {
ExecStart = ''
${cfg.package}/bin/quickwit run --config ${quickwitYml} \
${escapeShellArgs cfg.extraFlags}
'';
User = cfg.user;
Group = cfg.group;
Restart = "on-failure";
DynamicUser = usingDefaultUserAndGroup && usingDefaultDataDir;
CapabilityBoundingSet = [ "" ];
DevicePolicy = "closed";
LockPersonality = true;
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateDevices = true;
ProcSubset = "pid";
ProtectClock = true;
ProtectHome = true;
ProtectHostname = true;
ProtectControlGroups = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
ReadWritePaths = [
"/var/lib/quickwit"
];
RestrictAddressFamilies = [
"AF_NETLINK"
"AF_INET"
"AF_INET6"
];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = [
# 1. allow a reasonable set of syscalls
"@system-service @resources"
# 2. and deny unreasonable ones
"~@privileged"
# 3. then allow the required subset within denied groups
"@chown"
];
} // (optionalAttrs (usingDefaultDataDir) {
StateDirectory = "quickwit";
StateDirectoryMode = "0700";
});
};
environment.systemPackages = [ cfg.package ];
};
}

View File

@ -164,7 +164,7 @@ in
nixPackage
pkgs.nix-info
]
++ optional (config.programs.bash.enableCompletion) pkgs.nix-bash-completions;
++ optional (config.programs.bash.completion.enable) pkgs.nix-bash-completions;
systemd.packages = [ nixPackage ];

View File

@ -269,11 +269,6 @@ in
programs.bash.vteIntegration = mkDefault true;
programs.zsh.vteIntegration = mkDefault true;
# Use native GTK file chooser on Qt apps. This is because Qt does not know Pantheon.
# https://invent.kde.org/qt/qt/qtbase/-/blob/6.6/src/gui/platform/unix/qgenericunixthemes.cpp#L1312
# https://github.com/elementary/default-settings/blob/7.0.2/profile.d/qt-qpa-platformtheme.sh
environment.variables.QT_QPA_PLATFORMTHEME = mkDefault "gtk3";
# Default Fonts
fonts.packages = with pkgs; [
inter

View File

@ -53,7 +53,7 @@ in {
pkgs.substitute {
src = "${systemd}/example/sysctl.d/50-coredump.conf";
substitutions = [
"--replace"
"--replace-fail"
"${systemd}"
"${pkgs.symlinkJoin { name = "systemd"; paths = [ systemd ]; }}"
];

View File

@ -31,7 +31,9 @@ let
};
in
{
###### interface
imports = [
(mkRenamedOptionModule [ "virtualisation" "virtualbox" "guest" "draganddrop" ] [ "virtualisation" "virtualbox" "guest" "dragAndDrop" ])
];
options.virtualisation.virtualbox.guest = {
enable = mkOption {

View File

@ -788,6 +788,7 @@ in {
qtile = handleTestOn ["x86_64-linux" "aarch64-linux"] ./qtile.nix {};
quake3 = handleTest ./quake3.nix {};
quicktun = handleTest ./quicktun.nix {};
quickwit = handleTest ./quickwit.nix {};
quorum = handleTest ./quorum.nix {};
rabbitmq = handleTest ./rabbitmq.nix {};
radarr = handleTest ./radarr.nix {};

View File

@ -47,7 +47,7 @@ let
'') (attrValues nodes);
};
};
programs.bash.enableCompletion = true;
programs.bash.completion.enable = true;
environment.systemPackages = [ wrapKubectl ];
services.flannel.iface = "eth1";
services.kubernetes = {

View File

@ -10,7 +10,7 @@ let
tests = let callTest = p: lib.flip (import p) { inherit system pkgs; }; in {
thinpool = { test = callTest ./thinpool.nix; kernelFilter = lib.id; };
# we would like to test all versions, but the kernel module currently does not compile against the other versions
vdo = { test = callTest ./vdo.nix; kernelFilter = lib.filter (v: v == "5.15"); };
vdo = { test = callTest ./vdo.nix; kernelFilter = lib.filter (v: v == "6.1"); };
# systemd in stage 1
@ -26,7 +26,7 @@ let
};
vdo-sd-stage-1 = {
test = callTest ./systemd-stage-1.nix;
kernelFilter = lib.filter (v: v == "5.15");
kernelFilter = lib.filter (v: v == "6.1");
flavour = "vdo";
};
};

View File

@ -81,7 +81,17 @@ in import ../make-test-python.nix ({ pkgs, lib, ... }: {
kernelPackages = lib.mkIf (kernelPackages != null) kernelPackages;
};
specialisation.boot-lvm.configuration.virtualisation.rootDevice = "/dev/test_vg/test_lv";
specialisation.boot-lvm.configuration.virtualisation = {
useDefaultFilesystems = false;
fileSystems = {
"/" = {
device = "/dev/test_vg/test_lv";
fsType = "xfs";
};
};
rootDevice = "/dev/test_vg/test_lv";
};
};
testScript = ''
@ -99,7 +109,7 @@ in import ../make-test-python.nix ({ pkgs, lib, ... }: {
# Ensure we have successfully booted from LVM
assert "(initrd)" in machine.succeed("systemd-analyze") # booted with systemd in stage 1
assert "/dev/mapper/test_vg-test_lv on / type ext4" in machine.succeed("mount")
assert "/dev/mapper/test_vg-test_lv on / type xfs" in machine.succeed("mount")
assert "hello" in machine.succeed("cat /test")
${extraCheck}
'';

31
nixos/tests/quickwit.nix Normal file
View File

@ -0,0 +1,31 @@
import ./make-test-python.nix ({ lib, pkgs, ... }:
{
name = "quickwit";
meta.maintainers = [ pkgs.lib.maintainers.happysalada ];
nodes = {
quickwit = { config, pkgs, ... }: {
services.quickwit.enable = true;
};
};
testScript =
''
quickwit.wait_for_unit("quickwit")
quickwit.wait_for_open_port(7280)
quickwit.wait_for_open_port(7281)
quickwit.wait_until_succeeds(
"journalctl -o cat -u quickwit.service | grep 'version: ${pkgs.quickwit.version}'"
)
quickwit.wait_until_succeeds(
"journalctl -o cat -u quickwit.service | grep 'transitioned to ready state'"
)
quickwit.log(quickwit.succeed(
"systemd-analyze security quickwit.service | grep -v ''"
))
'';
})

View File

@ -8,4 +8,5 @@
api = import ./api.nix { inherit system pkgs; };
dnstap = import ./dnstap.nix { inherit system pkgs; };
nginx-clickhouse = import ./nginx-clickhouse.nix { inherit system pkgs; };
syslog-quickwit = import ./syslog-quickwit.nix { inherit system pkgs; };
}

View File

@ -0,0 +1,155 @@
import ../make-test-python.nix ({ lib, pkgs, ... }:
# Based on https://quickwit.io/docs/log-management/send-logs/using-vector
{
name = "vector-syslog-quickwit";
meta.maintainers = [ pkgs.lib.maintainers.happysalada ];
nodes = {
quickwit = { config, pkgs, ... }: {
environment.systemPackages = [ pkgs.jq ];
networking.firewall.allowedTCPPorts = [ 7280 ];
services.quickwit = {
enable = true;
settings = {
listen_address = "::";
};
};
};
syslog = { config, pkgs, ... }: {
services.vector = {
enable = true;
settings = {
sources = {
generate_syslog = {
type = "demo_logs";
format = "syslog";
interval = 0.5;
};
};
transforms = {
remap_syslog = {
inputs = ["generate_syslog"];
type = "remap";
source = ''
structured = parse_syslog!(.message)
.timestamp_nanos = to_unix_timestamp!(structured.timestamp, unit: "nanoseconds")
.body = structured
.service_name = structured.appname
.resource_attributes.source_type = .source_type
.resource_attributes.host.hostname = structured.hostname
.resource_attributes.service.name = structured.appname
.attributes.syslog.procid = structured.procid
.attributes.syslog.facility = structured.facility
.attributes.syslog.version = structured.version
.severity_text = if includes(["emerg", "err", "crit", "alert"], structured.severity) {
"ERROR"
} else if structured.severity == "warning" {
"WARN"
} else if structured.severity == "debug" {
"DEBUG"
} else if includes(["info", "notice"], structured.severity) {
"INFO"
} else {
structured.severity
}
.scope_name = structured.msgid
del(.message)
del(.timestamp)
del(.service)
del(.source_type)
'';
};
};
sinks = {
#emit_syslog = {
# inputs = ["remap_syslog"];
# type = "console";
# encoding.codec = "json";
#};
quickwit_logs = {
type = "http";
method = "post";
inputs = [ "remap_syslog" ];
encoding.codec = "json";
framing.method = "newline_delimited";
uri = "http://quickwit:7280/api/v1/otel-logs-v0_7/ingest";
};
};
};
};
};
};
testScript =
let
aggregationQuery = pkgs.writeText "aggregation-query.json" ''
{
"query": "*",
"max_hits": 0,
"aggs": {
"count_per_minute": {
"histogram": {
"field": "timestamp_nanos",
"interval": 60000000
},
"aggs": {
"severity_text_count": {
"terms": {
"field": "severity_text"
}
}
}
}
}
}
'';
in
''
quickwit.wait_for_unit("quickwit")
quickwit.wait_for_open_port(7280)
quickwit.wait_for_open_port(7281)
quickwit.wait_until_succeeds(
"journalctl -o cat -u quickwit.service | grep 'transitioned to ready state'"
)
syslog.wait_for_unit("vector")
syslog.wait_until_succeeds(
"journalctl -o cat -u vector.service | grep 'Vector has started'"
)
quickwit.wait_until_succeeds(
"journalctl -o cat -u quickwit.service | grep 'publish-new-splits'"
)
# Wait for logs to be generated
# Test below aggregates by the minute
syslog.sleep(60 * 2)
quickwit.wait_until_succeeds(
"curl -sSf -XGET http://127.0.0.1:7280/api/v1/otel-logs-v0_7/search?query=severity_text:ERROR |"
+ " jq '.num_hits' | grep -v '0'"
)
quickwit.wait_until_succeeds(
"journalctl -o cat -u quickwit.service | grep 'SearchRequest'"
)
quickwit.wait_until_succeeds(
"curl -sSf -XPOST -H 'Content-Type: application/json' http://127.0.0.1:7280/api/v1/otel-logs-v0_7/search --data @${aggregationQuery} |"
+ " jq '.num_hits' | grep -v '0'"
)
quickwit.wait_until_succeeds(
"journalctl -o cat -u quickwit.service | grep 'count_per_minute'"
)
'';
})

View File

@ -3,9 +3,12 @@
, fetchFromGitHub
, fetchpatch
, installShellFiles
, wrapGAppsNoGuiHook
, gobject-introspection
, libcdio-paranoia
, cdrdao
, libsndfile
, glib
, flac
, sox
, util-linux
@ -37,6 +40,8 @@ in python3.pkgs.buildPythonApplication rec {
nativeBuildInputs = with python3.pkgs; [
installShellFiles
wrapGAppsNoGuiHook
gobject-introspection
setuptools-scm
docutils
@ -54,7 +59,7 @@ in python3.pkgs.buildPythonApplication rec {
setuptools
];
buildInputs = [ libsndfile ];
buildInputs = [ libsndfile glib ];
nativeCheckInputs = with python3.pkgs; [
twisted
@ -62,8 +67,11 @@ in python3.pkgs.buildPythonApplication rec {
makeWrapperArgs = [
"--prefix" "PATH" ":" (lib.makeBinPath bins)
"\${gappsWrapperArgs[@]}"
];
dontWrapGApps = true;
outputs = [ "out" "man" ];
postBuild = ''
make -C man

View File

@ -4,12 +4,9 @@
, electron
, python3
, stdenv
, stdenvNoCC
, copyDesktopItems
, moreutils
, cacert
, jq
, nodePackages
, nodejs
, pnpm
, makeDesktopItem
}:
@ -24,54 +21,17 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-nxpctEG4XoxW6jOAxGdgTEYr6YnhFRR8+5HUQLxRJB0=";
};
pnpmDeps = stdenvNoCC.mkDerivation {
pname = "${finalAttrs.pname}-pnpm-deps";
inherit (finalAttrs) src version ELECTRON_SKIP_BINARY_DOWNLOAD;
nativeBuildInputs = [ jq moreutils nodePackages.pnpm cacert ];
installPhase = ''
export HOME=$(mktemp -d)
pnpm config set store-dir $out
pnpm install --frozen-lockfile --ignore-script
rm -rf $out/v3/tmp
for f in $(find $out -name "*.json"); do
sed -i -E -e 's/"checkedAt":[0-9]+,//g' $f
jq --sort-keys . $f | sponge $f
done
'';
dontBuild = true;
dontFixup = true;
outputHashMode = "recursive";
outputHash = {
x86_64-linux = "sha256-bujlQxP6Lr3qPUDxYXKyb702ZJY/xbuCsu3wVDhcb+8=";
aarch64-linux = "sha256-0kyjjttpXpFVhdza5NAjGrRn++qc/N5/u2dQl7VufLE=";
x86_64-darwin = "sha256-Q37QJt/mhfpSguOlkJGKFTCrIOrpbG3OBwaD/Bg09Us=";
aarch64-darwin = "sha256-wbfjzoGa/6vIlOOVX3bKNQ2uxzph3WSofo3MGXqA6yQ=";
}.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
hash = "sha256-8oeloQYiwUy+GDG4R+XtiynT+8Fad4WYFWTO1KANZKQ=";
};
nativeBuildInputs = [ makeWrapper python3 nodePackages.pnpm nodePackages.nodejs ]
nativeBuildInputs = [ makeWrapper python3 nodejs pnpm.configHook ]
++ lib.optionals (!stdenv.isDarwin) [ copyDesktopItems ];
ELECTRON_SKIP_BINARY_DOWNLOAD = 1;
preBuild = ''
export HOME=$(mktemp -d)
export STORE_PATH=$(mktemp -d)
cp -Tr "$pnpmDeps" "$STORE_PATH"
chmod -R +w "$STORE_PATH"
pnpm config set store-dir "$STORE_PATH"
pnpm install --offline --frozen-lockfile --ignore-script
patchShebangs node_modules/{*,.*}
'';
postBuild = lib.optionalString stdenv.isDarwin ''
cp -R ${electron}/Applications/Electron.app Electron.app
chmod -R u+w Electron.app

View File

@ -16,17 +16,18 @@
, python3
, sqlite
, zlib
, jq
}:
let
py3 = python3.withPackages (p: [ p.mako ]);
in
stdenv.mkDerivation rec {
pname = "clightning";
version = "24.02.2";
version = "24.05";
src = fetchurl {
url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
sha256 = "sha256-KQS/4VmUxJkNpvPcxL5Up9f25leiPzvi2AiKuzRQmDo=";
hash = "sha256-FD7JFM80wrruqBWjYnJHZh2f2GZJ6XDQmUQ0XetnWBg=";
};
# when building on darwin we need dawin.cctools to provide the correct libtool
@ -35,7 +36,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ autoconf autogen automake gettext libtool lowdown protobuf py3 unzip which ]
++ lib.optionals stdenv.isDarwin [ darwin.cctools darwin.autoSignDarwinBinariesHook ];
buildInputs = [ gmp libsodium sqlite zlib ];
buildInputs = [ gmp libsodium sqlite zlib jq ];
# this causes some python trouble on a darwin host so we skip this step.
# also we have to tell libwally-core to use sed instead of gsed.
@ -44,6 +45,7 @@ stdenv.mkDerivation rec {
tools/generate-wire.py \
tools/update-mocks.sh \
tools/mockup.sh \
tools/fromschema.py \
devtools/sql-rewrite.py
'' else ''
substituteInPlace external/libwally-core/tools/autogen.sh --replace gsed sed && \

View File

@ -9,17 +9,17 @@ let
in buildGoModule rec {
pname = "go-ethereum";
version = "1.14.3";
version = "1.14.4";
src = fetchFromGitHub {
owner = "ethereum";
repo = pname;
rev = "v${version}";
sha256 = "sha256-h2i/q4gfvqO8SgFxjoIhm4y0icpt+qe0Tq+3W6Ld8KM=";
sha256 = "sha256-qjzwIyzuZxmz/72TylHsnofLIF3Jr7qjC1gy7NcP+KI=";
};
proxyVendor = true;
vendorHash = "sha256-ugoRsxzJjPOS5yPhwqXhMPuThvyqCWvZD7PBnrkm0sQ=";
vendorHash = "sha256-vzxtoLlD1RjmKBpMPqcH/AAzk2l/NifpRl4Sp4qBYLg=";
doCheck = false;

View File

@ -8,16 +8,16 @@
rustPlatform.buildRustPackage rec {
pname = "findex";
version = "0.8.1";
version = "0.8.2";
src = fetchFromGitHub {
owner = "mdgaziur";
repo = "findex";
rev = "v${version}";
hash = "sha256-rxOVrl2Q27z5oo1J6D4ft4fKaOMOadmidflD0jK0+3k=";
hash = "sha256-IpgmeH5oREstud0nw4i2xYeZcJYG6eCWyw3hhid/DfU=";
};
cargoHash = "sha256-MiD96suB88NZWg7Ay/ACZfOeE66WOe9dLsvtOhCQgGo=";
cargoHash = "sha256-wsqsPh1kevkIz235qnkLkp47CnCh6qi56sZP95Upymc=";
postPatch = ''
# failing rust documentation tests and faulty quotes "`README.md`"

View File

@ -10,16 +10,16 @@
rustPlatform.buildRustPackage rec {
pname = "kickoff";
version = "0.7.2";
version = "0.7.3";
src = fetchFromGitHub {
owner = "j0ru";
repo = pname;
rev = "v${version}";
hash = "sha256-WUDbb/GLABhqE93O6bm19Y+r0kSMEJrvduw68Igub44=";
hash = "sha256-ha1pRViiOH0U0djUq1x8TIpVoUMn8l+2pA//YP70jdk=";
};
cargoHash = "sha256-nhUC9PSKAbNEK5e4WRx3dgYI0rJP5XSWcW6M5E0Ihv4=";
cargoHash = "sha256-pdncUUGSfsn35VpwuNWZ/0DAIImBLAm0LyPbqQ06Xho=";
libPath = lib.makeLibraryPath [
wayland

View File

@ -14,13 +14,13 @@
python310Packages.buildPythonApplication rec {
pname = "nwg-displays";
version = "0.3.19";
version = "0.3.20";
src = fetchFromGitHub {
owner = "nwg-piotr";
repo = "nwg-displays";
rev = "refs/tags/v${version}";
hash = "sha256-pZelKuTClRELZT80r44FxocdW+KRARD027ZV18XTTss=";
hash = "sha256-lpXcH45BFgfRjkEHqimnHonDenm5YA6oahe4sN2wpY4=";
};
nativeBuildInputs = [

View File

@ -1,11 +1,7 @@
{
lib,
fetchFromGitHub,
bash,
glib,
gdk-pixbuf,
gettext,
imagemagick,
ninja,
meson,
sassc,
@ -29,22 +25,23 @@ python3Packages.buildPythonApplication rec {
owner = "polychromatic";
repo = "polychromatic";
rev = "v${version}";
sha256 = "sha256-3Pt1Z8G0xDWlFD7LxJILPUifMBTN4OvPNHZv80umO1s=";
hash = "sha256-3Pt1Z8G0xDWlFD7LxJILPUifMBTN4OvPNHZv80umO1s=";
};
postPatch = ''
patchShebangs scripts
substituteInPlace scripts/build-styles.sh \
--replace '$(which sassc 2>/dev/null)' '${sassc}/bin/sassc' \
--replace '$(which sass 2>/dev/null)' '${sassc}/bin/sass'
--replace-fail '$(which sassc 2>/dev/null)' '${sassc}/bin/sassc' \
--replace-fail '$(which sass 2>/dev/null)' '${sassc}/bin/sass'
substituteInPlace polychromatic/paths.py \
--replace "/usr/share/polychromatic" "$out/share/polychromatic"
--replace-fail "/usr/share/polychromatic" "$out/share/polychromatic"
'';
preConfigure = ''
scripts/build-styles.sh
'';
nativeBuildInputs = with python3Packages; [
nativeBuildInputs = [
gettext
gobject-introspection
meson
@ -57,27 +54,24 @@ python3Packages.buildPythonApplication rec {
buildInputs = [ qt6.qtwayland ];
propagatedBuildInputs =
with python3Packages;
[
colorama
colour
openrazer
pyqt6
pyqt6-webengine
requests
setproctitle
libxcb
openrazer-daemon
ibus
usbutils
]
++ [
libayatana-appindicator
psmisc
];
propagatedBuildInputs = with python3Packages; [
colorama
colour
openrazer
pyqt6
pyqt6-webengine
requests
setproctitle
libxcb
openrazer-daemon
ibus
usbutils
] ++ [
libayatana-appindicator
psmisc
];
dontWrapGapps = true;
dontWrapGApps = true;
dontWrapQtApps = true;
makeWrapperArgs = [
@ -95,5 +89,6 @@ python3Packages.buildPythonApplication rec {
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ evanjs ];
mainProgram = "polychromatic-controller";
};
}

View File

@ -1,28 +0,0 @@
{ lib, stdenv, fetchFromGitHub, autoreconfHook, SDL, SDL_image }:
stdenv.mkDerivation rec {
pname = "vp";
version = "1.8";
src = fetchFromGitHub {
owner = "erikg";
repo = "vp";
rev = "v${version}";
sha256 = "08q6xrxsyj6vj0sz59nix9isqz84gw3x9hym63lz6v8fpacvykdq";
};
nativeBuildInputs = [ autoreconfHook ];
buildInputs = [ SDL SDL_image ];
env.NIX_CFLAGS_COMPILE = "-I${SDL}/include/SDL -I${SDL_image}/include/SDL";
meta = with lib; {
homepage = "https://brlcad.org/~erik/";
description = "SDL based picture viewer/slideshow";
platforms = platforms.unix;
license = licenses.gpl3;
maintainers = [ maintainers.vrthra ];
mainProgram = "vp";
};
}

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "argocd";
version = "2.11.2";
version = "2.11.3";
src = fetchFromGitHub {
owner = "argoproj";
repo = "argo-cd";
rev = "v${version}";
hash = "sha256-lePMdjWq4qFQcxFZzfLyTsMwgcmjIoBmosZs5G4CWvc=";
hash = "sha256-qSrMqByhOitRltYaVjIeubuoTR74x/pQ1Ad+uTPdpJU=";
};
proxyVendor = true; # darwin/linux hash mismatch

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "cilium-cli";
version = "0.16.8";
version = "0.16.9";
src = fetchFromGitHub {
owner = "cilium";
repo = pname;
rev = "v${version}";
hash = "sha256-SJWLWyjTdBilba+wsdpVS6i/OlQNlxZ5vjJTLheybSU=";
hash = "sha256-aER0VLYkHV0mPM4uBaKLPVmQ+Re5KUm8/01l87wMnF8=";
};
vendorHash = null;

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "hubble";
version = "0.13.4";
version = "0.13.5";
src = fetchFromGitHub {
owner = "cilium";
repo = pname;
rev = "v${version}";
sha256 = "sha256-YordxRIZtlYQprAYnH9Qn5ha6y7D52sjEOaRTcd0Z8g=";
sha256 = "sha256-0NApMqLjeYOMxEI8tY2zLxccuSD5nHUGNsya+26ghDY=";
};
vendorHash = null;

View File

@ -1,114 +1,21 @@
# k3s versions
# K3s
K3s, Kubernetes, and other clustered software has the property of not being able to update atomically. Most software in nixpkgs, like for example bash, can be updated as part of a "nixos-rebuild switch" without having to worry about the old and the new bash interacting in some way.
K3s is a simplified [Kubernetes](https://wiki.nixos.org/wiki/Kubernetes) version that bundles Kubernetes cluster components into a few small binaries optimized for Edge and IoT devices.
K3s/Kubernetes, on the other hand, is typically run across several NixOS machines, and each NixOS machine is updated independently. As such, different versions of the package and NixOS module must maintain compatibility with each other through temporary version skew during updates.
## Usage
The upstream Kubernetes project [documents this in their version-skew policy](https://kubernetes.io/releases/version-skew-policy/#supported-component-upgrade-order).
* [Module Usage](docs/USAGE.md).
Within nixpkgs, we strive to maintain a valid "upgrade path" that does not run
afoul of the upstream version skew policy.
## Configuration Examples
## Upstream release cadence and support
* [Nvidia GPU Passthru](docs/examples/NVIDIA.md)
* [Storage Examples](docs/examples/STORAGE.md)
K3s is built on top of K8s, and typically provides a similar release cadence and support window (simply by cherry-picking over k8s patches). As such, we assume k3s's support lifecycle is identical to upstream K8s.
## Cluster Maintenance and Troubleshooting
This is documented upstream [here](https://kubernetes.io/releases/patch-releases/#support-period).
* [Cluster Upkeep](docs/CLUSTER_UPKEEP.md).
In short, a new Kubernetes version is released roughly every 4 months, and each release is supported for a little over 1 year.
## K3s Package Upkeep
Any version that is not supported by upstream should be dropped from nixpkgs.
## Versions in NixOS releases
NixOS releases should avoid having deprecated software, or making major version upgrades, wherever possible.
As such, we would like to have only the newest K3s version in each NixOS
release at the time the release branch is branched off, which will ensure the
K3s version in that release will receive updates for the longest duration
possible.
However, this conflicts with another desire: we would like people to be able to upgrade between NixOS stable releases without needing to make a large enough k3s version jump that they violate the Kubernetes version skew policy.
To give an example, we may have the following timeline for k8s releases:
(Note, the exact versions and dates may be wrong, this is an illustrative example, reality may differ).
```mermaid
gitGraph
branch k8s
commit
branch "k8s-1.24"
checkout "k8s-1.24"
commit id: "1.24.0" tag: "2022-05-03"
branch "k8s-1.25"
checkout "k8s-1.25"
commit id: "1.25.0" tag: "2022-08-23"
branch "k8s-1.26"
checkout "k8s-1.26"
commit id: "1.26.0" tag: "2022-12-08"
checkout k8s-1.24
commit id: "1.24-EOL" tag: "2023-07-28"
checkout k8s-1.25
commit id: "1.25-EOL" tag: "2023-10-27"
checkout k8s-1.26
commit id: "1.26-EOL" tag: "2024-02-28"
```
(Note: the above graph will render if you view this markdown on GitHub, or when using [mermaid](https://mermaid.js.org/))
In this scenario even though k3s 1.24 is still technically supported when the NixOS 23.05
release is cut, since it goes EOL before the NixOS 23.11 release is made, we would
not want to include it. Similarly, k3s 1.25 would go EOL before NixOS 23.11.
As such, we should only include k3s 1.26 in the 23.05 release.
We can then make a similar argument when NixOS 23.11 comes around to not
include k3s 1.26 or 1.27. However, that means someone upgrading from the NixOS
22.05 release to the NixOS 23.11 would not have a supported upgrade path.
In order to resolve this issue, we propose backporting not just new patch releases to older NixOS releases, but also new k3s versions, up to one version before the first version that is included in the next NixOS release.
In the above example, where NixOS 23.05 included k3s 1.26, and 23.11 included k3s 1.28, that means we would backport 1.27 to the NixOS 23.05 release, and backport all patches for 1.26 and 1.27.
This would allow someone to upgrade between those NixOS releases in a supported configuration.
## K3s upkeep for nixpkgs maintainers
* After every nixos release, K3s maintainers should remove from `nixos-unstable` all K3s versions that exist in `nixos-stable` except the latest version (to allow decoupling system upgrade from k3s upgrade).
* Whenever adding a new major/minor K3s version to nixpkgs:
- update `k3s` alias to the latest version.
- add a NixOS release note scheduling the removal of deprecated K3s packages
- include migration information from both Kubernetes and K3s projects
* For version patch upgrades, use the K3s update script.
To execute the update script, from nixpkgs git repository, run:
> ./pkgs/applications/networking/cluster/k3s/update-script.sh "29"
"29" being the target minor version to be updated.
On failure, the update script should be fixed. On failing to fix, open an issue reporting the update script breakage.
RyanTM bot can automatically do patch upgrades. Update logs are available at: https://r.ryantm.com/log/k3s_1_29/
* When reviewing upgrades, check:
- At top-level, every K3s version should have the Go compiler pinned according to `go.mod` file.
Notice the update script does not automatically pin the Go version.
- K3s passthru.tests (Currently: single-node, multi-node, etcd) works for all architectures (linux-x86_64, aarch64-linux).
For GitHub CI, [OfBorg](https://github.com/NixOS/ofborg) can be used to test all platforms.
To test locally, at nixpkgs repository, run:
> nix build .#k3s_1_29.passthru.tests.{etcd,single-node,multi-node}
Replace "29" according to the version that you are testing.
- Read the nix build logs to check for anything unusual. (Obvious but underrated.)
* Thanks for reading the documentation and your continued contribution.
* [Package Versioning Rationale](docs/VERSIONING.md)
* [Package Maintenance Documentation](docs/PKG_UPKEEP.md)

View File

@ -0,0 +1,86 @@
# K3s Upkeep for Users
General documentation for the K3s user for cluster tasks and troubleshooting steps.
## Upkeep
### Changing K3s Token
Changing the K3s token requires resetting cluster. To reset the cluster, you must do the following:
#### Stopping K3s
Disabling K3s NixOS module won't stop K3s related dependencies, such as containerd or networking. For stopping everything, either run "k3s-killall.sh" script (available on $PATH under `/run/current-system/sw/bin/k3s-killall.sh`) or reboot host.
### Syncing K3s in multiple hosts
Nix automatically syncs hosts to `configuration.nix`, for syncing configuration.nix's git repository and triggering `nixos-rebuild switch` in multiple hosts, it is commonly used `ansible`, which enables automation of cluster provisioning, upgrade and reset.
### Cluster Reset
As upstream "k3s-uninstall.sh" is yet to be packaged for NixOS, it's necessary to run manual steps for resetting cluster.
Disable K3s instances in **all** hosts:
In NixOS configuration, set:
```
services.k3s.enable = false;
```
Rebuild NixOS. This is going to remove K3s service files. But it won't delete K3s data.
To delete K3s files:
Dismount kubelet:
```
KUBELET_PATH=$(mount | grep kubelet | cut -d' ' -f3);
${KUBELET_PATH:+umount $KUBELET_PATH}
```
Delete k3s data:
```
rm -rf /etc/rancher/{k3s,node};
rm -rf /var/lib/{rancher/k3s,kubelet,longhorn,etcd,cni}
```
When using Etcd, Reset Etcd:
Certify **all** K3s instances are stopped, because a single instance can re-seed etcd database with previous cryptographic key.
Disable etcd database in NixOS configuration:
```
services.etcd.enable = false;
```
Rebuild NixOS.
Delete etcd files:
```
rm -rf /var/lib/etcd/
```
Reboot hosts.
In NixOS configuration:
```
Re-enable Etcd first. Rebuild NixOS. Certify service health. (systemctl status etcd)
Re-enable K3s second. Rebuild NixOS. Certify service health. (systemctl status k3s)
```
Etcd & K3s cluster will be provisioned new.
Tip: Use Ansible to automate reset routine, like this.
## Troubleshooting
### Raspberry Pi not working
If the k3s.service/k3s server does not start and gives you the error FATA[0000] failed to find memory cgroup (v2) Here's the github issue: https://github.com/k3s-io/k3s/issues/2067 .
To fix the problem, you can add these things to your configuration.nix.
```
boot.kernelParams = [
"cgroup_enable=cpuset" "cgroup_memory=1" "cgroup_enable=memory"
];
```
### FailedKillPod: failed to get network "cbr0" cached result
> KillPodSandboxError: failed to get network "cbr0" cached result: decoding version from network config: unexpected end of JSON input
Workaround: https://github.com/k3s-io/k3s/issues/6185#issuecomment-1581245331

View File

@ -0,0 +1,60 @@
# K3s Upkeep for Maintainers
General documentation for the K3s maintainer and reviewer use for consistency in maintenance processes.
## NixOS Release Maintenance
This process split into two sections and adheres to the versioning policy outlined in [VERSIONING.md](VERSIONING.md).
### Pre-Release
* Prior to the breaking change window of the next release being closed:
* `nixos-unstable`: Ensure k3s points to latest versioned release
* `nixos-unstable`: Ensure release notes are up to date
* `nixos-unstable`: Remove k3s releases which will be end of life upstream prior to end-of-life for the next NixOS stable release are removed with proper deprecation notice (process listed below)
### Post-Release
* For major/minor releases of k3s:
* `nixos-unstable`: Create a new versioned k3s package
* `nixos-unstable`: Update k3s alias to point to new versioned k3s package
* `nixos-unstable`: Add NixOS Release note denoting:
* Removal of deprecated K3s packages
* Migration information from the Kubernetes and K3s projects
* `nixos-stable`: Backport the versioned package
* For patch releases of existing packages:
* `nixos-unstable`: Update package version (process listed below)
* `nixos-stable`: Backport package update done to nixos-unstable
## Patch Upgrade Process
Patch upgrades can use the [update script](../update-script.sh) in the root of the package. To update k3s 1.30.x, for example, you can run the following from the root of the nixpkgs git repo:
> ./pkgs/applications/networking/cluster/k3s/update-script.sh "30"
To update another version, just replace the `"30"` with the appropriate minor revision.
If the script should fail, the first goal would be to fix the script. If you are unable to fix the script, open an issue reporting the update script failure with the exact command used and the failure observed.
RyanTM bot can automatically do patch upgrades. Update logs are available at versioned urls, e.g. for 1.30.x: https://r.ryantm.com/log/k3s_1_30
## Package Removal Process
Package removal policy and timelines follow our reasoning in the [versioning documentation](VERSIONING.md#patch-release-support-lifecycle). In order to remove a versioned k3s package, create a PR achieving the following:
* Remove the versioned folder containing the chart and package version files (e.g. `./1_30/`)
* Remove the package block from [default.nix](../default.nix) (e.g. `k3s_1_30 = ...`)
* Remove the package reference from [pkgs/top-level/all-packages.nix](/pkgs/top-level/all-packages.nix)
* Add a deprecation notice in [pkgs/top-level/aliases.nix](/pkgs/top-level/aliases.nix), such as `k3s_1_26 = throw "'k3s_1_26' has been removed from nixpkgs as it has reached end of life"; # Added 2024-05-20`.
## Change Request Review Process
Quick checklist for reviewers of the k3s package:
* Is the version of the Go compiler pinned according to the go.mod file for the release?
* Update script will not pin nor change the go version.
* Do the K3s passthru.tests work for all architectures supported? (linux-x86_64, aarch64-linux)
* For GitHub CI, [OfBorg](https://github.com/NixOS/ofborg) can be used to test all platforms.
* For Local testing, the following can be run in nixpkgs root on the upgrade branch: `nix build .#k3s_1_29.passthru.tests.{etcd,single-node,multi-node}` (Replace "29" to the version tested)
* Anything unusual in the nix build logs or test logs?

View File

@ -0,0 +1,57 @@
# K3s Usage
## Single Node
```
{
networking.firewall.allowedTCPPorts = [
6443 # k3s: required so that pods can reach the API server (running on port 6443 by default)
# 2379 # k3s, etcd clients: required if using a "High Availability Embedded etcd" configuration
# 2380 # k3s, etcd peers: required if using a "High Availability Embedded etcd" configuration
];
networking.firewall.allowedUDPPorts = [
# 8472 # k3s, flannel: required if using multi-node for inter-node networking
];
services.k3s.enable = true;
services.k3s.role = "server";
services.k3s.extraFlags = toString [
# "--kubelet-arg=v=4" # Optionally add additional args to k3s
];
}
```
Once the above changes are active, you can access your cluster through `sudo k3s kubectl` (e.g. `sudo k3s kubectl cluster-info`) or by using the generated kubeconfig file in `/etc/rancher/k3s/k3s.yaml`.
Multi-node setup
## Multi-Node
it is simple to create a cluster of multiple nodes in a highly available setup (all nodes are in the control-plane and are a part of the etcd cluster).
The first node is configured like this:
```
{
services.k3s = {
enable = true;
role = "server";
token = "<randomized common secret>";
clusterInit = true;
};
}
```
Any other subsequent nodes can be added with a slightly different config:
```
{
services.k3s = {
enable = true;
role = "server"; # Or "agent" for worker only nodes
token = "<randomized common secret>";
serverAddr = "https://<ip of first node>:6443";
};
}
```
For this to work you need to open the aforementioned API, etcd, and flannel ports in the firewall. Official documentation on what ports need to be opened for specific use cases can be found on [k3s' documentation site](https://docs.k3s.io/installation/requirements#inbound-rules-for-k3s-nodes). Note that it is [recommended](https://etcd.io/docs/v3.3/faq/#why-an-odd-number-of-cluster-members) to use an odd number of nodes in such a cluster.
Tip: If you run into connectivity issues between nodes for specific applications (e.g. ingress controller), please verify the firewall settings you have enabled (example under [Single Node](#single-node)) against the documentation for that specific application. In the ingress controller example, you may want to open 443 or 80 depending on your use case.

View File

@ -0,0 +1,46 @@
# Versioning
K3s, Kubernetes, and other clustered software has the property of not being able to update atomically. Most software in nixpkgs, like for example bash, can be updated as part of a "nixos-rebuild switch" without having to worry about the old and the new bash interacting in some way.
K3s/Kubernetes, on the other hand, is typically run across several NixOS machines, and each NixOS machine is updated independently. As such, different versions of the package and NixOS module must maintain compatibility with each other through temporary version skew during updates.
The upstream Kubernetes project [documents this in their version-skew policy](https://kubernetes.io/releases/version-skew-policy/#supported-component-upgrade-order).
Within nixpkgs, we strive to maintain a valid "upgrade path" that does not run
afoul of the upstream version skew policy.
## Patch Release Support Lifecycle
K3s is built on top of K8s and typically provides a similar release cadence and support window (simply by cherry-picking over k8s patches). As such, we assume k3s's support lifecycle is identical to upstream K8s. The upstream K8s release and support lifecycle, including maintenance and end-of-life dates for current releases, is documented [on their suppport site](https://kubernetes.io/releases/patch-releases/#support-period). A more tabular view of the current support timeline can also be found on [endoflife.date](https://endoflife.date/kubernetes).
In short, a new Kubernetes version is released roughly every 4 months and each release is supported for a little over 1 year.
## Versioning in nixpkgs
There are two package types that are maintained within nixpkgs when we are looking at the `nixos-unstable` branch. A standard `k3s` package and versioned releases such as `k3s_1_28`, `k3s_1_29`, and `k3s_1_30`.
The standard `k3s` package will be updated as new versions of k3s are released upstream. Versioned releases, on the other hand, will follow the path release support lifecycle as detailed in the previous section and be removed from `nixos-unstable` when they are either end-of-life upstream or older than the current `k3s` package in `nixos-stable`.
## Versioning in NixOS Releases
Those same package types are also maintained on the release branches of NixOS, but have some special considerations within a release.
NixOS releases (24.05, 24.11, etc) should avoid having deprecated software or major version upgrades during the support lifecycle of that release wherever possible. As such, each NixOS release should only ever have one version of `k3s` when it is released. An example for the NixOS 24.05 release would be that `k3s` package points to `k3s_1_30` for the full lifecycle of its release with no other versions present at release.
However, this conflicts with our desire for users to be able to upgrade between stable NixOS releases without needing to make a large enough k3s version jump as to violate the skew policy listed previously. Given NixOS 24.05 has 1.30.x as its k3s version and the NixOS 24.11 release would have 1.32.x as its k3s version, we need to provide a way for users to upgrade k3s to 1.32.x before upgrading to the next NixOS stable release.
To be able to achieve the goal above, the k3s maintainers would backport `k3s_1_31` and `k3s_1_32` from `nixos-unstable` to NixOS 24.05 as they release. This means that when NixOS 24.11 is released with only the `k3s` package pointing to `k3s_1_32`, users will have an upgrade path on 24.05 to first upgrade locally to `k3s_1_31` and then to `k3s_1_32` (e.g. pointing `services.k3s.package` from `k3s` to `k3s_1_31`, upgrading the cluster, and repeating the process through versions).
Using the above as the example, a three NixOS release example would look like:
* NixOS 23.11
* k3s/k3s_1_27 (Release Version, patches backported)
* k3s_1_28 (Backported)
* k3s_1_29 (Backported)
* k3s_1_30 (Backported)
* NixOS 24.05
* k3s/k3s_1_30 (Release Version, patches backported)
* k3s_1_31 (Backported)
* k3s_1_32 (Backported)
* NixOS 24.11
* k3s/k3s_1_32 (Release Version, patches backported)

View File

@ -0,0 +1,55 @@
# Nvidia GPU Support
To use Nvidia GPU in the cluster the nvidia-container-runtime and runc are needed. To get the two components it suffices to add the following to the configuration
```
virtualisation.docker = {
enable = true;
enableNvidia = true;
};
environment.systemPackages = with pkgs; [ docker runc ];
```
Note, using docker here is a workaround, it will install nvidia-container-runtime and that will cause it to be accessible via /run/current-system/sw/bin/nvidia-container-runtime, currently its not directly accessible in nixpkgs.
You now need to create a new file in `/var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl` with the following
```
{{ template "base" . }}
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
privileged_without_host_devices = false
runtime_engine = ""
runtime_root = ""
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
BinaryName = "/run/current-system/sw/bin/nvidia-container-runtime"
```
Update: As of 12/03/2024 It appears that the last two lines above are added by default, and if the two lines are present (as shown above) it will refuse to start the server. You will need to remove the two lines from that point onward.
Note here we are pointing the nvidia runtime to "/run/current-system/sw/bin/nvidia-container-runtime".
Now apply the following runtime class to k3s cluster:
```
apiVersion: node.k8s.io/v1
handler: nvidia
kind: RuntimeClass
metadata:
labels:
app.kubernetes.io/component: gpu-operator
name: nvidia
```
Following [k8s-device-plugin](https://github.com/NVIDIA/k8s-device-plugin#deployment-via-helm) install the helm chart with `runtimeClassName: nvidia` set. In order to passthrough the nvidia card into the container, your deployments spec must contain - runtimeClassName: nvidia - env:
```
- name: NVIDIA_VISIBLE_DEVICES
value: all
- name: NVIDIA_DRIVER_CAPABILITIES
value: all
```
to test its working exec onto a pod and run nvidia-smi. For more configurability of nvidia related matters in k3s look in [k3s-docs](https://docs.k3s.io/advanced#nvidia-container-runtime-support).

View File

@ -0,0 +1,122 @@
# Storage Examples
The following are some NixOS specific considerations for specific storage mechanisms with kubernetes/k3s.
## Longhorn
NixOS configuration required for Longhorn:
```
environment.systemPackages = [ pkgs.nfs-utils ];
services.openiscsi = {
enable = true;
name = "${config.networking.hostName}-initiatorhost";
};
```
Longhorn container has trouble with NixOS path. Solution is to override PATH environment variable, such as:
```
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin
```
**Kyverno Policy for Fixing Longhorn Container for NixOS**
```
---
apiVersion: v1
kind: ConfigMap
metadata:
name: longhorn-nixos-path
namespace: longhorn-system
data:
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin
---
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: longhorn-add-nixos-path
annotations:
policies.kyverno.io/title: Add Environment Variables from ConfigMap
policies.kyverno.io/subject: Pod
policies.kyverno.io/category: Other
policies.kyverno.io/description: >-
Longhorn invokes executables on the host system, and needs
to be aware of the host systems PATH. This modifies all
deployments such that the PATH is explicitly set to support
NixOS based systems.
spec:
rules:
- name: add-env-vars
match:
resources:
kinds:
- Pod
namespaces:
- longhorn-system
mutate:
patchStrategicMerge:
spec:
initContainers:
- (name): "*"
envFrom:
- configMapRef:
name: longhorn-nixos-path
containers:
- (name): "*"
envFrom:
- configMapRef:
name: longhorn-nixos-path
---
```
## NFS
NixOS configuration required for NFS:
```
boot.supportedFilesystems = [ "nfs" ];
services.rpcbind.enable = true;
```
## Rook/Ceph
In order to support Rook/Ceph, the following NixOS kernelModule configuration is required:
```
boot.kernelModules = [ "rbd" ];
```
## ZFS Snapshot Support
K3s's builtin containerd does not support the zfs snapshotter. However, it is possible to configure it to use an external containerd:
```
virtualisation.containerd = {
enable = true;
settings =
let
fullCNIPlugins = pkgs.buildEnv {
name = "full-cni";
paths = with pkgs;[
cni-plugins
cni-plugin-flannel
];
};
in {
plugins."io.containerd.grpc.v1.cri".cni = {
bin_dir = "${fullCNIPlugins}/bin";
conf_dir = "/var/lib/rancher/k3s/agent/etc/cni/net.d/";
};
# Optionally set private registry credentials here instead of using /etc/rancher/k3s/registries.yaml
# plugins."io.containerd.grpc.v1.cri".registry.configs."registry.example.com".auth = {
# username = "";
# password = "";
# };
};
};
# TODO describe how to enable zfs snapshotter in containerd
services.k3s.extraFlags = toString [
"--container-runtime-endpoint unix:///run/containerd/containerd.sock"
];
```

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "pachyderm";
version = "2.10.1";
version = "2.10.2";
src = fetchFromGitHub {
owner = "pachyderm";
repo = "pachyderm";
rev = "v${version}";
hash = "sha256-ok3TaQ8Vn+dDnlfJ/5n6qFTkYER/jVhFRPAqzGXp1iI=";
hash = "sha256-5Q3T4yusnJVHU8QdXxbDuePToGp+hu+GnwqD7TG/0Rw=";
};
vendorHash = "sha256-AxKhxXZQ2sBvXs9C6b7WkjpNsYl6MSO/C2ttmRRtBGw=";
vendorHash = "sha256-NShVyjNyG06cLmt8rd71lFLvkd8KRWQjj6xUCx7NgSk=";
subPackages = [ "src/server/cmd/pachctl" ];

View File

@ -4,7 +4,8 @@
, fetchFromGitHub
, buildGoModule
, makeWrapper
, nodePackages
, nodejs
, pnpm
, cacert
, esbuild
, jq
@ -48,7 +49,7 @@ in
};
};
gui = stdenvNoCC.mkDerivation rec {
gui = stdenvNoCC.mkDerivation (finalAttrs: {
pname = "geph-gui";
inherit version;
@ -60,42 +61,11 @@ in
fetchSubmodules = true;
};
pnpm-deps = stdenvNoCC.mkDerivation {
pname = "${pname}-pnpm-deps";
inherit src version;
sourceRoot = "${src.name}/gephgui-wry/gephgui";
nativeBuildInputs = [
jq
moreutils
nodePackages.pnpm
cacert
];
installPhase = ''
export HOME=$(mktemp -d)
pnpm config set store-dir $out
pnpm install --ignore-scripts
# Remove timestamp and sort the json files
rm -rf $out/v3/tmp
for f in $(find $out -name "*.json"); do
sed -i -E -e 's/"checkedAt":[0-9]+,//g' $f
jq --sort-keys . $f | sponge $f
done
'';
dontFixup = true;
outputHashMode = "recursive";
outputHash = "sha256-OKPx5xRI7DWd6m31nYx1biP0k6pcZ7fq7dfVlHda4O0=";
};
gephgui-wry = rustPlatform.buildRustPackage {
pname = "gephgui-wry";
inherit version src;
inherit (finalAttrs) version src;
sourceRoot = "${src.name}/gephgui-wry";
sourceRoot = "${finalAttrs.src.name}/gephgui-wry";
cargoLock = {
lockFile = ./Cargo.lock;
@ -105,10 +75,17 @@ in
};
};
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
sourceRoot = "${finalAttrs.src.name}/gephgui-wry/gephgui";
hash = "sha256-0MGlsLEgugQ1wEz07ROIwkanTa8PSKwIaxNahyS1014=";
};
nativeBuildInputs = [
pkg-config
nodePackages.pnpm
pnpm.configHook
makeWrapper
nodejs
];
buildInputs = [
@ -132,22 +109,19 @@ in
});
})}";
pnpmRoot = "gephgui";
preBuild = ''
cd gephgui
export HOME=$(mktemp -d)
pnpm config set store-dir ${pnpm-deps}
pnpm install --ignore-scripts --offline
chmod -R +w node_modules
pnpm rebuild
pushd gephgui
pnpm build
cd ..
popd
'';
};
dontBuild = true;
installPhase = ''
install -Dt $out/bin ${gephgui-wry}/bin/gephgui-wry
install -Dt $out/bin ${finalAttrs.gephgui-wry}/bin/gephgui-wry
install -d $out/share/icons/hicolor
for i in '16' '32' '64' '128' '256'
do
@ -163,5 +137,5 @@ in
meta = geph-meta // {
license = with lib.licenses; [ unfree ];
};
};
});
}

View File

@ -3,7 +3,7 @@
, fetchurl
, autoPatchelfHook
, dpkg
, makeBinaryWrapper
, makeShellWrapper
, wrapGAppsHook3
, alsa-lib
, at-spi2-atk
@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
};
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
nativeBuildInputs = [ autoPatchelfHook dpkg makeBinaryWrapper wrapGAppsHook3 ];
nativeBuildInputs = [ autoPatchelfHook dpkg makeShellWrapper wrapGAppsHook3 ];
dontWrapGApps = true;
@ -113,8 +113,9 @@ stdenv.mkDerivation rec {
cp -R "usr/share" "$out/share"
chmod -R g-w "$out"
# Wrap the startup command
makeBinaryWrapper $out/opt/ArmCord/armcord $out/bin/armcord \
# use makeShellWrapper (instead of the makeBinaryWrapper provided by wrapGAppsHook3) for proper shell variable expansion
# see https://github.com/NixOS/nixpkgs/issues/172583
makeShellWrapper $out/opt/ArmCord/armcord $out/bin/armcord \
"''${gappsWrapperArgs[@]}" \
--prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=UseOzonePlatform --enable-features=WebRTCPipeWireCapturer }}" \

View File

@ -12,13 +12,13 @@
stdenv.mkDerivation rec {
pname = "treesheets";
version = "0-unstable-2024-05-29";
version = "0-unstable-2024-06-05";
src = fetchFromGitHub {
owner = "aardappel";
repo = "treesheets";
rev = "23654b9be71b59bbffd156ecedc663bd152d123c";
hash = "sha256-ZTLMqDAmyojvET6qp1ziMNQgk2c+45z2UB3yFMhTmUQ=";
rev = "1ad0ec1ad235dd00bbd6bfdb27e24f3dcd610da4";
hash = "sha256-1Xb4Jdw04E2xTg/93zsGse3Yao8h51kDcJpbvx41yp0=";
};
nativeBuildInputs = [

View File

@ -7,13 +7,13 @@
stdenv.mkDerivation rec {
pname = "eigenmath";
version = "0-unstable-2024-05-18";
version = "3.26-unstable-2024-06-03";
src = fetchFromGitHub {
owner = "georgeweigt";
repo = pname;
rev = "e5fc4a44797549da9d8994203547da63002b3700";
hash = "sha256-pX8rRIrOq0fQvzVrvAh47ZBzdkS6ZKuXTQ9joa/XJgg=";
rev = "3475c5fa4bd79a40006ea32ecd99d3678bdea735";
hash = "sha256-szA7vqTaNHotNnrxzE1Lg/S5L+Lc4pLIdivGSkFZkN0=";
};
checkPhase = let emulator = stdenv.hostPlatform.emulator buildPackages; in ''

View File

@ -1,4 +1,4 @@
{ mkDerivation, lib, fetchFromGitHub, fetchpatch, cmake, pkg-config
{ mkDerivation, lib, fetchFromGitHub, cmake, pkg-config
, qtbase, qtmultimedia, qtsvg, qttools, krdc
, libvncserver, libvirt, pcre, pixman, qtermwidget, spice-gtk, spice-protocol
, libselinux, libsepol, util-linux
@ -6,13 +6,13 @@
mkDerivation rec {
pname = "virt-manager-qt";
version = "0.72.97";
version = "0.72.99";
src = fetchFromGitHub {
owner = "F1ash";
repo = "qt-virt-manager";
rev = version;
sha256 = "0b2bx7ah35glcsiv186sc9cqdrkhg1vs9jz036k9byk61np0cb1i";
hash = "sha256-1aXlGlK+YPOe2X51xycWvSu8YC9uCywyL6ItiScFA04=";
};
cmakeFlags = [
@ -20,14 +20,6 @@ mkDerivation rec {
"-DQTERMWIDGET_INCLUDE_DIRS=${qtermwidget}/include/qtermwidget5"
];
patches = [
(fetchpatch {
# drop with next update
url = "https://github.com/F1ash/qt-virt-manager/commit/0d338b037ef58c376d468c1cd4521a34ea181edd.patch";
sha256 = "1wjqyc5wsnxfwwjzgqjr9hcqhd867amwhjd712qyvpvz8x7p2s24";
})
];
buildInputs = [
qtbase qtmultimedia qtsvg krdc
libvirt libvncserver pcre pixman qtermwidget spice-gtk spice-protocol

View File

@ -4,12 +4,12 @@
, qttools, qtsvg, qtwayland, pkg-config, which, docbook_xsl, docbook_xml_dtd_43
, alsa-lib, curl, libvpx, nettools, dbus, substituteAll, gsoap, zlib, xz
, yasm, glslang
, linuxPackages
, nixosTests
# If open-watcom-bin is not passed, VirtualBox will fall back to use
# the shipped alternative sources (assembly).
, open-watcom-bin
, makeself, perl
, vulkan-loader
, javaBindings ? true, jdk # Almost doesn't affect closure size
, pythonBindings ? false, python3
, extensionPack ? null, fakeroot
@ -32,11 +32,11 @@ let
buildType = "release";
# Use maintainers/scripts/update.nix to update the version and all related hashes or
# change the hashes in extpack.nix and guest-additions/default.nix as well manually.
virtualboxVersion = "7.0.14";
virtualboxSha256 = "45860d834804a24a163c1bb264a6b1cb802a5bc7ce7e01128072f8d6a4617ca9";
virtualboxVersion = "7.0.18";
virtualboxSha256 = "d999513533631674a024762668de999411d8197060c51e68c5faf0a2c0eea1a5";
kvmPatchVersion = "20240502";
kvmPatchHash = "sha256-KokIrrAoJutHzPg6e5YAJgDGs+nQoVjapmyn9kG5tV0=";
kvmPatchVersion = "20240515";
kvmPatchHash = "sha256-Kh/tlPScdf7CbEEpL54iqMpeUIdmnJL2r/mxnlEzLd0=";
# The KVM build is not compatible to VirtualBox's kernel modules. So don't export
# modsrc at all.
@ -135,8 +135,6 @@ in stdenv.mkDerivation (finalAttrs: {
./qt-dependency-paths.patch
# https://github.com/NixOS/nixpkgs/issues/123851
./fix-audio-driver-loading.patch
./libxml-2.12.patch
./gcc-13.patch
];
postPatch = ''
@ -266,7 +264,8 @@ in stdenv.mkDerivation (finalAttrs: {
# If hardening is disabled, wrap the VirtualBoxVM binary instead of patching
# the source code (see postPatch).
+ optionalString (!headless && !enableHardening) ''
wrapQtApp $out/libexec/virtualbox/VirtualBoxVM
wrapQtApp $out/libexec/virtualbox/VirtualBoxVM \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ vulkan-loader ]}"
'';
passthru = {

View File

@ -12,7 +12,7 @@ fetchurl rec {
# Manually sha256sum the extensionPack file, must be hex!
# Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`.
# Checksums can also be found at https://www.virtualbox.org/download/hashes/${version}/SHA256SUMS
let value = "42cb36fbf439a9ed28c95d2bbc718a0eac902225eb579c884c549af2e94be633";
let value = "cab1abad478679fc34a0c5cb4a6d3566edc20e3c54cbed39c8e895d8cfad3ee2";
in assert (builtins.stringLength value) == 64; value;
meta = {

View File

@ -1,35 +0,0 @@
diff --git a/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp b/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp
index 8a9d15c0..260ebc5c 100644
--- a/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp
+++ b/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp
@@ -46,6 +46,9 @@
#if defined(VBOX_VBGLR3_XFREE86)
extern "C" {
# define XFree86LOADER
+# ifdef RT_GNUC_PREREQ(13,0) /* cmath gets dragged in and the c++/13/cmath header is allergic to -ffreestanding. */
+# define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
+# endif
# include <xf86_ansic.h>
# undef size_t
}
diff --git a/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp b/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp
index 2c5e9314..64890169 100644
--- a/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp
+++ b/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp
@@ -1,3 +1,5 @@
+#include <cstdint>
+
#include "util_matrix.h"
namespace dxvk {
diff --git a/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h b/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h
index 77cdf294..9dcb4bf9 100644
--- a/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h
+++ b/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h
@@ -1,5 +1,6 @@
#pragma once
+#include <cstdint>
#include <iostream>
#include "util_bit.h"

View File

@ -5,7 +5,7 @@ let
in
fetchurl {
url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
sha256 = "0efbcb9bf4722cb19292ae00eba29587432e918d3b1f70905deb70f7cf78e8ce";
sha256 = "4469bab0f59c62312b0a1b67dcf9c07a8a971afad339fa2c3eb80e209e099ef9";
meta = {
description = "Guest additions ISO for VirtualBox";
longDescription = ''

View File

@ -10,11 +10,11 @@ let
in stdenv.mkDerivation (finalAttrs: {
pname = "VirtualBox-GuestAdditions-builder-${kernel.version}";
version = "7.0.14";
version = "7.0.18";
src = fetchurl {
url = "https://download.virtualbox.org/virtualbox/${finalAttrs.version}/VirtualBox-${finalAttrs.version}.tar.bz2";
sha256 = "45860d834804a24a163c1bb264a6b1cb802a5bc7ce7e01128072f8d6a4617ca9";
sha256 = "d999513533631674a024762668de999411d8197060c51e68c5faf0a2c0eea1a5";
};
env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration";
@ -37,13 +37,9 @@ in stdenv.mkDerivation (finalAttrs: {
'';
patches = [
../gcc-13.patch
# https://www.virtualbox.org/changeset/100258/vbox
#../gcc-13.patch
## https://www.virtualbox.org/changeset/100258/vbox
./no-legacy-xorg.patch
# https://www.virtualbox.org/changeset/102989/vbox
./strlcpy-1.patch
# https://www.virtualbox.org/changeset/102990/vbox
./strlcpy-2.patch
];
postPatch = ''

View File

@ -1,29 +0,0 @@
# https://www.virtualbox.org/changeset/102989/vbox
--- a/include/iprt/string.h
+++ b/include/iprt/string.h
@@ -244,4 +244,26 @@
#else /* !RT_OS_LINUX && !__KERNEL__ */
# define RT_BCOPY_UNFORTIFIED(a_pDst, a_pSrc, a_cbToCopy) memcpy((a_pDst), (a_pSrc), (a_cbToCopy))
+#endif /* !RT_OS_LINUX && !__KERNEL__ */
+
+/** @def RT_STRSCPY
+ * Copy string and NULL-terminate output buffer.
+ *
+ * This macro should mostly be used in Linux kernel code. This is
+ * the replacement for deprecated strlcpy. It was deprecated since 3.16.60
+ * when strscpy was introduced as an alternative. Finally, strlcpy was
+ * completely removed from kernel code in 6.8.0.
+ *
+ * @param a_pDst Pointer to the destination string buffer.
+ * @param a_pSrc Pointer to the source NULL-terminated string buffer.
+ * @param a_cbToCopy Size of destination buffer..
+ */
+#if defined(RT_OS_LINUX) && defined(__KERNEL__)
+# if (RTLNX_VER_MIN(3,16,60))
+# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy) strscpy((a_pDst), (a_pSrc), (a_cbToCopy))
+# else /* < 3.16.60 */
+# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy) strlcpy((a_pDst), (a_pSrc), (a_cbToCopy))
+# endif
+#else /* !RT_OS_LINUX && !__KERNEL__ */
+# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy) strscpy((a_pDst), (a_pSrc), (a_cbToCopy))
#endif /* !RT_OS_LINUX && !__KERNEL__ */

View File

@ -1,86 +0,0 @@
# https://www.virtualbox.org/changeset/102990/vbox
--- a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
+++ b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
@@ -1411,5 +1411,5 @@
}
else if (pParam->name[0] != 'd')
- strlcpy(&g_szLogGrp[0], pszValue, sizeof(g_szLogGrp));
+ RT_STRSCPY(&g_szLogGrp[0], pszValue, sizeof(g_szLogGrp));
return 0;
@@ -1437,5 +1437,5 @@
}
else if (pParam->name[0] != 'd')
- strlcpy(&g_szLogFlags[0], pszValue, sizeof(g_szLogFlags));
+ RT_STRSCPY(&g_szLogFlags[0], pszValue, sizeof(g_szLogFlags));
return 0;
}
@@ -1462,5 +1462,5 @@
}
else if (pParam->name[0] != 'd')
- strlcpy(&g_szLogDst[0], pszValue, sizeof(g_szLogDst));
+ RT_STRSCPY(&g_szLogDst[0], pszValue, sizeof(g_szLogDst));
return 0;
}
# https://www.virtualbox.org/changeset/102990/vbox
--- a/src/VBox/Additions/linux/drm/vbox_drv.h
+++ b/src/VBox/Additions/linux/drm/vbox_drv.h
@@ -539,7 +539,5 @@
void vbox_irq_fini(struct vbox_private *vbox);
void vbox_report_hotplug(struct vbox_private *vbox);
-#if RTLNX_VER_MAX(5,15,0) && !RTLNX_RHEL_MAJ_PREREQ(9,1) && !RTLNX_SUSE_MAJ_PREREQ(15,5)
irqreturn_t vbox_irq_handler(int irq, void *arg);
-#endif
/* vbox_hgsmi.c */
# https://www.virtualbox.org/changeset/102990/vbox
--- a/src/VBox/Additions/linux/sharedfolders/regops.c
+++ b/src/VBox/Additions/linux/sharedfolders/regops.c
@@ -3506,5 +3506,5 @@
/** file_operations::mmap wrapper for logging purposes. */
-extern int vbsf_reg_mmap(struct file *file, struct vm_area_struct *vma)
+static int vbsf_reg_mmap(struct file *file, struct vm_area_struct *vma)
{
int rc;
@@ -3787,5 +3787,5 @@
# if RTLNX_VER_MIN(5,19,0) || RTLNX_RHEL_RANGE(9,3, 9,99)
-int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
+static int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
unsigned len, struct page **pagep, void **fsdata)
{
@@ -3794,5 +3794,5 @@
}
# else
-int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
+static int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
unsigned len, unsigned flags, struct page **pagep, void **fsdata)
{
# https://www.virtualbox.org/changeset/102990/vbox
--- a/src/VBox/Additions/linux/sharedfolders/vfsmod.c
+++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.c
@@ -1409,5 +1409,5 @@
case Opt_iocharset:
case Opt_nls:
- strlcpy(info->nls_name, param->string, sizeof(info->nls_name));
+ RT_STRSCPY(info->nls_name, param->string, sizeof(info->nls_name));
break;
case Opt_uid:
@@ -1470,5 +1470,5 @@
break;
case Opt_tag:
- strlcpy(info->szTag, param->string, sizeof(info->szTag));
+ RT_STRSCPY(info->szTag, param->string, sizeof(info->szTag));
break;
default:
@@ -1529,5 +1529,5 @@
/* fc->source (the shared folder name) is set after vbsf_init_fs_ctx() */
- strlcpy(info->name, fc->source, sizeof(info->name));
+ RT_STRSCPY(info->name, fc->source, sizeof(info->name));
# if RTLNX_VER_MAX(5,3,0)

View File

@ -1,47 +0,0 @@
diff --git a/include/iprt/cpp/xml.h b/include/iprt/cpp/xml.h
index 40975e86..7639c281 100644
--- a/include/iprt/cpp/xml.h
+++ b/include/iprt/cpp/xml.h
@@ -113,9 +113,9 @@ public:
class RT_DECL_CLASS XmlError : public RuntimeError
{
public:
- XmlError(xmlErrorPtr aErr);
+ XmlError(const xmlError *aErr);
- static char* Format(xmlErrorPtr aErr);
+ static char* Format(const xmlError *aErr);
};
// Logical errors
diff --git a/src/VBox/Runtime/r3/xml.cpp b/src/VBox/Runtime/r3/xml.cpp
index a6661760..b301a6c6 100644
--- a/src/VBox/Runtime/r3/xml.cpp
+++ b/src/VBox/Runtime/r3/xml.cpp
@@ -131,7 +131,7 @@ LogicError::LogicError(RT_SRC_POS_DECL)
RTStrFree(msg);
}
-XmlError::XmlError(xmlErrorPtr aErr)
+XmlError::XmlError(const xmlError *aErr)
{
if (!aErr)
throw EInvalidArg(RT_SRC_POS);
@@ -145,7 +145,7 @@ XmlError::XmlError(xmlErrorPtr aErr)
* Composes a single message for the given error. The caller must free the
* returned string using RTStrFree() when no more necessary.
*/
-/* static */ char *XmlError::Format(xmlErrorPtr aErr)
+/* static */ char *XmlError::Format(const xmlError *aErr)
{
const char *msg = aErr->message ? aErr->message : "<none>";
size_t msgLen = strlen(msg);
@@ -1856,7 +1856,7 @@ static void xmlParserBaseGenericError(void *pCtx, const char *pszMsg, ...) RT_NO
va_end(args);
}
-static void xmlParserBaseStructuredError(void *pCtx, xmlErrorPtr error) RT_NOTHROW_DEF
+static void xmlParserBaseStructuredError(void *pCtx, const xmlError *error) RT_NOTHROW_DEF
{
NOREF(pCtx);
/* we expect that there is always a trailing NL */

View File

@ -19,11 +19,11 @@
stdenv.mkDerivation rec {
pname = "weston";
version = "13.0.1";
version = "13.0.2";
src = fetchurl {
url = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${version}/downloads/weston-${version}.tar.xz";
hash = "sha256-6hVmq09f/Ofp/U96H8pbMMquTVACO/RZITmUCU4Cspo=";
hash = "sha256-T+EUAfVe3Dp7Z1/RwJ8VmGAWL6p9PJegpNaCOzHu0Qw=";
};
postPatch = ''

View File

@ -5,6 +5,7 @@
, coreutils
, getopt
, modDirVersion ? ""
, forPlatform ? stdenv.buildPlatform
}:
substituteAll {
@ -17,8 +18,8 @@ substituteAll {
inherit coreutils getopt;
uSystem = if stdenv.buildPlatform.uname.system != null then stdenv.buildPlatform.uname.system else "unknown";
inherit (stdenv.buildPlatform.uname) processor;
uSystem = if forPlatform.uname.system != null then forPlatform.uname.system else "unknown";
inherit (forPlatform.uname) processor;
# uname -o
# maybe add to lib/systems/default.nix uname attrset
@ -26,9 +27,9 @@ substituteAll {
# https://stackoverflow.com/questions/61711186/where-does-host-operating-system-in-uname-c-comes-from
# https://github.com/coreutils/gnulib/blob/master/m4/host-os.m4
operatingSystem =
if stdenv.buildPlatform.isLinux
if forPlatform.isLinux
then "GNU/Linux"
else if stdenv.buildPlatform.isDarwin
else if forPlatform.isDarwin
then "Darwin" # darwin isn't in host-os.m4 so where does this come from?
else "unknown";
@ -42,11 +43,12 @@ substituteAll {
mainProgram = "uname";
longDescription = ''
This package provides a replacement for `uname` whose output depends only
on `stdenv.buildPlatform`. It is meant to be used from within derivations.
Many packages' build processes run `uname` at compile time and embed its
output into the result of the build. Since `uname` calls into the kernel,
and the Nix sandbox currently does not intercept these calls, builds made
on different kernels will produce different results.
on `stdenv.buildPlatform`, or a configurable `forPlatform`. It is meant
to be used from within derivations. Many packages' build processes run
`uname` at compile time and embed its output into the result of the build.
Since `uname` calls into the kernel, and the Nix sandbox currently does
not intercept these calls, builds made on different kernels will produce
different results.
'';
license = [ licenses.mit ];
maintainers = with maintainers; [ artturin ];

View File

@ -1,9 +1,10 @@
{ stdenv
, lib
, fetchFromSourcehut
, gitUpdater
, hare
, hareThirdParty
{
stdenv,
lib,
fetchFromSourcehut,
gitUpdater,
hareHook,
hareThirdParty,
}:
stdenv.mkDerivation (finalAttrs: {
@ -18,30 +19,18 @@ stdenv.mkDerivation (finalAttrs: {
};
nativeBuildInputs = [
hare
hareHook
hareThirdParty.hare-ev
hareThirdParty.hare-json
];
makeFlags = [
"PREFIX=${builtins.placeholder "out"}"
"HARECACHE=.harecache"
"HAREFLAGS=-qa${stdenv.hostPlatform.uname.processor}"
];
makeFlags = [ "PREFIX=${builtins.placeholder "out"}" ];
enableParallelBuilding = true;
doCheck = true;
postPatch = ''
substituteInPlace Makefile \
--replace 'hare build' 'hare build $(HAREFLAGS)' \
--replace 'hare test' 'hare test $(HAREFLAGS)'
'';
passthru.updateScript = gitUpdater {
rev-prefix = "v";
};
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
meta = with lib; {
description = "Finite State Machine structured as a tree";

View File

@ -1,23 +1,30 @@
{ lib, stdenv, fetchurl, fetchpatch, scons, pkg-config, SDL, libGL, zlib, smpeg
, SDL_image, libvorbis, expat, zip, lua }:
{
lib,
SDL,
SDL_image,
expat,
fetchpatch,
fetchurl,
libGL,
libvorbis,
lua,
pkg-config,
scons,
smpeg,
stdenv,
zip,
zlib,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "btanks";
version = "0.9.8083";
src = fetchurl {
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
url = "mirror://sourceforge/btanks/btanks-${finalAttrs.version}.tar.bz2";
hash = "sha256-P9LOaitF96YMOxFPqa/xPLPdn7tqZc3JeYt2xPosQ0E=";
};
nativeBuildInputs = [ scons pkg-config ];
buildInputs = [ SDL libGL zlib smpeg SDL_image libvorbis expat zip lua ];
enableParallelBuilding = true;
env.NIX_CFLAGS_COMPILE = "-I${SDL_image}/include/SDL";
patches = [
(fetchpatch {
name = "lua52.patch";
@ -42,10 +49,37 @@ stdenv.mkDerivation rec {
})
];
meta = with lib; {
description = "Fast 2d tank arcade game";
nativeBuildInputs = [
SDL
pkg-config
scons
smpeg
zip
];
buildInputs = [
SDL
SDL_image
expat
libGL
libvorbis
lua
smpeg
zlib
];
env.NIX_CFLAGS_COMPILE = "-I${lib.getDev SDL_image}/include/SDL";
enableParallelBuilding = true;
strictDeps = true;
meta = {
homepage = "https://sourceforge.net/projects/btanks/";
license = licenses.gpl2Plus;
platforms = platforms.linux;
description = "Fast 2d tank arcade game with multiplayer and split-screen modes";
license = lib.licenses.gpl2Plus;
mainProgram = "btanks";
maintainers = with lib.maintainers; [ AndersonTorres ];
inherit (SDL.meta) platforms;
};
}
})

View File

@ -0,0 +1,62 @@
{ lib
, desktop-file-utils
, fetchFromGitLab
, gobject-introspection
, gtk4
, gtksourceview5
, libadwaita
, libspelling
, meson
, ninja
, pkg-config
, python3
, stdenv
, wrapGAppsHook4
}:
stdenv.mkDerivation (finalAttrs: {
pname = "buffer";
version = "0.9.2";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "cheywood";
repo = "buffer";
rev = finalAttrs.version;
hash = "sha256-EIyaFL2AEez8FIErL8+x7QNHnCYxj4mOuz7E+Svvh5I=";
};
nativeBuildInputs = [
desktop-file-utils
gobject-introspection
meson
ninja
pkg-config
wrapGAppsHook4
];
buildInputs = [
gtk4
gtksourceview5
libadwaita
libspelling
(python3.withPackages (ps: with ps; [
pygobject3
]))
];
preFixup = ''
gappsWrapperArgs+=(
--prefix PYTHONPATH : "$out/${python3.sitePackages}"
)
'';
meta = with lib; {
description = "Minimal editing space for all those things that don't need keeping";
homepage = "https://gitlab.gnome.org/cheywood/buffer";
license = licenses.gpl3Plus;
mainProgram = "buffer";
maintainers = with maintainers; [ michaelgrahamevans ];
platforms = platforms.linux;
};
})

View File

@ -12,16 +12,16 @@
rustPlatform.buildRustPackage rec {
pname = "centerpiece";
version = "1.0.0";
version = "1.1.0";
src = fetchFromGitHub {
owner = "friedow";
repo = "centerpiece";
rev = "v${version}";
hash = "sha256-I630XrmyRAjVxFvISo2eIUP3YmivZovnV89Xsx5OduY=";
hash = "sha256-1sKUGTBS9aTCQPuhkwv9fZ8F3N6yn98927fpp1e4fBU=";
};
cargoHash = "sha256-yvvMe1zBUREqRzp/0zYsu7AoXS9Jqq67DY5uMParhEs=";
cargoHash = "sha256-b7gI6Z5fiOA/Q2BbsmmGrKHgMzbICKPeK2i6YjlLnDo=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [

View File

@ -13,10 +13,10 @@ let
}.${system} or throwSystem;
hash = {
x86_64-linux = "sha256-+fRxPZ/exESeHzTi3x6959fzpkuVEMqeqeiKjuaLP1k=";
aarch64-linux = "sha256-XYA7jL2cQPH8Tj1uE+8aSZq3V+4559ILaq+6gvikQ+M=";
x86_64-darwin = "sha256-WqWmQKicxgXJQXFgWl3ePzXUbsfJgmR1bbf2fYfD1l4=";
aarch64-darwin = "sha256-FCEZeZ8GI3bkUSe8LGkNhi5uP5TAJDqJv0dJBNl7BOY=";
x86_64-linux = "sha256-7GOWEvCco8/CxdWmvRsXfMOOSPsfb1/UQpbFEEeQfUc=";
aarch64-linux = "sha256-j+gILUP681hMo0azcbeZwi3Q9dwd9v6ADWow720cWAo=";
x86_64-darwin = "sha256-RNDDzAwf5s2EMTrum1OF6iZ/SUF7cG0Ow2itb0ynaJk=";
aarch64-darwin = "sha256-ac8j5BFEylAe7ApN3+iYW5ldFUh/7UYWf3MlDNOQTvc=";
}.${system} or throwSystem;
bin = "$out/bin/codeium_language_server";
@ -24,7 +24,7 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "codeium";
version = "1.8.51";
version = "1.8.57";
src = fetchurl {
name = "${finalAttrs.pname}-${finalAttrs.version}.gz";
url = "https://github.com/Exafunction/codeium/releases/download/language-server-v${finalAttrs.version}/language_server_${plat}.gz";

View File

@ -0,0 +1,46 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
protobuf,
darwin,
}:
let
inherit (darwin.apple_sdk.frameworks) CoreFoundation SystemConfiguration;
in
rustPlatform.buildRustPackage {
pname = "comet-gog";
version = "0-unstable-2024-05-25";
src = fetchFromGitHub {
owner = "imLinguin";
repo = "comet";
rev = "378ec2abdc2498e7c0c12aa50b71f6d94c3e8e3c";
hash = "sha256-r7ZPpJLy2fZsyNijl0+uYWQN941TCbv+Guv3wzD83IQ=";
fetchSubmodules = true;
};
cargoHash = "sha256-dXNAGMVayzgT96ETrph9eCbQv28EK/OOxIRV8ewpVvs=";
# error: linker `aarch64-linux-gnu-gcc` not found
postPatch = ''
rm .cargo/config.toml
'';
env.PROTOC = lib.getExe' protobuf "protoc";
buildInputs = lib.optionals stdenv.isDarwin [
CoreFoundation
SystemConfiguration
];
meta = {
description = "Open Source implementation of GOG Galaxy's Communication Service";
homepage = "https://github.com/imLinguin/comet";
license = lib.licenses.gpl3Plus;
mainProgram = "comet";
maintainers = with lib.maintainers; [ tomasajt ];
};
}

View File

@ -6,16 +6,16 @@
buildGoModule rec {
pname = "eksctl";
version = "0.179.0";
version = "0.181.0";
src = fetchFromGitHub {
owner = "weaveworks";
repo = pname;
rev = version;
hash = "sha256-WDiuk/fmoGsfbs2l3TBDIugU3HBo6V0W4MDcVYJfaxs=";
hash = "sha256-3VTMkWDahIMrOO05ZI0f/sbyZagwbVVD/fu9z4JRPZw=";
};
vendorHash = "sha256-M/OiHXsvPAaYVNw7Q9LiDbH7B7QhBQxmK0H8TNWcu74=";
vendorHash = "sha256-eaEAC1jDmApcyn0RC5pvonYVWblRCB2PFTr/K5rZvtU=";
doCheck = false;

View File

@ -17,16 +17,16 @@
rustPlatform.buildRustPackage rec {
pname = "eza";
version = "0.18.16";
version = "0.18.17";
src = fetchFromGitHub {
owner = "eza-community";
repo = "eza";
rev = "v${version}";
hash = "sha256-VaQLPQseLgxzDMnlMsfh5XGhjNYIBrMDBm2JsY2Gou4=";
hash = "sha256-ig1sLcWEwzF8PnqDoeC103kC6l6SINtZQdJcLiTe5fw=";
};
cargoHash = "sha256-zxIGYNdgAJQHng1jfaJPwAlbflJi0W5osAf5F2Is0ws=";
cargoHash = "sha256-C1xaSdM3mtIk8moOP8drDpdFDs9pYk+ChyI5il5RaqE=";
nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
buildInputs = [ zlib ]

View File

@ -27,7 +27,7 @@ let
pieBuild = stdenv.hostPlatform.isMusl;
in buildGoModule rec {
pname = "frankenphp";
version = "1.1.5";
version = "1.2.0";
src = fetchFromGitHub {
owner = "dunglas";
@ -54,7 +54,7 @@ in buildGoModule rec {
"-s"
"-w"
"-X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${version} PHP ${phpUnwrapped.version} Caddy'"
# pie mode is only available with pkgsMusl, it also automaticaly add -buildmode=pie to $GOFLAGS
# pie mode is only available with pkgsMusl, it also automatically add -buildmode=pie to $GOFLAGS
] ++ (lib.optional pieBuild [ "-static-pie" ]);
preBuild = ''
@ -96,13 +96,13 @@ in buildGoModule rec {
};
};
meta = with lib; {
meta = {
changelog = "https://github.com/dunglas/frankenphp/releases/tag/v${version}";
description = "The modern PHP app server";
homepage = "https://github.com/dunglas/frankenphp";
license = licenses.mit;
license = lib.licenses.mit;
mainProgram = "frankenphp";
maintainers = with maintainers; [ gaelreyrol shyim ];
platforms = platforms.linux ++ platforms.darwin;
maintainers = with lib.maintainers; [ gaelreyrol shyim ];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
}

View File

@ -0,0 +1,44 @@
{ lib, maven, fetchFromGitHub, makeWrapper, jre }:
maven.buildMavenPackage rec {
pname = "gol";
version = "0.2.0";
src = fetchFromGitHub {
owner = "clarisma";
repo = "gol-tool";
rev = version;
hash = "sha256-F/tMRD+nWn/fRPX7cTan371zlOTxh7oR98wREmokULo=";
};
mvnHash = "sha256-b0nkp23gv4kejac/xrvm3xWo3Z8if7zveNUHBg7ZBm4=";
mvnParameters = "compile assembly:single -Dmaven.test.skip=true";
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,lib}
cp /build/source/target/gol-tool-${version}-jar-with-dependencies.jar $out/lib/gol-tool.jar
makeWrapper ${jre}/bin/java $out/bin/gol \
--add-flags "-cp $out/lib/gol-tool.jar" \
--add-flags "com.geodesk.gol.GolTool"
runHook postInstall
'';
meta = with lib; {
description = "Command-line utility for creating and managing Geographic Object Libraries";
longDescription = ''
Use the GOL command-line utility to:
- build and maintain Geographic Object Libraries (GeoDesk's compact database format for OpenStreetMap features)
- perform GOQL queries and export the results in a variety of formats.
'';
homepage = "https://docs.geodesk.com/gol";
license = licenses.agpl3Only;
maintainers = [ maintainers.starsep ];
platforms = platforms.all;
};
}

View File

@ -4,7 +4,7 @@
fetchurl,
autoPatchelfHook,
dpkg,
makeBinaryWrapper,
makeShellWrapper,
wrapGAppsHook3,
alsa-lib,
at-spi2-atk,
@ -60,7 +60,7 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [
autoPatchelfHook
dpkg
makeBinaryWrapper
makeShellWrapper
wrapGAppsHook3
];
@ -120,8 +120,9 @@ stdenv.mkDerivation (finalAttrs: {
cp -R "usr/share" "$out/share"
chmod -R g-w "$out"
# Wrap the startup command
makeBinaryWrapper $out/opt/GoofCord/goofcord $out/bin/goofcord \
# use makeShellWrapper (instead of the makeBinaryWrapper provided by wrapGAppsHook3) for proper shell variable expansion
# see https://github.com/NixOS/nixpkgs/issues/172583
makeShellWrapper $out/opt/GoofCord/goofcord $out/bin/goofcord \
"''${gappsWrapperArgs[@]}" \
--prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations,WebRTCPipeWireCapturer}}" \

View File

@ -1,60 +1,60 @@
{ lib
, stdenv
, fetchurl
, guile
, lzip
, pkg-config
, SDL
, SDL_image
, SDL_mixer
, SDL_ttf
, buildEnv
{
lib,
SDL,
SDL_image,
SDL_mixer,
SDL_ttf,
buildEnv,
fetchurl,
guile,
lzip,
pkg-config,
stdenv,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "guile-sdl";
version = "0.6.1";
src = fetchurl {
url = "mirror://gnu/${pname}/${pname}-${version}.tar.lz";
url = "mirror://gnu/guile-sdl/guile-sdl-${finalAttrs.version}.tar.lz";
hash = "sha256-/9sTTvntkRXck3FoRalROjqUQC8hkePtLTnHNZotKOE=";
};
strictDeps = true;
nativeBuildInputs = [
SDL
guile
lzip
pkg-config
SDL
];
buildInputs = [
guile
(lib.getDev SDL)
SDL_image
SDL_mixer
SDL_ttf
(lib.getDev SDL_image)
(lib.getDev SDL_mixer)
(lib.getDev SDL_ttf)
guile
];
makeFlags =
let
sdl-env = buildEnv {
name = "sdl-env";
paths = buildInputs;
paths = finalAttrs.buildInputs;
};
in
[
"SDLMINUSI=-I${sdl-env}/include/SDL"
];
meta = with lib; {
strictDeps = true;
meta = {
homepage = "https://www.gnu.org/software/guile-sdl/";
description = "Guile bindings for SDL";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ vyp ];
platforms = guile.meta.platforms;
# configure: error: *** SDL version not found!
broken = stdenv.isDarwin;
license = lib.licenses.gpl3Plus;
maintainers = lib.teams.sdl.members
++ (with lib.maintainers; [ ]);
inherit (guile.meta) platforms;
};
}
})

View File

@ -0,0 +1,56 @@
{
hare,
lib,
makeSetupHook,
makeWrapper,
runCommand,
stdenv,
writeShellApplication,
}:
let
arch = stdenv.targetPlatform.uname.processor;
harePropagationInputs = builtins.attrValues { inherit (hare) harec qbe; };
hareWrappedScript = writeShellApplication {
# `name` MUST be `hare`, since its role is to replace the hare binary.
name = "hare";
runtimeInputs = [ hare ];
excludeShellChecks = [ "SC2086" ];
# ''${cmd:+"$cmd"} is used on the default case to keep the same behavior as
# the hare binary: If "$cmd" is passed directly and it's empty, the hare
# binary will treat it as an unrecognized command.
text = ''
readonly cmd="$1"
shift
case "$cmd" in
"test"|"run"|"build") exec hare "$cmd" $NIX_HAREFLAGS "$@" ;;
*) exec hare ''${cmd:+"$cmd"} "$@"
esac
'';
};
hareWrapper = runCommand "hare-wrapper" { nativeBuildInputs = [ makeWrapper ]; } ''
mkdir -p $out/bin
install ${lib.getExe hareWrappedScript} $out/bin/hare
makeWrapper ${lib.getExe hare} $out/bin/hare-native \
--inherit-argv0 \
--unset AR \
--unset LD \
--unset CC
'';
in
makeSetupHook {
name = "hare-hook";
# The propagation of `qbe` and `harec` (harePropagationInputs) is needed for
# build frameworks like `haredo`, which set the HAREC and QBE env vars to
# `harec` and `qbe` respectively. We use the derivations from the `hare`
# package to assure that there's no different behavior between the `hareHook`
# and `hare` packages.
propagatedBuildInputs = [ hareWrapper ] ++ harePropagationInputs;
substitutions = {
hare_unconditional_flags = "-q -a${arch}";
hare_stdlib = "${hare}/src/hare/stdlib";
};
meta = {
description = "A setup hook for the Hare compiler";
inherit (hare.meta) badPlatforms platforms;
};
} ./setup-hook.sh

View File

@ -3,7 +3,6 @@
stdenv,
fetchFromSourcehut,
harec,
qbe,
gitUpdater,
scdoc,
tzdata,
@ -33,6 +32,7 @@ assert
'';
let
inherit (harec) qbe;
buildArch = stdenv.buildPlatform.uname.processor;
arch = stdenv.hostPlatform.uname.processor;
platform = lib.toLower stdenv.hostPlatform.uname.system;
@ -130,13 +130,6 @@ stdenv.mkDerivation (finalAttrs: {
scdoc
];
# Needed for build frameworks like `haredo`, which set the HAREC and QBE env vars to `harec` and
# `qbe` respectively.
propagatedBuildInputs = [
harec
qbe
];
buildInputs = [
harec
qbe
@ -171,8 +164,6 @@ stdenv.mkDerivation (finalAttrs: {
ln -s configs/${platform}.mk config.mk
'';
setupHook = ./setup-hook.sh;
passthru = {
updateScript = gitUpdater { };
tests =
@ -182,6 +173,8 @@ stdenv.mkDerivation (finalAttrs: {
// lib.optionalAttrs (stdenv.buildPlatform.canExecute stdenv.hostPlatform) {
mimeModule = callPackage ./mime-module-test.nix { hare = finalAttrs.finalPackage; };
};
# To be propagated by `hareHook`.
inherit harec qbe;
};
meta = {

View File

@ -1,9 +1,36 @@
addHarepath () {
for haredir in third-party stdlib; do
if [[ -d "$1/src/hare/$haredir" ]]; then
addToSearchPath HAREPATH "$1/src/hare/$haredir"
fi
done
# shellcheck disable=SC2154,SC2034,SC2016
addHarepath() {
local -r thirdparty="${1-}/src/hare/third-party"
if [[ -d "$thirdparty" ]]; then
addToSearchPath HAREPATH "$thirdparty"
fi
}
# Hare's stdlib should come after its third party libs, since the latter may
# expand or shadow the former.
readonly hareSetStdlibPhase='
addToSearchPath HAREPATH "@hare_stdlib@"
'
readonly hareInfoPhase='
echoCmd "HARECACHE" "$HARECACHE"
echoCmd "HAREPATH" "$HAREPATH"
echoCmd "hare" "$(command -v hare)"
echoCmd "hare-native" "$(command -v hare-native)"
'
prePhases+=("hareSetStdlibPhase" "hareInfoPhase")
readonly hare_unconditional_flags="@hare_unconditional_flags@"
case "${hareBuildType:-"release"}" in
"release") export NIX_HAREFLAGS="-R $hare_unconditional_flags" ;;
"debug") export NIX_HAREFLAGS="$hare_unconditional_flags" ;;
*)
printf -- 'Invalid hareBuildType: "%s"\n' "${hareBuildType-}"
exit 1
;;
esac
HARECACHE="$(mktemp -d)"
export HARECACHE
addEnvHooks "$hostOffset" addHarepath

View File

@ -1,17 +1,20 @@
{ lib
, stdenv
, fetchFromSourcehut
, qbe
, gitUpdater
{
fetchFromSourcehut,
gitUpdater,
lib,
qbe,
stdenv,
}:
let
platform = lib.toLower stdenv.hostPlatform.uname.system;
arch = stdenv.hostPlatform.uname.processor;
qbePlatform = {
x86_64 = "amd64_sysv";
aarch64 = "arm64";
riscv64 = "rv64";
}.${arch};
qbePlatform =
{
x86_64 = "amd64_sysv";
aarch64 = "arm64";
riscv64 = "rv64";
}
.${arch};
in
stdenv.mkDerivation (finalAttrs: {
pname = "harec";
@ -24,13 +27,9 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-NOfoCT/wKZ3CXYzXZq7plXcun+MXQicfzBOmetXN7Qs=";
};
nativeBuildInputs = [
qbe
];
nativeBuildInputs = [ qbe ];
buildInputs = [
qbe
];
buildInputs = [ qbe ];
makeFlags = [
"PREFIX=${builtins.placeholder "out"}"
@ -54,6 +53,8 @@ stdenv.mkDerivation (finalAttrs: {
passthru = {
updateScript = gitUpdater { };
# To be kept in sync with the hare package.
inherit qbe;
};
meta = {
@ -65,7 +66,8 @@ stdenv.mkDerivation (finalAttrs: {
# The upstream developers do not like proprietary operating systems; see
# https://harelang.org/platforms/
# UPDATE: https://github.com/hshq/harelang provides a MacOS port
platforms = with lib.platforms;
platforms =
with lib.platforms;
lib.intersectLists (freebsd ++ openbsd ++ linux) (aarch64 ++ x86_64 ++ riscv64);
badPlatforms = lib.platforms.darwin;
};

View File

@ -2,16 +2,13 @@
stdenv,
lib,
fetchFromSourcehut,
hare,
hareHook,
scdoc,
nix-update-script,
makeWrapper,
bash,
substituteAll,
}:
let
arch = stdenv.hostPlatform.uname.processor;
in
stdenv.mkDerivation (finalAttrs: {
pname = "haredo";
version = "1.0.5";
@ -37,27 +34,23 @@ stdenv.mkDerivation (finalAttrs: {
];
nativeBuildInputs = [
hare
hareHook
makeWrapper
scdoc
];
enableParallelChecking = true;
env.PREFIX = builtins.placeholder "out";
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
dontConfigure = true;
preBuild = ''
HARECACHE="$(mktemp -d)"
export HARECACHE
export PREFIX=${builtins.placeholder "out"}
'';
buildPhase = ''
runHook preBuild
hare build -o bin/haredo -qRa${arch} ./src
hare build -o bin/haredo ./src
scdoc <doc/haredo.1.scd >doc/haredo.1
runHook postBuild
@ -92,6 +85,6 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.wtfpl;
maintainers = with lib.maintainers; [ onemoresuza ];
mainProgram = "haredo";
inherit (hare.meta) platforms badPlatforms;
inherit (hareHook.meta) platforms badPlatforms;
};
})

View File

@ -1,33 +1,31 @@
{ lib
, stdenv
, scdoc
, hare
{
lib,
stdenv,
scdoc,
hare,
hareHook,
}:
let
arch = stdenv.hostPlatform.uname.processor;
in
stdenv.mkDerivation {
pname = "haredoc";
outputs = [ "out" "man" ];
outputs = [
"out"
"man"
];
inherit (hare) version src;
strictDeps = true;
enableParallelBuilding = true;
nativeBuildInputs = [
scdoc
hare
hareHook
];
preBuild = ''
HARECACHE="$(mktemp -d)"
export HARECACHE
'';
strictDeps = true;
enableParallelBuilding = true;
buildPhase = ''
runHook preBuild
hare build -qR -a ${arch} -o haredoc ./cmd/haredoc
hare build -o haredoc ./cmd/haredoc
scdoc <docs/haredoc.1.scd >haredoc.1
scdoc <docs/haredoc.5.scd >haredoc.5
@ -50,6 +48,6 @@ stdenv.mkDerivation {
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ onemoresuza ];
mainProgram = "haredoc";
inherit (hare.meta) platforms badPlatforms;
inherit (hareHook.meta) platforms badPlatforms;
};
}

View File

@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
cargo,
rustc,
meson,
ninja,
pkg-config,
appstream,
blueprint-compiler,
desktop-file-utils,
gettext,
wrapGAppsHook4,
libadwaita,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "keypunch";
version = "1.0";
src = fetchFromGitHub {
owner = "bragefuglseth";
repo = "keypunch";
rev = "refs/tags/v${finalAttrs.version}";
hash = "sha256-S4RckHwrVVQrxy9QngTisNM4+cMM+1dXucwEDnM98Rg=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
name = "${finalAttrs.pname}-${finalAttrs.version}";
inherit (finalAttrs) src;
hash = "sha256-YzENAGy7zEu1dyuhme+x+gJQlE74Vw0JZvRso0vNQXs=";
};
strictDeps = true;
nativeBuildInputs = [
rustPlatform.cargoSetupHook
cargo
rustc
meson
ninja
pkg-config
appstream
blueprint-compiler
desktop-file-utils
gettext
wrapGAppsHook4
];
buildInputs = [ libadwaita ];
meta = {
description = "Practice your typing skills";
homepage = "https://github.com/bragefuglseth/keypunch";
license = lib.licenses.gpl3Plus;
mainProgram = "keypunch";
maintainers = with lib.maintainers; [ tomasajt ];
};
})

View File

@ -2,7 +2,6 @@
, fetchFromGitHub
, copyDesktopItems
, stdenv
, stdenvNoCC
, rustc
, rustPlatform
, cargo
@ -12,20 +11,18 @@
, webkitgtk
, pkg-config
, makeDesktopItem
, jq
, moreutils
, nodePackages
, cacert
, pnpm
, nodejs
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "kiwitalk";
version = "0.5.1";
src = fetchFromGitHub {
owner = "KiwiTalk";
repo = "KiwiTalk";
rev = "v${version}";
rev = "v${finalAttrs.version}";
hash = "sha256-Th8q+Zbc102fIk2v7O3OOeSriUV/ydz60QwxzmS7AY8=";
};
@ -34,43 +31,9 @@ stdenv.mkDerivation rec {
--replace "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
'';
pnpm-deps = stdenvNoCC.mkDerivation {
pname = "${pname}-pnpm-deps";
inherit src version;
nativeBuildInputs = [
jq
moreutils
nodePackages.pnpm
cacert
];
installPhase = ''
export HOME=$(mktemp -d)
pnpm config set store-dir $out
# This version of the package has different versions of esbuild as a dependency.
# You can use the command below to get esbuild binaries for a specific platform and calculate hashes for that platforms. (linux, darwin for os, and x86, arm64, ia32 for cpu)
# cat package.json | jq '.pnpm.supportedArchitectures += { "os": ["linux"], "cpu": ["arm64"] }' | sponge package.json
pnpm install --frozen-lockfile --ignore-script
# Remove timestamp and sort the json files.
rm -rf $out/v3/tmp
for f in $(find $out -name "*.json"); do
sed -i -E -e 's/"checkedAt":[0-9]+,//g' $f
jq --sort-keys . $f | sponge $f
done
'';
dontBuild = true;
dontFixup = true;
outputHashMode = "recursive";
outputHash = {
x86_64-linux = "sha256-LJPjWNpVfdUu8F5BMhAzpTo/h6ax7lxY2EESHj5P390=";
aarch64-linux = "sha256-N1K4pV5rbWmO/KonvYegzBoWa6TYQIqhQyxH/sWjOJQ=";
i686-linux = "sha256-/Q7VZahYhLdKVFB25CanROYxD2etQOcRg+4bXZUMqTc=";
x86_64-darwin = "sha256-9biFAbFD7Bva7KPKztgCvcaoX8E6AlJBKkjlDQdP6Zw=";
aarch64-darwin = "sha256-to5Y0R9tm9b7jUQAK3eBylLhpu+w5oDd63FbBCBAvd8=";
}.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
hash = "sha256-gf3vmKUta8KksUOxyhQS4UO6ycAJDfEicyXVGMW8+4c=";
};
cargoDeps = rustPlatform.importCargoLock {
@ -86,7 +49,8 @@ stdenv.mkDerivation rec {
cargo
rustc
cargo-tauri
nodePackages.pnpm
nodejs
pnpm.configHook
copyDesktopItems
pkg-config
];
@ -98,10 +62,6 @@ stdenv.mkDerivation rec {
];
preBuild = ''
export HOME=$(mktemp -d)
pnpm config set store-dir ${pnpm-deps}
pnpm install --offline --frozen-lockfile --ignore-script
pnpm rebuild
cargo tauri build -b deb
'';
@ -131,4 +91,4 @@ stdenv.mkDerivation rec {
platforms = platforms.linux ++ platforms.darwin;
mainProgram = "kiwi-talk";
};
}
})

View File

@ -1,5 +1,6 @@
{ lib
, stdenv
, buildPackages
, fetchFromGitHub
, autoreconfHook
, pkg-config
@ -12,19 +13,19 @@
, withUsb ? stdenv.isLinux, libusb1
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "knxd";
version = "0.14.61";
src = fetchFromGitHub {
owner = "knxd";
repo = "knxd";
rev = version;
rev = finalAttrs.version;
hash = "sha256-b8svjGaxW8YqonhXewebDUitezKoMcZxcUFGd2EKZQ4=";
};
postPatch = ''
sed -i '2i echo ${version}; exit' tools/version.sh
sed -i '2i echo ${finalAttrs.version}; exit' tools/version.sh
sed -i '2i exit' tools/get_libfmt
'';
@ -35,8 +36,12 @@ stdenv.mkDerivation rec {
++ lib.optional withUsb libusb1
++ lib.optional stdenv.isDarwin argp-standalone;
configureFlags = lib.optional (!withSystemd) "--disable-systemd"
++ lib.optional (!withUsb) "--disable-usb";
configureFlags = [
(lib.enableFeature withSystemd "systemd")
(lib.enableFeature withUsb "usb")
];
depsBuildBuild = [ buildPackages.stdenv.cc ];
installFlags = lib.optionals withSystemd [
"systemdsystemunitdir=$(out)/lib/systemd/system"
@ -50,5 +55,4 @@ stdenv.mkDerivation rec {
maintainers = with maintainers; [ sikmir ];
platforms = platforms.unix;
};
}
})

View File

@ -0,0 +1,38 @@
{ lib
, fetchPypi
, python3Packages
, latexminted
, testers
}:
python3Packages.buildPythonApplication rec {
pname = "latexminted";
version = "0.1.0b2";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-Yl/2zvNMYuYkwR5tDZ0vhBLO964GBUx1DeyLK/Q3T5c=";
};
build-system = with python3Packages; [
setuptools
];
dependencies = with python3Packages; [
pygments
latex2pydata
];
passthru = {
tests.version = testers.testVersion { package = latexminted; };
};
meta = {
description = "Python executable for LaTeX minted package";
homepage = "https://pypi.org/project/latexminted";
license = lib.licenses.lppl13c;
mainProgram = "latexminted";
maintainers = with lib.maintainers; [ romildo ];
};
}

View File

@ -71,13 +71,13 @@ let
in
effectiveStdenv.mkDerivation (finalAttrs: {
pname = "llama-cpp";
version = "3070";
version = "3089";
src = fetchFromGitHub {
owner = "ggerganov";
repo = "llama.cpp";
rev = "refs/tags/b${finalAttrs.version}";
hash = "sha256-3PJ3YBFMSv2bFHkcDpOAZ/ZbuKEGjyfeLI7oavDbfBc=";
hash = "sha256-bI1qSO0f+Uf7svcxAKt1g8fEXjJlMcJWO6zhMkjDGPA=";
leaveDotGit = true;
postFetch = ''
git -C "$out" rev-parse --short HEAD > $out/COMMIT

View File

@ -10,13 +10,13 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "marwaita-x";
version = "1.1";
version = "1.2";
src = fetchFromGitHub {
owner = "darkomarko42";
repo = "marwaita-x";
rev = finalAttrs.version;
sha256 = "sha256-BygdRRS+d8iP6f2NQ0RmZh14/goP9NoNzg6tpcpOz8c=";
sha256 = "sha256-HQsIF9CNFROaxl5hnmat2VWEXFT8gW4UWSi/A1dFi6Y=";
};
buildInputs = [

View File

@ -0,0 +1,36 @@
{ stdenv
, lib
, fetchFromGitHub
, nix-update-script
}:
stdenv.mkDerivation rec {
pname = "massdns";
version = "1.1.0";
src = fetchFromGitHub {
owner = "blechschmidt";
repo = "massdns";
rev = "v${version}";
hash = "sha256-hrnAg5ErPt93RV4zobRGVtcKt4aM2tC52r08T7+vRGc=";
};
makeFlags = [
"PREFIX=$(out)"
"PROJECT_FLAGS=-DMASSDNS_REVISION='\"v${version}\"'"
];
buildFlags = if stdenv.isLinux then "all" else "nolinux";
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Resolve large amounts of domain names";
homepage = "https://github.com/blechschmidt/massdns";
changelog = "https://github.com/blechschmidt/massdns/releases/tag/v${version}";
license = licenses.gpl3Only;
maintainers = with maintainers; [ geoffreyfrogeye ];
mainProgram = "massdns";
platforms = platforms.all;
# error: use of undeclared identifier 'MSG_NOSIGNAL'
badPlatforms = platforms.darwin;
};
}

View File

@ -9,16 +9,16 @@
}:
rustPlatform.buildRustPackage rec {
pname = "mini-calc";
version = "3.1.0";
version = "3.2.0";
src = fetchFromGitHub {
owner = "coco33920";
repo = "calc";
rev = version;
hash = "sha256-wROeUi1j5oEUpr7nRge6bRUO0E8W2E34M7DeyK0xmjM=";
hash = "sha256-f2xmc6wzZ5MwwBDYQNoxbFmIclZWd/xOOI4/MCmrnEI=";
};
cargoHash = "sha256-QPkaSJNoxnheECwcK129+PNeRm6+DFOw1wmwBev6oXc=";
cargoHash = "sha256-OiAU94URgOHZ/iNbCF5rE55zfZNkW3bdjPZo05kpIRo=";
nativeBuildInputs = [ makeWrapper ];
postFixup = ''

View File

@ -9,16 +9,16 @@
buildGoModule rec {
pname = "myks";
version = "4.1.2";
version = "4.1.3";
src = fetchFromGitHub {
owner = "mykso";
repo = "myks";
rev = "refs/tags/v${version}";
hash = "sha256-ZRbirNhTEGqr6OCE0K873NJ5vI2Phe5z9XJGZUALISo=";
hash = "sha256-keXtMO5EhCaG5lNoCf5vmnhidH4+sDQ2na4f76jELnw=";
};
vendorHash = "sha256-u9dNmgFMn6OMkKgTwNSqizUHJwvRk+S1xKZDozWjbps=";
vendorHash = "sha256-0Xk7B0rfngld9tfgMmq2EiuUym7LE89TvJVSdDo4HD4=";
subPackages = ".";

View File

@ -5,13 +5,13 @@
buildGoModule rec {
pname = "namespace-cli";
version = "0.0.373";
version = "0.0.374";
src = fetchFromGitHub {
owner = "namespacelabs";
repo = "foundation";
rev = "v${version}";
hash = "sha256-EkwR0s9mj5JUCmGDZZXX+UcL9f/TFoWPEH5L0DsMgNs=";
hash = "sha256-ZHvFp27yobFGqitsyKYHaxUMdpngFkufyeiNK4foioI=";
};
vendorHash = "sha256-72cHswoTZszo42NOrPNuokDlqoJ3/YEhGe+rQSKvgAw=";

View File

@ -0,0 +1,11 @@
# This file was generated by swiftpm2nix.
{
workspaceStateFile = ./workspace-state.json;
hashes = {
"swift-common" = "1zqdiwz934kpdlig22ikvmklhb720hv3i70wnznhhxfg2v4c115j";
"swift-concurrency" = "06x9fc8gwyvg5ymf889rfqs3jp89l1pbpm3m9553nq75vwcia6d3";
"swift-syntax" = "0sc29acwxv6rl3i8nwfazk0p0cm41figxls8n4aks84vww7m2in1";
"swift-system" = "0402hkx2q2dv27gccnn8ma79ngvwiwzkhcv4zlcdldmy6cgi0px7";
"swift-tools-support-core" = "0lbc3naj9hrbaa7ifxsvcs4mjigmiv61npzsphbpb6axx8s065mn";
};
}

View File

@ -0,0 +1,93 @@
{
"object": {
"artifacts": [],
"dependencies": [
{
"basedOn": null,
"packageRef": {
"identity": "swift-common",
"kind": "remoteSourceControl",
"location": "https://github.com/uber/swift-common.git",
"name": "Swift-Common"
},
"state": {
"checkoutState": {
"revision": "32c4757e0702686df12c32e06b9bbf815ec4e641",
"version": "0.5.0"
},
"name": "sourceControlCheckout"
},
"subpath": "swift-common"
},
{
"basedOn": null,
"packageRef": {
"identity": "swift-concurrency",
"kind": "remoteSourceControl",
"location": "https://github.com/uber/swift-concurrency.git",
"name": "Concurrency"
},
"state": {
"checkoutState": {
"revision": "e29e42c41c47c82ec32d3a2b2695719c32415ca9",
"version": "0.7.1"
},
"name": "sourceControlCheckout"
},
"subpath": "swift-concurrency"
},
{
"basedOn": null,
"packageRef": {
"identity": "swift-syntax",
"kind": "remoteSourceControl",
"location": "https://github.com/apple/swift-syntax.git",
"name": "SwiftSyntax"
},
"state": {
"checkoutState": {
"branch": "0e85cf7",
"revision": "0e85cf739b10103190a2d7e6de0c0532a0514981"
},
"name": "sourceControlCheckout"
},
"subpath": "swift-syntax"
},
{
"basedOn": null,
"packageRef": {
"identity": "swift-system",
"kind": "remoteSourceControl",
"location": "https://github.com/apple/swift-system.git",
"name": "swift-system"
},
"state": {
"checkoutState": {
"revision": "836bc4557b74fe6d2660218d56e3ce96aff76574",
"version": "1.1.1"
},
"name": "sourceControlCheckout"
},
"subpath": "swift-system"
},
{
"basedOn": null,
"packageRef": {
"identity": "swift-tools-support-core",
"kind": "remoteSourceControl",
"location": "https://github.com/apple/swift-tools-support-core",
"name": "swift-tools-support-core"
},
"state": {
"checkoutState": {
"revision": "4f07be3dc201f6e2ee85b6942d0c220a16926811",
"version": "0.2.7"
},
"name": "sourceControlCheckout"
},
"subpath": "swift-tools-support-core"
}
]
},
"version": 6
}

View File

@ -0,0 +1,49 @@
{
stdenv,
lib,
fetchFromGitHub,
swift,
swiftpm,
swiftpm2nix,
sqlite,
}:
let
generated = swiftpm2nix.helpers ./nix;
in
stdenv.mkDerivation rec {
pname = "needle";
version = "0.24.0";
src = fetchFromGitHub {
owner = "uber";
repo = "needle";
rev = "v${version}";
hash = "sha256-vQlUcfIj+LHZ3R+XwSr9bBIjcZUWkW2k/wI6HF+sDPo=";
};
sourceRoot = "${src.name}/Generator";
nativeBuildInputs = [
swift
swiftpm
];
propagatedBuildInputs = [ sqlite ];
configurePhase = generated.configure;
installPhase = ''
runHook preInstall
install -Dm755 "$(swiftpmBinPath)"/needle $out/bin/needle
runHook postInstall
'';
meta = with lib; {
description = "Compile-time safe Swift dependency injection framework";
homepage = "https://github.com/uber/needle";
license = licenses.asl20;
mainProgram = "needle";
maintainers = with maintainers; [ matteopacini ];
platforms = platforms.darwin;
};
}

676
pkgs/by-name/ne/nexusmods-app/deps.nix generated Normal file
View File

@ -0,0 +1,676 @@
# This file was automatically generated by passthru.fetch-deps.
# Please dont edit it manually, your changes might get overwritten!
{ fetchNuGet }: [
(fetchNuGet { pname = "Argon"; version = "0.11.0"; sha256 = "0pn7b48qilhfy5hmk4dnsn6x7m3vl4168qha3chibj8hkwq5lkkc"; })
(fetchNuGet { pname = "Argon"; version = "0.17.0"; sha256 = "027fng81s6fj9hsl1pc4frrb2mkchbmmh9848ksdxixb05j5dclf"; })
(fetchNuGet { pname = "AutoFixture"; version = "4.18.1"; sha256 = "0whinrvkr2xbhkwd02jbcnws3wz7vlc25hk6w0iw4g92hrmgxqxd"; })
(fetchNuGet { pname = "AutoFixture.Xunit2"; version = "4.18.1"; sha256 = "1xs5dbj410h29spdl5c07vrxqkdl3rcyl2fv4jv4g7vq3kanc5p6"; })
(fetchNuGet { pname = "Avalonia"; version = "11.0.0"; sha256 = "0wfbwrr8p5hg9f809d44gh2zfkfwnwayfw84vs33hh7ms0r380gd"; })
(fetchNuGet { pname = "Avalonia"; version = "11.0.10"; sha256 = "0mvsc6fg8qbvdqkdkia61jkprb3yhvvgvq6s8hgd09v6lzjsbq8n"; })
(fetchNuGet { pname = "Avalonia.Angle.Windows.Natives"; version = "2.1.0.2023020321"; sha256 = "1az4s1g22ipak9a3xfh55z2h3rm6lpqh7svbpw6ag4ysrgsjjsjd"; })
(fetchNuGet { pname = "Avalonia.BuildServices"; version = "0.0.28"; sha256 = "0d9hyc1zmyvzlb320arwrv12ncp45llq98hibv711b7ibm11dm7c"; })
(fetchNuGet { pname = "Avalonia.BuildServices"; version = "0.0.29"; sha256 = "05mm7f0jssih3gbzqfgjnfq5cnqa85ihsg0z1897ciihv8qd3waq"; })
(fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.10"; sha256 = "0s2wn7sf0dsa861gh6ghfgf881p6bvyahfpl583rcnsi6ci2hjhv"; })
(fetchNuGet { pname = "Avalonia.Controls.DataGrid"; version = "11.0.10"; sha256 = "13g5sac0ba8dy1pn21j2g4fin57x1vs1pl07gzgv53bl8nz1xznj"; })
(fetchNuGet { pname = "Avalonia.Controls.TreeDataGrid"; version = "11.0.2"; sha256 = "1b8hymad7rhr6zrj493i1hwlib5cg24dsj8k4v5lxpkc94lnhz0g"; })
(fetchNuGet { pname = "Avalonia.Desktop"; version = "11.0.10"; sha256 = "0s27ajknbrymnchv66rybrs3snzh825iy0nqby72yk726znp52vw"; })
(fetchNuGet { pname = "Avalonia.Diagnostics"; version = "11.0.10"; sha256 = "1c7hv9ypvn1ncg6cmzn2cs0nkax0y0pnbx1h1asjzn8rnbwcvnca"; })
(fetchNuGet { pname = "Avalonia.FreeDesktop"; version = "11.0.10"; sha256 = "18f9vpsxfaak4qpqvcz9rdygx3k8dhzb64iqlhva88nhahwlwlxr"; })
(fetchNuGet { pname = "Avalonia.Headless"; version = "11.0.10"; sha256 = "0pr6l2cagg7xbxs9lnvk9jwbvmhf6c8crsxf2cp7x391h5jg9xjs"; })
(fetchNuGet { pname = "Avalonia.Native"; version = "11.0.10"; sha256 = "06pihfddbvdw1s3rs6v183ljch1bsxym80fclfqrh3npa3ag9n1z"; })
(fetchNuGet { pname = "Avalonia.ReactiveUI"; version = "11.0.10"; sha256 = "1qarrbbmdglw1034pl2ga3b10n6kav67g9n8hf4jcr3y6nkdybmk"; })
(fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.0"; sha256 = "1b5031k8slwiz7bncih67fjl6ny234yd4skqxk611l9zp5snjic2"; })
(fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.10"; sha256 = "0p75z6k4ivzhdn9y9gwqsqmja7x03d4mxaicbccjbnz06irybnxa"; })
(fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.0"; sha256 = "1ra1kd0kkblppr5zy7rzdbwllggrzvp9lkxblf9mg3y8rnp6fk83"; })
(fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.10"; sha256 = "0w45j4ypqnwmsh3byzaghn43ycfkfnn8415i5lw2q5ip7vp3a9fm"; })
(fetchNuGet { pname = "Avalonia.Svg.Skia"; version = "11.0.0.14"; sha256 = "0b95h42kflbjlfw0ky58cxd0745wf7ad9phfgdyn3w7x3bjfn0x3"; })
(fetchNuGet { pname = "Avalonia.Themes.Fluent"; version = "11.0.10"; sha256 = "1jqkwhpvnnbbjwr6992ahlkwgwj7l0k1141317qy1wprirn4mpv1"; })
(fetchNuGet { pname = "Avalonia.Themes.Simple"; version = "11.0.10"; sha256 = "0vssdz6rng0k85qsv2xn6x0dldaalnnx718n7plwxg3j1pddr1z7"; })
(fetchNuGet { pname = "Avalonia.Win32"; version = "11.0.10"; sha256 = "1gh3fad9ya56qwzhk7590bdzkky76yx1jjj60rqr013b97qbd3gs"; })
(fetchNuGet { pname = "Avalonia.X11"; version = "11.0.10"; sha256 = "1x09mp8q3mrj5fijqk7qp5qivrysqnbc2bkj2ssvawb9rjy6497w"; })
(fetchNuGet { pname = "Bannerlord.LauncherManager"; version = "1.0.76"; sha256 = "1vkjbh7mqpyqxphqgk2qq8xndhfvc09d04l51y0jj4yklq20ik18"; })
(fetchNuGet { pname = "BenchmarkDotNet"; version = "0.13.12"; sha256 = "1pbfr2d2jl1qpbljny1sgv3614dh6ahhqr49ak4idm4fsyff3bjy"; })
(fetchNuGet { pname = "BenchmarkDotNet.Annotations"; version = "0.13.12"; sha256 = "0sxz5vdsszm8a2s64yhjpz3wlqdv53drf1n5pxyvlzdldipx2w5z"; })
(fetchNuGet { pname = "BitFaster.Caching"; version = "2.4.1"; sha256 = "1rlk9isns57dxnxifb59mllk36ldmqczcvm381frxrv4hlf6kx2q"; })
(fetchNuGet { pname = "Castle.Core"; version = "5.1.1"; sha256 = "1caf4878nvjid3cw3rw18p9cn53brfs5x8dkvf82xvcdwc3i0nd1"; })
(fetchNuGet { pname = "CliWrap"; version = "3.6.6"; sha256 = "02pmshsxfp0xjkyd49r2dkq3cpr8qb7nmjphjzhr60v0qyambxyr"; })
(fetchNuGet { pname = "ColorTextBlock.Avalonia"; version = "11.0.2"; sha256 = "0zvdgpg6r142zhldam5kcpmjpi0qjxsm40cy491gb9ynrj39hrhn"; })
(fetchNuGet { pname = "CommandLineParser"; version = "2.9.1"; sha256 = "1sldkj8lakggn4hnyabjj1fppqh50fkdrr1k99d4gswpbk5kv582"; })
(fetchNuGet { pname = "coverlet.collector"; version = "6.0.0"; sha256 = "12j34vrkmph8lspbafnqmfnj2qvysz1jcrks2khw798s6dwv0j90"; })
(fetchNuGet { pname = "DiffEngine"; version = "12.3.0"; sha256 = "07b9hzxf1bvy35zb49czaffp089w6jr24s3h8bpyhqv5sz7xk2mw"; })
(fetchNuGet { pname = "DiffEngine"; version = "15.2.1"; sha256 = "1nm8wghxyk8742hl8lxrag9pwhip055jc8w0kzz947hmrvpybqbb"; })
(fetchNuGet { pname = "DiffEngine"; version = "15.3.0"; sha256 = "0291rgxr9knk6nsw7vqjhzkcvrgn02cklxmw3mi3s2p6scv8hs2s"; })
(fetchNuGet { pname = "DiffPlex"; version = "1.5.0"; sha256 = "033xgpxj37iwhs67kzlyrx57y8f1fagpmfkw066yz7w2kklh0z78"; })
(fetchNuGet { pname = "DotNetZip"; version = "1.16.0"; sha256 = "14ggqkcjxfzkbpk1961gp9fzikbf037s985zjb8jpi63xs8cfp26"; })
(fetchNuGet { pname = "DynamicData"; version = "7.13.1"; sha256 = "0hy2ba2nkhgp23glkinhfx3v892fkkf4cr9m41daaahnl2r2l8y1"; })
(fetchNuGet { pname = "DynamicData"; version = "8.3.27"; sha256 = "19y1zk2zga464jfv77qir8nlw7mx8lsfpgdswkgz5s3pbhpmzxl8"; })
(fetchNuGet { pname = "EmptyFiles"; version = "4.5.1"; sha256 = "05iwlpyi4l6173qsz07lxrn8c27xm6i2iglpvw202yf5ycypaqpf"; })
(fetchNuGet { pname = "EmptyFiles"; version = "8.1.0"; sha256 = "1jf73vgfx22ah71gv8s15lyakr1f740knvyqmxhpl28zivlqi2lm"; })
(fetchNuGet { pname = "EmptyFiles"; version = "8.2.0"; sha256 = "10g2fyc1gvpnndbh5s6r6kfmlavv83w2xhbqi9h2qry3g25bqc7j"; })
(fetchNuGet { pname = "ExCSS"; version = "4.2.3"; sha256 = "1likxhccg4l4g4i65z4dfzp9059hij6h1q7prx2sgakvk8zzmw9k"; })
(fetchNuGet { pname = "Fare"; version = "2.1.1"; sha256 = "1gagj8k2w5m2z6nlywrzhqx1q9n880yriwk0lsq3vcda9lcggmcz"; })
(fetchNuGet { pname = "FetchBannerlordVersion"; version = "1.0.6.45"; sha256 = "0xz79h1y0ffz9m72gwsgq1kkqih1z1d8rmjbz98dg4nv9k9ia2gz"; })
(fetchNuGet { pname = "FetchBannerlordVersion.Models"; version = "1.0.6.45"; sha256 = "1bsqjvr5fh1jwnj32sss3a99g3dk5iv202sfbhhf8ws6cp3bmgfm"; })
(fetchNuGet { pname = "FluentAssertions"; version = "6.12.0"; sha256 = "04fhn67930zv3i0d8xbrbw5vwz99c83bbvgdwqiir55vw5xlys9c"; })
(fetchNuGet { pname = "FluentAssertions.Analyzers"; version = "0.31.0"; sha256 = "1k3maha460l253300xka55ahgc4lbq3q45805r629kryyx5qy03r"; })
(fetchNuGet { pname = "FluentAssertions.OneOf"; version = "0.0.5"; sha256 = "0fkkqq5d48nlmxcfda4ggsvi528ryq0kwm52mxsah47h2fjv7z2g"; })
(fetchNuGet { pname = "FluentResults"; version = "3.15.2"; sha256 = "1p13dh2dkca29qnsvs6d81yly6sr8z7dn6qcw4430p30p2qbn51n"; })
(fetchNuGet { pname = "Fody"; version = "6.8.0"; sha256 = "1y159433n5wzlvc8hjjrhjarf7mjvngbmh34jkd452zlrjqrhmns"; })
(fetchNuGet { pname = "FomodInstaller.Interface"; version = "1.2.0"; sha256 = "0s627hlrdcxkvgk6k3y8jdnianqjj43irl0nny0jdfiv81aaa75k"; })
(fetchNuGet { pname = "FomodInstaller.Scripting"; version = "1.0.0"; sha256 = "0j0a7dk9zk175cgmv53qnzx0z64rd7r0j50m9s6sclx55wnrpnhq"; })
(fetchNuGet { pname = "FomodInstaller.Scripting.XmlScript"; version = "1.0.0"; sha256 = "1rkr1x9p3hm8a0cm5p6s2d7wwfvq5svcsd291z84hzx7ijia9dvx"; })
(fetchNuGet { pname = "FomodInstaller.Utils"; version = "1.0.0"; sha256 = "0wj40cf40czxyv9y0pkdmir53nznckbalwybcahs2fxcv7pmqh8z"; })
(fetchNuGet { pname = "GameFinder"; version = "4.2.0"; sha256 = "02z94xbpm9kp2b9dw7a77zdqfy4fhqidk7z7if898ap6rwyibwiv"; })
(fetchNuGet { pname = "GameFinder.Common"; version = "2.4.0"; sha256 = "08kfyj422slf2lj29c07jv4fkyzvi0n7r7w3rp4l2jzalys82w0w"; })
(fetchNuGet { pname = "GameFinder.Common"; version = "4.2.0"; sha256 = "0xdgfjxr1vf2r6mlvx3fsmh7iy2yk3dwx55fc7xb4xnl1ys8lh4x"; })
(fetchNuGet { pname = "GameFinder.RegistryUtils"; version = "2.4.0"; sha256 = "0hvihgwjggr9fxa37s89xxaiafgbr38acn4dy8jza1chwdj27nsw"; })
(fetchNuGet { pname = "GameFinder.RegistryUtils"; version = "4.2.0"; sha256 = "1gsva2sabxj4g16wx6vr1cp81qz7ynqfkjvz0qskw2h1h2743vx1"; })
(fetchNuGet { pname = "GameFinder.StoreHandlers.EADesktop"; version = "4.2.0"; sha256 = "0li6r92x7wvn16yivhqfk0xg2y67ksi56fyhrxlx0y41l27g6fpb"; })
(fetchNuGet { pname = "GameFinder.StoreHandlers.EGS"; version = "4.2.0"; sha256 = "0w6rh4mdwi4l1d7ag37qk2g73qlahkbgfab2550x171q0v5vxzbn"; })
(fetchNuGet { pname = "GameFinder.StoreHandlers.GOG"; version = "2.4.0"; sha256 = "0p2qpk908sd9hl1gil6pmh2fqrkz09vzhgwypmslikvvs0bdza1b"; })
(fetchNuGet { pname = "GameFinder.StoreHandlers.GOG"; version = "4.2.0"; sha256 = "0w5infnkbz7q8pc9q9bxqlkz8dvnsnvb4lj5qp2zqwvvrlavqfpv"; })
(fetchNuGet { pname = "GameFinder.StoreHandlers.Origin"; version = "4.2.0"; sha256 = "0lfa5l013shhwjd0n88zgpa348ssd7yligcap67a2jp1bcsa6npf"; })
(fetchNuGet { pname = "GameFinder.StoreHandlers.Steam"; version = "2.4.0"; sha256 = "05rp101d401qwcknwh9dlk41slp5byjsfcm46653hian2b17lrs8"; })
(fetchNuGet { pname = "GameFinder.StoreHandlers.Steam"; version = "4.2.0"; sha256 = "0165qjz7sqcrqskij7zgsd8vhimdq6y2gxngjphpwx4g39a5b23y"; })
(fetchNuGet { pname = "GameFinder.StoreHandlers.Xbox"; version = "4.2.0"; sha256 = "1qcprjpx1a5gxiynl4h9xhmkdfbfj5bblblj5xxm7v81jldi90yd"; })
(fetchNuGet { pname = "GameFinder.Wine"; version = "4.2.0"; sha256 = "0h61piw0szbf2w2wh47h4ap2nyqwf9xqvwi4s880w2mx8635jjaq"; })
(fetchNuGet { pname = "Gee.External.Capstone"; version = "2.3.0"; sha256 = "119yll2zpc9m176i17lcan31zcvww47zsvw573vbwb0jbzy17mn1"; })
(fetchNuGet { pname = "GitHubActionsTestLogger"; version = "2.3.3"; sha256 = "12rpibz66bm4img2v1knjhawp4g94qmb78pfbpbhmg60zpnmjg7x"; })
(fetchNuGet { pname = "Google.Protobuf"; version = "3.19.4"; sha256 = "134wlbj1d3l3p81z2q3cwjwpg3s4288h1bgis0x8cpagk4k1ads7"; })
(fetchNuGet { pname = "Grpc.Core.Api"; version = "2.43.0"; sha256 = "0aywd270inzfy3nizdvz7z1c083m11xfd76016q0c9sbmwrhv20j"; })
(fetchNuGet { pname = "Grpc.Net.Client"; version = "2.43.0"; sha256 = "1yxm894lpn5sg6xg7i5ldd9bh7xg2s2c6xsx0yf7zrachy1bqbar"; })
(fetchNuGet { pname = "Grpc.Net.Common"; version = "2.43.0"; sha256 = "17gn73ccqq5aap7r8i6nir1260f5ndav2yc67wk2gnp94nsavbm2"; })
(fetchNuGet { pname = "HarfBuzzSharp"; version = "2.8.2.3"; sha256 = "115aybicqs9ijjlcv6k6r5v0agkjm1bm1nkd0rj3jglv8s0xvmp2"; })
(fetchNuGet { pname = "HarfBuzzSharp"; version = "7.3.0"; sha256 = "1rqcmdyzxz9kc0k8594hbpksjc23mkakmjybi4b8702qycxx0lrf"; })
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "2.8.2.3"; sha256 = "1f18ahwkaginrg0vwsi6s56lvnqvvxv7pzklfs5lnknasxy1a76z"; })
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "7.3.0"; sha256 = "0i9gaiyjgmcpnfn1fixbxq8shqlh4ahng7j4dxlf38zlln1f6h80"; })
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "2.8.2.3"; sha256 = "052d8frpkj4ijs6fm6xp55xbv95b1s9biqwa0w8zp3rgm88m9236"; })
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "7.3.0"; sha256 = "1b5ng37bwk75cifw7p1hzn8z6sswi8h7h510qgwlbvgmlrs5r0ga"; })
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "2.8.2.3"; sha256 = "043hv36bg5240znbm8x5la7py17m4jfzy57q3ka32f6zjld83j36"; })
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "7.3.0"; sha256 = "0dcmclnyryb82wzsky1dn0gbjsvx84mfx46v984f5fmg4v238lpm"; })
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2.3"; sha256 = "08khd2jqm8sw58ljz5srangzfm2sz3gd2q1jzc5fr80lj8rv6r74"; })
(fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "7.3.0"; sha256 = "1hyvmz7rfbrxbcpnwyvb64gdk1hifcpz3rln58yyb7g1pnbpnw2s"; })
(fetchNuGet { pname = "HtmlAgilityPack"; version = "1.11.52"; sha256 = "01046w7j63404wvhxglaik8k89pimsnyr4q4mr6fs92ajsp1hrp7"; })
(fetchNuGet { pname = "Humanizer"; version = "2.14.1"; sha256 = "18cycx9gvbc3735chdi2r583x73m2fkz1ws03yi3g640j9zv00fp"; })
(fetchNuGet { pname = "Humanizer.Core"; version = "2.14.1"; sha256 = "1ai7hgr0qwd7xlqfd92immddyi41j3ag91h3594yzfsgsy6yhyqi"; })
(fetchNuGet { pname = "Humanizer.Core"; version = "2.2.0"; sha256 = "08mzg65y9d3zvq16rsmpapcdan71ggq2mpks6k777h3wlm2sh3p5"; })
(fetchNuGet { pname = "Humanizer.Core.af"; version = "2.14.1"; sha256 = "197lsky6chbmrixgsg6dvxbdbbpis0an8mn6vnwjcydhncis087h"; })
(fetchNuGet { pname = "Humanizer.Core.ar"; version = "2.14.1"; sha256 = "03rz12mxrjv5afm1hn4rrpimkkb8wdzp17634dcq10fhpbwhy6i5"; })
(fetchNuGet { pname = "Humanizer.Core.az"; version = "2.14.1"; sha256 = "138kdhy86afy5n72wy12qlb25q4034z73lz5nbibmkixxdnj9g5r"; })
(fetchNuGet { pname = "Humanizer.Core.bg"; version = "2.14.1"; sha256 = "0scwzrvv8332prijkbp4y11n172smjb4sf7ygia6bi3ibhzq7zjy"; })
(fetchNuGet { pname = "Humanizer.Core.bn-BD"; version = "2.14.1"; sha256 = "1322kn7ym46mslh32sgwkv07l3jkkx7cw5wjphql2ziphxw536p8"; })
(fetchNuGet { pname = "Humanizer.Core.cs"; version = "2.14.1"; sha256 = "1zl3vsdd2pw3nm05qpnr6c75y7gacgaghg9sj07ksvsjmklgqqih"; })
(fetchNuGet { pname = "Humanizer.Core.da"; version = "2.14.1"; sha256 = "10rmrvzwp212fpxv0sdq8f0sjymccsdn71k99f845kz0js83r70s"; })
(fetchNuGet { pname = "Humanizer.Core.de"; version = "2.14.1"; sha256 = "0j7kld0jdiqwin83arais9gzjj85mpshmxls64yi58qhl7qjzk0j"; })
(fetchNuGet { pname = "Humanizer.Core.el"; version = "2.14.1"; sha256 = "143q1321qh5506wwvcpy0fj7hpbd9i1k75247mqs2my05x9vc8n0"; })
(fetchNuGet { pname = "Humanizer.Core.es"; version = "2.14.1"; sha256 = "011kscy671mgyx412h55b0x9a1ngmdsgqzqq1w0l10xhf90y4hc8"; })
(fetchNuGet { pname = "Humanizer.Core.fa"; version = "2.14.1"; sha256 = "184dxwkf251c27h7gg9y5zciixgcwy1cmdrs0bqrph7gg69kp6yq"; })
(fetchNuGet { pname = "Humanizer.Core.fi-FI"; version = "2.14.1"; sha256 = "144jlnlipr3pnbcyhbgrd2lxibx8vy00lp2zn60ihxppgbisircc"; })
(fetchNuGet { pname = "Humanizer.Core.fr"; version = "2.14.1"; sha256 = "0klnfy8n659sp8zngd87gy7qakd56dwr1axjjzk0zph1zvww09jq"; })
(fetchNuGet { pname = "Humanizer.Core.fr-BE"; version = "2.14.1"; sha256 = "0b70illi4m58xvlqwcvar0smh6292zadzk2r8c25ryijh6d5a9qv"; })
(fetchNuGet { pname = "Humanizer.Core.he"; version = "2.14.1"; sha256 = "08xkiv88qqd1b0frpalb2npq9rvz2q1yz48k6dikrjvy6amggirh"; })
(fetchNuGet { pname = "Humanizer.Core.hr"; version = "2.14.1"; sha256 = "12djmwxfg03018j2bqq5ikwkllyma8k7zmvpw61vxs7cv4izc6wh"; })
(fetchNuGet { pname = "Humanizer.Core.hu"; version = "2.14.1"; sha256 = "0lw13p9b2kbqf96lif5kx59axxiahd617h154iswjfka9kxdw65x"; })
(fetchNuGet { pname = "Humanizer.Core.hy"; version = "2.14.1"; sha256 = "1bgm0yabhvsv70amzmkvf3mls32lvd7yyr59yxf3xc96msqczgjh"; })
(fetchNuGet { pname = "Humanizer.Core.id"; version = "2.14.1"; sha256 = "1w0bnyac46f2321l09ckb6vz66s1bxl27skfww1iwrmf03i7m2cw"; })
(fetchNuGet { pname = "Humanizer.Core.is"; version = "2.14.1"; sha256 = "10w1fprlhxm1qy3rh0qf6z86ahrv8fcza3wrsx55idlmar1x9jyz"; })
(fetchNuGet { pname = "Humanizer.Core.it"; version = "2.14.1"; sha256 = "1msrmih8cp7r4yj7r85kr0l5h4yln80450mivliy1x322dav8xz2"; })
(fetchNuGet { pname = "Humanizer.Core.ja"; version = "2.14.1"; sha256 = "04ry6z0v85y4y5vzbqlbxppfdm04i02dxbxaaykbps09rwqaa250"; })
(fetchNuGet { pname = "Humanizer.Core.ko-KR"; version = "2.14.1"; sha256 = "156641v0ilrpbzprscvbzfha57pri4y1i66n9v056nc8bm10ggbg"; })
(fetchNuGet { pname = "Humanizer.Core.ku"; version = "2.14.1"; sha256 = "1scz21vgclbm1xhaw89f0v8s0vx46yv8yk3ij0nr6shsncgq9f7h"; })
(fetchNuGet { pname = "Humanizer.Core.lv"; version = "2.14.1"; sha256 = "1909dsbxiv2sgj6myfhn8lbbmvkp2hjahj0knawypyq3jw9sq86g"; })
(fetchNuGet { pname = "Humanizer.Core.ms-MY"; version = "2.14.1"; sha256 = "1dmjrxb0kb297ycr8xf7ni3l7y4wdqrdhqbhy8xnm8dx90nmj9x5"; })
(fetchNuGet { pname = "Humanizer.Core.mt"; version = "2.14.1"; sha256 = "0b183r1apzfa1hasimp2f27yfjkfp87nfbd8qdyrqdigw6nzcics"; })
(fetchNuGet { pname = "Humanizer.Core.nb"; version = "2.14.1"; sha256 = "12rd75f83lv6z12b5hbwnarv3dkk29pvc836jpg2mzffm0g0kxj2"; })
(fetchNuGet { pname = "Humanizer.Core.nb-NO"; version = "2.14.1"; sha256 = "1n033yfw44sjf99mv51c53wggjdffz8b9wv7gwm3q7i6g7ck4vv1"; })
(fetchNuGet { pname = "Humanizer.Core.nl"; version = "2.14.1"; sha256 = "0q4231by40bsr6mjy93n0zs365pz6da32pwkxcz1cc2hfdlkn0vd"; })
(fetchNuGet { pname = "Humanizer.Core.pl"; version = "2.14.1"; sha256 = "0h2wbwrlcmjk8b2mryyd8rbb1qmripvg0zyg61gg0hifiqfg3cr2"; })
(fetchNuGet { pname = "Humanizer.Core.pt"; version = "2.14.1"; sha256 = "0pg260zvyhqz8h1c96px1vs9q5ywvd0j2ixsq21mj96dj7bl5fay"; })
(fetchNuGet { pname = "Humanizer.Core.ro"; version = "2.14.1"; sha256 = "04mr28bjcb9hs0wmpb4nk2v178i0fjr0ymc78dv9bbqkmrzfsmcn"; })
(fetchNuGet { pname = "Humanizer.Core.ru"; version = "2.14.1"; sha256 = "060abvk7mrgawipjgw0h4hrvizby7acmj58w2g35fv54g43isgcl"; })
(fetchNuGet { pname = "Humanizer.Core.sk"; version = "2.14.1"; sha256 = "182xiqf71kiqp42b8yqrag6z57wzqraqi10bnhx0crrc1gxq8v0j"; })
(fetchNuGet { pname = "Humanizer.Core.sl"; version = "2.14.1"; sha256 = "12ygvzyqa0km7a0wz42zssq8qqakvghh96x1ng7qvwcrna3v2rdi"; })
(fetchNuGet { pname = "Humanizer.Core.sr"; version = "2.14.1"; sha256 = "1ggj15qksyr16rilq2w76x38bxp6a6z75b30c9b7w5ni88nkgc7x"; })
(fetchNuGet { pname = "Humanizer.Core.sr-Latn"; version = "2.14.1"; sha256 = "0lwr0gnashirny8lgaw0qnbb7x0qrjg8fs11594x8l7li3mahzz3"; })
(fetchNuGet { pname = "Humanizer.Core.sv"; version = "2.14.1"; sha256 = "1c7yx59haikdqx7k7vqll6223jjmikgwbl3dzmrcs3laywgfnmgn"; })
(fetchNuGet { pname = "Humanizer.Core.th-TH"; version = "2.14.1"; sha256 = "0kyyi5wc23i2lcag3zvrhga9gsnba3ahl4kdlaqvvg2jhdfarl4m"; })
(fetchNuGet { pname = "Humanizer.Core.tr"; version = "2.14.1"; sha256 = "0rdvp0an263b2nj3c5v11hvdwgmj86ljf2m1h3g1x28pygbcx6am"; })
(fetchNuGet { pname = "Humanizer.Core.uk"; version = "2.14.1"; sha256 = "0a2p6mhh0ajn0y7x98zbfasln1l04iiknd50sgf3svna99wybnxd"; })
(fetchNuGet { pname = "Humanizer.Core.uz-Cyrl-UZ"; version = "2.14.1"; sha256 = "1jfzfgnk6wz5na2md800vq0djm6z194x618yvwxbnk2c7wikbjj2"; })
(fetchNuGet { pname = "Humanizer.Core.uz-Latn-UZ"; version = "2.14.1"; sha256 = "0vimhw500rq60naxfari8qm6gjmjm8h9j6c04k67fs447djy8ndi"; })
(fetchNuGet { pname = "Humanizer.Core.vi"; version = "2.14.1"; sha256 = "1yr0l73cy2qypkssmmjwfbbqgdplam62dqnzk9vx6x47dzpys077"; })
(fetchNuGet { pname = "Humanizer.Core.zh-CN"; version = "2.14.1"; sha256 = "1k6nnawd016xpwgzdzy84z1lcv2vc1cygcksw19wbgd8dharyyk7"; })
(fetchNuGet { pname = "Humanizer.Core.zh-Hans"; version = "2.14.1"; sha256 = "0zn99311zfn602phxyskfjq9vly0w5712z6fly8r4q0h94qa8c85"; })
(fetchNuGet { pname = "Humanizer.Core.zh-Hant"; version = "2.14.1"; sha256 = "0qxjnbdj645l5sd6y3100yyrq1jy5misswg6xcch06x8jv7zaw1p"; })
(fetchNuGet { pname = "Iced"; version = "1.17.0"; sha256 = "1999xavgpy2h83rh4indiq5mx5l509swqdi1raxj3ab6zvk49zpb"; })
(fetchNuGet { pname = "ini-parser-netstandard"; version = "2.5.2"; sha256 = "14alsxh7ik07xl9xab8bdi108f4xhz8vcchxvxy1k5w3zf3gdml9"; })
(fetchNuGet { pname = "JetBrains.Annotations"; version = "2023.3.0"; sha256 = "0vp4mpn6gfckn8grzjm1jxlbqiq2fglm2rk9wq787adw7rxs8k7w"; })
(fetchNuGet { pname = "K4os.Compression.LZ4"; version = "1.3.5"; sha256 = "1nv9inhz0n25lhkw9xgp6g5xbqmcdccdhx6mwrli0pdp6hjmlh9k"; })
(fetchNuGet { pname = "K4os.Compression.LZ4"; version = "1.3.7-beta"; sha256 = "1dq0pdpj6sv0rwsn234i3jkj4k4z7zlmy840vr2s374pnhq4ihwq"; })
(fetchNuGet { pname = "K4os.Compression.LZ4.Streams"; version = "1.3.5"; sha256 = "09m0jxq6558r1v1l4rsc8c0n6nlacz2d8c03as6kvvvz2gr7h506"; })
(fetchNuGet { pname = "K4os.Hash.xxHash"; version = "1.0.8"; sha256 = "0vz1f81z4rh7a576fdzbc6wmj7p4gaca1rch3anvh1s5qd7xdd10"; })
(fetchNuGet { pname = "LinqGen"; version = "0.3.1"; sha256 = "1nlgmmpw6f93mh357avjpzs63ayqrg44zkw813ah32j752wpaav3"; })
(fetchNuGet { pname = "Loqui"; version = "2.60.0"; sha256 = "1kb7a7pz4srg6gwbfx5d2yf2pbbfbxp435lgngaxihn02w0cx6x9"; })
(fetchNuGet { pname = "Magick.NET-Q16-AnyCPU"; version = "13.6.0"; sha256 = "0m04xwcrsmwqbx6y9kb6754sam98b530525bbr463k27w7fnvlg0"; })
(fetchNuGet { pname = "Magick.NET.Core"; version = "13.6.0"; sha256 = "0rskzm986ayjzapima66y1dzslgbwdbykivns4vwyn96v0pdybpp"; })
(fetchNuGet { pname = "Markdown.Avalonia.Tight"; version = "11.0.2"; sha256 = "1mz229r42f1p320xkjl45pdv72lycn9cqk46arycm9km45jgzzgl"; })
(fetchNuGet { pname = "MartinCostello.Logging.XUnit"; version = "0.3.0"; sha256 = "1l2bp67lfpmm502gxa0zrdyizwz5gl9sjzwnsn0qcr9n1iri25s6"; })
(fetchNuGet { pname = "MemoryPack"; version = "1.10.0"; sha256 = "1h3i2zxzmi0nhk993fldi1i5kzsgy2dxdzly6l44x8kgr3fmld0z"; })
(fetchNuGet { pname = "MemoryPack.Core"; version = "1.10.0"; sha256 = "02mcavp807q88nbay7hz43g50vzpmmqn6kvqxcqld6n6yqgqfl4m"; })
(fetchNuGet { pname = "MemoryPack.Generator"; version = "1.10.0"; sha256 = "0x4dxnxxp8ffjdwa8wj2r51z6hmmcmsxiccrkm3r6f238xli5amj"; })
(fetchNuGet { pname = "MemoryPack.Streaming"; version = "1.10.0"; sha256 = "1km24ajy3igq7l1rs33aqb7qaf3a4pbnj4zr7k1n531zjmzyzgj1"; })
(fetchNuGet { pname = "MicroCom.Runtime"; version = "0.11.0"; sha256 = "0p9c3m0zk59x9dcqw077hzd2yk60myisbacvm36mnwpcjwzjkp2m"; })
(fetchNuGet { pname = "Microsoft.AspNet.WebApi.Client"; version = "5.2.9"; sha256 = "1sy1q36bm9fz3gi780w4jgysw3dwaz2f3a5gcn6jxw1gkmdasb08"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.WebUtilities"; version = "8.0.3"; sha256 = "1jfwlk75db63ziar5rczw69dxn75byci2sb87wja3g6w3sswffp0"; })
(fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "1.1.0"; sha256 = "1dq5yw7cy6s42193yl4iqscfw5vzkjkgv0zyy32scr4jza6ni1a1"; })
(fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "1.1.1"; sha256 = "0a1ahssqds2ympr7s4xcxv5y8jgxs7ahd6ah6fbgglj4rki1f1vw"; })
(fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "6.0.0"; sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; })
(fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "7.0.0"; sha256 = "1waiggh3g1cclc81gmjrqbh128kwfjky3z79ma4bd2ms9pa3gvfm"; })
(fetchNuGet { pname = "Microsoft.Build.Tasks.Git"; version = "8.0.0"; sha256 = "0055f69q3hbagqp8gl3nk0vfn4qyqyxsxyy7pd0g7wm3z28byzmx"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzer.Testing"; version = "1.1.1"; sha256 = "1vqyrj82li1jli1h90skx1vrp6np9xfg82mny93sdms6m38f03nz"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; sha256 = "0bbl0jpqywqmzz2gagld1p2gvdfldjfjmm25hil9wj2nq1zc4di8"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.3.2"; sha256 = "162vb5894zxps0cf5n9gc08an7gwybzz87allx3lsszvllr9ldx4"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.3.3"; sha256 = "09m4cpry8ivm9ga1abrxmvw16sslxhy2k5sl14zckhqb1j164im6"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.3.4"; sha256 = "0wd6v57p53ahz5z9zg4iyzmy3src7rlsncyqpcag02jjj1yx6g58"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "1.0.1"; sha256 = "0vsc1ds60mk417v7faiihrmx0mmi0gyy1gar2w0jh8fjn5vasdcf"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.8.0"; sha256 = "12n7rvr39bzkf2maw7zplw8rwpxpxss4ich3bb2pw770rx4nyvyw"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "4.1.0"; sha256 = "1mbwbp0gq6fnh2fkvsl9yzry9bykcar58gbzx22y6x6zw74lnx43"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "4.8.0"; sha256 = "0gmbxn91h4r23fhzpl1dh56cpva4sg2h659kdbdazayrajfj50fw"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.8.0"; sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "4.1.0"; sha256 = "005dj0w0ika9s7b0qrd2zk4rj35ld8y5d1nhyf9788srzig5dkx4"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "4.8.0"; sha256 = "0idaksbib90zgi8xlycmdzk77dlxichspp23wpnfrzfxkdfafqrj"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.8.0"; sha256 = "0w0yx0lpg54iw5jazqk46h48gx43ij32gwac8iywdj6kxfxm03vw"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing"; version = "1.1.1"; sha256 = "0n80xxvzsl0502d67jcpv46da5bijx118w9zf2wc4vrgz94hczlx"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.XUnit"; version = "1.1.1"; sha256 = "0rh7s809nkrjfnf5339n3yvz07gpfxs4j0xcpaybzcixjgp3q120"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Workspaces"; version = "3.8.0"; sha256 = "1jfbqfngwwjx3x1cyqaamf26s7j6wag86ig1n7bh99ny85gd78wb"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Workspaces"; version = "4.8.0"; sha256 = "00bgzgr9kw35iz3bgndprfrxcaibc73mhd72i3pk7awam7xxrp2q"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.8.0"; sha256 = "0hjgxcsj5zy27lqk0986m59n5dbplx2vjjla2lsvg4bwg8qa7bpk"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.SourceGenerators.Testing"; version = "1.1.1"; sha256 = "1y6nclzsb7l1pwla511c2byc96xkbaph3ilp44q31x6p702yi33p"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Testing.Verifiers.XUnit"; version = "1.1.1"; sha256 = "0xw2zxzimjcqjsnvz7xi2dnf69iihav8hk4zq2cs06z4hjj39sjq"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Workspaces.Common"; version = "1.0.1"; sha256 = "0nrds4x3hja3r8mnd4qh8x9zc0n98cb71argb82fm12bms90y9px"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Workspaces.Common"; version = "3.8.0"; sha256 = "0qbirv7wxllzw5120pfa42wailfgzvl10373yhacankmfmbz2gnw"; })
(fetchNuGet { pname = "Microsoft.CodeAnalysis.Workspaces.Common"; version = "4.8.0"; sha256 = "10r2qci44syk8v45rp8pq73q4c76bxbasplyi8lzhfwmjm57ii2z"; })
(fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.9.0"; sha256 = "1gljgi69k0fz8vy8bn6xlyxabj6q4vls2zza9wz7ng6ix3irm89r"; })
(fetchNuGet { pname = "Microsoft.Composition"; version = "1.0.27"; sha256 = "1la5s2n2kwzi3fxg2dvsn79zkpm8big2wyxvm03jyn2f7kgykz8v"; })
(fetchNuGet { pname = "Microsoft.CSharp"; version = "4.0.1"; sha256 = "0zxc0apx1gcx361jlq8smc9pfdgmyjh6hpka8dypc9w23nlsh6yj"; })
(fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; })
(fetchNuGet { pname = "Microsoft.Data.Sqlite"; version = "8.0.3"; sha256 = "1v1vs0cmx8lcwc8x5n794ky0y7ck9qq6742nm54kdqixz2y501a2"; })
(fetchNuGet { pname = "Microsoft.Data.Sqlite.Core"; version = "8.0.3"; sha256 = "1c9ajcjkszwnx6p0ba93cxa7hb3m5b98mvn4g151bgx2izcv656d"; })
(fetchNuGet { pname = "Microsoft.Diagnostics.NETCore.Client"; version = "0.2.251802"; sha256 = "0h4mc6gx95l1mwcxhj7m7drsfgbhp0ssr6l8wr7k42y0nypgi4gm"; })
(fetchNuGet { pname = "Microsoft.Diagnostics.Runtime"; version = "2.2.332302"; sha256 = "1n64ya4fq6305xv8ybk7f22v0f39rylkqap7n9blhr1h98mp27z5"; })
(fetchNuGet { pname = "Microsoft.Diagnostics.Tracing.TraceEvent"; version = "3.0.2"; sha256 = "14swfz2myqv4zxznf5450b3485q629pk0zc483yszvq0956a4yq4"; })
(fetchNuGet { pname = "Microsoft.DotNet.PlatformAbstractions"; version = "3.1.6"; sha256 = "0b9myd7gqbpaw9pkd2bx45jhik9mwj0f1ss57sk2cxmag2lkdws5"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "2.1.1"; sha256 = "0244czr3jflvzcj6axq61j10dkl0f16ad34rw81ryg57v4cvlwx6"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "3.1.0"; sha256 = "1rszgz0rd5kvib5fscz6ss3pkxyjwqy0xpd4f2ypgzf5z5g5d398"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "6.0.0"; sha256 = "1zdyai2rzngmsp3706d12qrdk315c1s3ja218fzb3nc3wd1vz0s8"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "8.0.0"; sha256 = "080kab87qgq2kh0ijry5kfdiq9afyzb8s0k3jqi5zbbi540yq4zl"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "2.1.1"; sha256 = "0b4bn0cf39c6jlc8xnpi1d8f3pz0qhf8ng440yb95y5jv5q4fdyw"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "3.1.0"; sha256 = "1f7h52kamljglx5k08ccryilvk6d6cvr9c26lcb6b2c091znzk0q"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "6.0.0"; sha256 = "0w6wwxv12nbc3sghvr68847wc9skkdgsicrz3fx4chgng1i3xy0j"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "8.0.0"; sha256 = "1jlpa4ggl1gr5fs7fdcw04li3y3iy05w3klr9lrrlc7v8w76kq71"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "2.1.1"; sha256 = "0n91s6cjfv8plf5swhr307s849jmq2pa3i1rbpb0cb0grxml0mqm"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "3.1.0"; sha256 = "13jj7jxihiswmhmql7r5jydbca4x5qj6h7zq10z17gagys6dc7pw"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "6.0.0"; sha256 = "15hb2rbzgri1fq8wpj4ll7czm3rxqzszs02phnhjnncp90m5rmpc"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "8.0.0"; sha256 = "1m0gawiz8f5hc3li9vd5psddlygwgkiw13d7div87kmkf4idza8r"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.CommandLine"; version = "6.0.0"; sha256 = "1hb4qrq9xdxzh2px515pv1vkz1jigwaxw1hfg9w8s6pgl8z04l4c"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.CommandLine"; version = "8.0.0"; sha256 = "026f7f2iv6ph2dc5rnslll0bly8qcx5clmh2nn9hgyqjizzc4qvy"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.EnvironmentVariables"; version = "6.0.0"; sha256 = "19w2vxliz1xangbach3hkx72x2pxqhc9n9c3kc3l8mhicl8w6vdl"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.EnvironmentVariables"; version = "8.0.0"; sha256 = "13qb8wz3k59ihq0mjcqz1kwrpyzxn5da4dhk2pvcgc42z9kcbf7r"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.FileExtensions"; version = "6.0.0"; sha256 = "02nna984iwnyyz4jjh9vs405nlj0yk1g5vz4v2x30z2c89mx5f9w"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.FileExtensions"; version = "8.0.0"; sha256 = "1jrmlfzy4h32nzf1nm5q8bhkpx958b0ww9qx1k1zm4pyaf6mqb04"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Json"; version = "6.0.0"; sha256 = "1c6l5szma1pdn61ncq1kaqibg0dz65hbma2xl626a8d1m6awn353"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Json"; version = "8.0.0"; sha256 = "1n3ss26v1lq6b69fxk1vz3kqv9ppxq8ypgdqpd7415xrq66y4bqn"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.UserSecrets"; version = "6.0.0"; sha256 = "0rqsdjm37wifi0rcxbmicmgd6h9p539mb88hcsgy16yl30fvgv3g"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.UserSecrets"; version = "8.0.0"; sha256 = "1br01zhzhnxjzqx63bxd25x48y9xs69hcs71pjni8y9kl50zja7z"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "3.1.0"; sha256 = "1xc61dy07bn2q73mx1z3ylrw80xpa682qjby13gklnqq636a3gab"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "6.0.0"; sha256 = "1wlhb2vygzfdjbdzy7waxblmrx0q3pdcqvpapnpmq9fcx5m8r6w1"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "8.0.0"; sha256 = "0i7qziz0iqmbk8zzln7kx9vd0lbx1x3va0yi3j1bgkjir13h78ps"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "2.0.0"; sha256 = "1pwrfh9b72k9rq6mb2jab5qhhi225d5rjalzkapiayggmygc8nhz"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "2.1.1"; sha256 = "0rn0925aqm1fsbaf0n8jy6ng2fm1cy97lp7yikvx31m6178k9i84"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "3.1.0"; sha256 = "1pvms778xkyv1a3gfwrxnh8ja769cxi416n7pcidn9wvg15ifvbh"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "6.0.0"; sha256 = "1vi67fw7q99gj7jd64gnnfr4d2c0ijpva7g9prps48ja6g91x6a9"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "7.0.0"; sha256 = "181d7mp9307fs17lyy42f8cxnjwysddmpsalky4m0pqxcimnr6g7"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "8.0.0"; sha256 = "1zw0bpp5742jzx03wvqc8csnvsbgdqi0ls9jfc5i2vd3cl8b74pg"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "8.0.1"; sha256 = "1wyhpamm1nqjfi3r463dhxljdlr6rm2ax4fvbgq2s0j3jhpdhd4p"; })
(fetchNuGet { pname = "Microsoft.Extensions.Diagnostics"; version = "8.0.0"; sha256 = "0ghwkld91k20hcbmzg2137w81mzzdh8hfaapdwckhza0vipya4kw"; })
(fetchNuGet { pname = "Microsoft.Extensions.Diagnostics.Abstractions"; version = "8.0.0"; sha256 = "15m4j6w9n8h0mj7hlfzb83hd3wn7aq1s7fxbicm16slsjfwzj82i"; })
(fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "6.0.0"; sha256 = "1fbqmfapxdz77drcv1ndyj2ybvd2rv4c9i9pgiykcpl4fa6dc65q"; })
(fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "8.0.0"; sha256 = "1idq65fxwcn882c06yci7nscy9i0rgw6mqjrl7362prvvsd9f15r"; })
(fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Physical"; version = "6.0.0"; sha256 = "1ikc3kf325xig6njbi2aj5kmww4xlaq9lsrpc8v764fsm4x10474"; })
(fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Physical"; version = "8.0.0"; sha256 = "05wxjvjbx79ir7vfkri6b28k8zl8fa6bbr0i7gahqrim2ijvkp6v"; })
(fetchNuGet { pname = "Microsoft.Extensions.FileSystemGlobbing"; version = "6.0.0"; sha256 = "09gyyv4fwy9ys84z3aq4lm9y09b7bd1d4l4gfdinmg0z9678f1a4"; })
(fetchNuGet { pname = "Microsoft.Extensions.FileSystemGlobbing"; version = "8.0.0"; sha256 = "1igf2bqism22fxv7km5yv028r4rg12a4lki2jh4xg3brjkagiv7q"; })
(fetchNuGet { pname = "Microsoft.Extensions.Hosting"; version = "6.0.0"; sha256 = "0h7yh9hm3pzqphsav54lrpjf12lqqdz4dq7hr61bcjycwd29l7dv"; })
(fetchNuGet { pname = "Microsoft.Extensions.Hosting"; version = "8.0.0"; sha256 = "1f2af5m1yny8b43251gsj75hjd9ixni1clcldy8cg91z1vxxm8dh"; })
(fetchNuGet { pname = "Microsoft.Extensions.Hosting.Abstractions"; version = "6.0.0"; sha256 = "1mwjx6li4a82nb589763whpnhf5hfy1bpv1dzqqvczb1lhxhzhlj"; })
(fetchNuGet { pname = "Microsoft.Extensions.Hosting.Abstractions"; version = "8.0.0"; sha256 = "00d5dwmzw76iy8z40ly01hy9gly49a7rpf7k7m99vrid1kxp346h"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "2.0.0"; sha256 = "1jkwjcq1ld9znz1haazk8ili2g4pzfdp6i7r7rki4hg3jcadn386"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "2.1.1"; sha256 = "12pag6rf01xfa8x1h30mf4czfhlhg2kgi5q712jicy3h12c02w8y"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "3.1.0"; sha256 = "1d3yhqj1rav7vswm747j7w8fh8paybji4rz941hhlq4b12mfqfh4"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "6.0.0"; sha256 = "0fd9jii3y3irfcwlsiww1y9npjgabzarh33rn566wpcz24lijszi"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "8.0.0"; sha256 = "0nppj34nmq25gnrg0wh1q22y4wdqbih4ax493f226azv8mkp9s1i"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "2.0.0"; sha256 = "1x5isi71z02khikzvm7vaschb006pqqrsv86ky1x08a4hir4s43h"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "2.1.1"; sha256 = "1sgpwj0sa0ac7m5fnkb482mnch8fsv8hfbvk53c6lyh47s1xhdjg"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "3.0.3"; sha256 = "1wj871vl1azasbn2lrzzycvzkk72rvaxywnj193xwv11420b0mjh"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "3.1.0"; sha256 = "1zyalrcksszmn9r5xjnirfh7847axncgzxkk3k5srbvlcch8fw8g"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "6.0.0"; sha256 = "0b75fmins171zi6bfdcq1kcvyrirs8n91mknjnxy4c3ygi1rrnj0"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "8.0.0"; sha256 = "1klcqhg3hk55hb6vmjiq2wgqidsl81aldw0li2z98lrwx26msrr6"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "8.0.1"; sha256 = "0i9pgmk60b8xlws3q9z890gim1xjq42dhyh6dj4xvbycmgg1x1sd"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Configuration"; version = "3.1.0"; sha256 = "00bx95j2j0lkrr1znm53qicigvrj4sbc7snh27nqwsp4vkjnpz5h"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Configuration"; version = "6.0.0"; sha256 = "0plx785hk61arjxf0m3ywy9hl5nii25raj4523n3ql7mmv6hxqr1"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Configuration"; version = "8.0.0"; sha256 = "1d9b734vnll935661wqkgl7ry60rlh5p876l2bsa930mvfsaqfcv"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Console"; version = "6.0.0"; sha256 = "1383b0r33dzz0hrch9cqzzxr9vxr21qq0a5vnrpkfq71m2fky31d"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Console"; version = "8.0.0"; sha256 = "1mvp3ipw7k33v2qw2yrvc4vl5yzgpk3yxa94gg0gz7wmcmhzvmkd"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Debug"; version = "6.0.0"; sha256 = "0aql9kc45g2d6z1hmwr3p1a2qy9m3f36bds3054givsnpnis81wk"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Debug"; version = "8.0.0"; sha256 = "1h7mg97lj0ss47kq7zwnihh9c6xcrkwrr8ffhc16qcsrh36sg6q0"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.EventLog"; version = "6.0.0"; sha256 = "0j3g2k8sr99kr73w66yk4ghq469syyxzayq6fjfnjjgj1y7x05fl"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.EventLog"; version = "8.0.0"; sha256 = "05vfrxw7mlwlwhsl6r4yrhxk3sd8dv5sl0hdlcpgw62n53incw5x"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.EventSource"; version = "6.0.0"; sha256 = "0ck8r63qal88349kkbj1i98fd8z9kcp41s13yyz8cpkygn15wq4g"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.EventSource"; version = "8.0.0"; sha256 = "0gbjll6p03rmw0cf8fp0p8cxzn9awmzv8hvnyqbczrkax5h7p94i"; })
(fetchNuGet { pname = "Microsoft.Extensions.ObjectPool"; version = "8.0.3"; sha256 = "0h9i862qnnczix3ldai49djphd2cgpcg4wyaz1xsqv0i8gll65sp"; })
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "2.0.0"; sha256 = "0g4zadlg73f507krilhaaa7h0jdga216syrzjlyf5fdk25gxmjqh"; })
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "2.1.1"; sha256 = "0wgpsi874gzzjj099xbdmmsifslkbdjkxd5xrzpc5xdglpkw08vl"; })
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "3.1.0"; sha256 = "0akccwhpn93a4qrssyb3rszdsp3j4p9hlxbsb7yhqb78xydaqhyh"; })
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "6.0.0"; sha256 = "008pnk2p50i594ahz308v81a41mbjz9mwcarqhmrjpl2d20c868g"; })
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "8.0.0"; sha256 = "0p50qn6zhinzyhq9sy5svnmqqwhw2jajs2pbjh9sah504wjvhscz"; })
(fetchNuGet { pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; version = "3.1.0"; sha256 = "13bhi1q4s79k4qb19m4p94364543jr3a1f8kacjvdhigpmqa732r"; })
(fetchNuGet { pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; version = "6.0.0"; sha256 = "1k6q91vrhq1r74l4skibn7wzxzww9l74ibxb2i8gg4q6fzbiivba"; })
(fetchNuGet { pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; version = "8.0.0"; sha256 = "04nm8v5a3zp0ill7hjnwnja3s2676b4wffdri8hdk2341p7mp403"; })
(fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "2.0.0"; sha256 = "1xppr5jbny04slyjgngxjdm0maxdh47vq481ps944d7jrfs0p3mb"; })
(fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "2.1.1"; sha256 = "033rkqdffybq5prhc7nn6v68zij393n00s5a82yf2n86whwvdfwx"; })
(fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "3.1.0"; sha256 = "1w1y22njywwysi8qjnj4m83qhbq0jr4mmjib0hfawz6cwamh7xrb"; })
(fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "6.0.0"; sha256 = "1kjiw6s4yfz9gm7mx3wkhp06ghnbs95icj9hi505shz9rjrg42q2"; })
(fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "8.0.0"; sha256 = "0aldaz5aapngchgdr7dax9jw5wy7k7hmjgjpfgfv1wfif27jlkqm"; })
(fetchNuGet { pname = "Microsoft.Net.Http.Headers"; version = "8.0.3"; sha256 = "00rr4fcbwc0zf2iczdi91cdmh6w3gb1x02zv7smhcqqpgzrvidqa"; })
(fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.9.0"; sha256 = "1lls1fly2gr1n9n1xyl9k33l2v4pwfmylyzkq8v4v5ldnwkl1zdb"; })
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; })
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.0.0"; sha256 = "1fk2fk2639i7nzy58m9dvpdnzql4vb8yl8vr19r2fp8lmj9w2jr0"; })
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.2"; sha256 = "1507hnpr9my3z4w1r6xk5n0s1j3y6a2c2cnynj76za7cphxi1141"; })
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "3.1.0"; sha256 = "1gc1x8f95wk8yhgznkwsg80adk1lc65v9n5rx4yaa4bc5dva0z3j"; })
(fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "5.0.0"; sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc"; })
(fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.0.1"; sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; })
(fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
(fetchNuGet { pname = "Microsoft.SourceLink.Common"; version = "8.0.0"; sha256 = "0xrr8yd34ij7dqnyddkp2awfmf9qn3c89xmw2f3npaa4wnajmx81"; })
(fetchNuGet { pname = "Microsoft.SourceLink.GitHub"; version = "8.0.0"; sha256 = "1gdx7n45wwia3yvang3ls92sk3wrymqcx9p349j8wba2lyjf9m44"; })
(fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.7.1"; sha256 = "0agmphcspyg4pmpzfrfpbmgqf3wd3kqqvs87xls0i1139pa8ryi9"; })
(fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.9.0"; sha256 = "1kgsl9w9fganbm9wvlkqgk0ag9hfi58z88rkfybc6kvg78bx89ca"; })
(fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.9.0"; sha256 = "19ffh31a1jxzn8j69m1vnk5hyfz3dbxmflq77b8x82zybiilh5nl"; })
(fetchNuGet { pname = "Microsoft.VisualBasic"; version = "10.0.1"; sha256 = "0q6vv9qfkbwn7gz8qf1gfcn33r87m260hsxdsk838mcbqmjz6wgc"; })
(fetchNuGet { pname = "Microsoft.VisualStudio.Composition"; version = "16.1.8"; sha256 = "0x4ln1f4y2dyc0l5cckwzs56wr022cdwfh7p21wm9pr4fnvzhm68"; })
(fetchNuGet { pname = "Microsoft.VisualStudio.Composition.NetFxAttributes"; version = "16.1.8"; sha256 = "00dhyk24v438iilynjy6hygmh7iyhx0glmlf7sa1bwd6dwhacmql"; })
(fetchNuGet { pname = "Microsoft.VisualStudio.Validation"; version = "15.0.82"; sha256 = "0ms0167bi97hps5d5pw0rd2vkf24qchzxqfl2bn5h7fry41mm4gc"; })
(fetchNuGet { pname = "Microsoft.Win32.Primitives"; version = "4.0.1"; sha256 = "1n8ap0cmljbqskxpf8fjzn7kh1vvlndsa75k01qig26mbw97k2q7"; })
(fetchNuGet { pname = "Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; })
(fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "4.3.0"; sha256 = "1gxyzxam8163vk1kb6xzxjj4iwspjsz9zhgn1w9rjzciphaz0ig7"; })
(fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "5.0.0"; sha256 = "102hvhq2gmlcbq8y2cb7hdr2dnmjzfp2k3asr1ycwrfacwyaak7n"; })
(fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "4.7.0"; sha256 = "0pjll2a62hc576hd4wgyasva0lp733yllmk54n37svz5ac7nfz0q"; })
(fetchNuGet { pname = "Mutagen.Bethesda.Core"; version = "0.42.0"; sha256 = "1wncsnmwbc11ardl38ii81jkspilzlnq3p4jhcwfmykiang9dr50"; })
(fetchNuGet { pname = "Mutagen.Bethesda.Kernel"; version = "0.42.0"; sha256 = "1bpaqxqygjr0vbhxg6iwj3shqak0gz28kmpjc364y4vchhhvczwk"; })
(fetchNuGet { pname = "Mutagen.Bethesda.Skyrim"; version = "0.42.0"; sha256 = "1ippwgiicl4rp7a2cv88axwnrjgx2pbpxwdqpw9w8wqlm5rdp2ql"; })
(fetchNuGet { pname = "NetEscapades.EnumGenerators"; version = "1.0.0-beta07"; sha256 = "01n7h7bgarmkar1ll7s4qrvl9j0avd5pfylcnpp2lvkna29jx0j9"; })
(fetchNuGet { pname = "NETStandard.Library"; version = "1.6.0"; sha256 = "0nmmv4yw7gw04ik8ialj3ak0j6pxa9spih67hnn1h2c38ba8h58k"; })
(fetchNuGet { pname = "NETStandard.Library"; version = "1.6.1"; sha256 = "1z70wvsx2d847a2cjfii7b83pjfs34q05gb037fdjikv5kbagml8"; })
(fetchNuGet { pname = "NETStandard.Library"; version = "2.0.3"; sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y"; })
(fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.1"; sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb"; })
(fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; sha256 = "0xrwysmrn4midrjal8g2hr1bbg38iyisl0svamb11arqws4w2bw7"; })
(fetchNuGet { pname = "Newtonsoft.Json"; version = "9.0.1"; sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r"; })
(fetchNuGet { pname = "Newtonsoft.Json.Bson"; version = "1.0.1"; sha256 = "1r1hvj5gjl466bya2bfl5aaj8rbwyf5x1msg710wf3k2llbci1xa"; })
(fetchNuGet { pname = "NexusMods.Archives.Nx"; version = "0.3.8"; sha256 = "067wgxqby7kiya6cnx64mq824csbz1h8vx30i5w8wax3ppaxbgp2"; })
(fetchNuGet { pname = "NexusMods.Hashing.xxHash64"; version = "2.0.0"; sha256 = "003jwn9hnmszfzwa9xd36hspc9xh8mcldkh169sj84rxsw0xliri"; })
(fetchNuGet { pname = "NexusMods.Paths"; version = "0.1.8"; sha256 = "0gid7zdhcfilhlvs1fm19z6sgp63zcjx522fw1ghgngj7dwgqpp6"; })
(fetchNuGet { pname = "NexusMods.Paths"; version = "0.4.0"; sha256 = "0kyhpn2dha2d9fri3nm2zfpd5ly2lgc1bqs1k06fxnmsxljy7vd8"; })
(fetchNuGet { pname = "NexusMods.Paths"; version = "0.8.0"; sha256 = "0sw49xdj6h3n38kdzb46gc99z05klhgjr33fjrdg0ln8j1m9q3gv"; })
(fetchNuGet { pname = "NexusMods.Paths"; version = "0.9.2"; sha256 = "0a550hb48rdj5y9pazixl90gzyvwqf6zhmam5q90z11k2mifp0gp"; })
(fetchNuGet { pname = "NexusMods.Paths.TestingHelpers"; version = "0.8.0"; sha256 = "0wcmpskfn9pw0jhjq7hdwgnvflqpl9a1rasx3ck3ansmh0my1f3z"; })
(fetchNuGet { pname = "NexusMods.ProxyConsole"; version = "0.6.0"; sha256 = "1iajcv1z2xc6851h4xxymbp4085hh236la9pwivd71rlcilikjln"; })
(fetchNuGet { pname = "NexusMods.ProxyConsole.Abstractions"; version = "0.6.0"; sha256 = "10icz41zjd0jfyg9v8c4cfjm5ivg23klll3cbsyj4k8v70dwf7x0"; })
(fetchNuGet { pname = "NexusMods.SingleProcess"; version = "0.6.0"; sha256 = "1ibkvric5gpn89qdic7bgg8knap64m4svjgc8xgnc4f4l6wi1802"; })
(fetchNuGet { pname = "NexusMods.Telemetry"; version = "1.0.0"; sha256 = "18v3kqk3nldk8qvp7yky8l33vjgp16bsgzfvfz6a0z4n7l1wxwhq"; })
(fetchNuGet { pname = "NexusMods.Telemetry.OpenTelemetry"; version = "1.0.0"; sha256 = "0885nhmx6hln9r7psfrg6101z5mx949g6a73w9ini13z4cx5fvgb"; })
(fetchNuGet { pname = "NLog"; version = "5.2.8"; sha256 = "1z3h20m5rjnizm1jbf5j0vpdc1f373rzzkg6478p1lxv5j385c12"; })
(fetchNuGet { pname = "NLog.Extensions.Logging"; version = "5.3.8"; sha256 = "1qnz91099f51vk7f5g2ig0041maw5hcbyqllxvj5zj7zkp0qw9b8"; })
(fetchNuGet { pname = "Noggog.CSharpExt"; version = "2.60.0"; sha256 = "1p6ih9a30y1mir3y4cchbnmhj9pv7rsmqfhmn10gm4apf68fid0n"; })
(fetchNuGet { pname = "NSubstitute"; version = "5.1.0"; sha256 = "0vjl2pgw4b6366x47xyc0nfz33rx96bwjpnn0diq8mksaxn6w6ir"; })
(fetchNuGet { pname = "NSubstitute.Analyzers.CSharp"; version = "1.0.17"; sha256 = "1gkr7xw4my7577dhyb4a5ylw5qlfdfddcyxr4l5p0yrkjcs228qz"; })
(fetchNuGet { pname = "NuGet.Common"; version = "5.6.0"; sha256 = "1y7z537xrq2flfhsr63da1lxq9xgnja5d0ssp8ih7fhzjw5f1kxr"; })
(fetchNuGet { pname = "NuGet.Configuration"; version = "5.6.0"; sha256 = "1lk9gf8pyyic6r6vfz09cmh1s2h8y8qgh9c2cl7kygsnxzm3m41b"; })
(fetchNuGet { pname = "NuGet.Frameworks"; version = "5.6.0"; sha256 = "1dzmma2qm6brmsy3nfh3w7y04aijyzzq4xwa8f8ykg9f6wqrril8"; })
(fetchNuGet { pname = "NuGet.Frameworks"; version = "6.5.0"; sha256 = "0s37d1p4md0k6d4cy6sq36f2dgkd9qfbzapxhkvi8awwh0vrynhj"; })
(fetchNuGet { pname = "NuGet.Packaging"; version = "5.6.0"; sha256 = "02d101kfljcsvrn7wq756nnwvvn1qsl3ijlw3azhn9680vaw0pvf"; })
(fetchNuGet { pname = "NuGet.Protocol"; version = "5.6.0"; sha256 = "1zsi1gdlyjwmmxpqbbzmc524nmcs8v50xyql2m8dr0rq9723g9kx"; })
(fetchNuGet { pname = "NuGet.Resolver"; version = "5.6.0"; sha256 = "0kn751hxvwy4c0bzmpk5fin435iav4wx56ndwg7jid29a1380260"; })
(fetchNuGet { pname = "NuGet.Versioning"; version = "5.6.0"; sha256 = "10jfafhscgh2y92a70lbn1jq7k3v8mjx6ryfchjfqkk1g1dv0wnw"; })
(fetchNuGet { pname = "OneOf"; version = "2.1.125"; sha256 = "0yrvf99gspbz4k19zrklpxrwr3i75ml1ygwn6rr57hhc44sh2yfx"; })
(fetchNuGet { pname = "OneOf"; version = "3.0.263"; sha256 = "08jiy5ff6nx3bbmia7iqcfrva0bynr87m0m4nxkzm5ri21w49ri1"; })
(fetchNuGet { pname = "OneOf.Extended"; version = "2.1.125"; sha256 = "0j0nvwc2p4xc0amx1v74mgj7m550qjk7j4wk99q3c5ydvkiv75n0"; })
(fetchNuGet { pname = "OpenTelemetry"; version = "1.5.1"; sha256 = "11viab672mdiyw5pl7fk43lmn0i1wyjrnx4nwfh44m3vj1x0a7xn"; })
(fetchNuGet { pname = "OpenTelemetry.Api"; version = "1.5.1"; sha256 = "0wybx4zjsfzxn8gqjcy6impi634swy0s50fq9af7hrhwa4mwsr5w"; })
(fetchNuGet { pname = "OpenTelemetry.Api.ProviderBuilderExtensions"; version = "1.5.1"; sha256 = "0rb092l5hsivk8giiz2iqh9y1040m8zvyg4k4ikgzfr7xz00zlh9"; })
(fetchNuGet { pname = "OpenTelemetry.Exporter.OpenTelemetryProtocol"; version = "1.5.1"; sha256 = "17d6a9hvs3g4vkbbv5jsjl74ixvb4anvgfkav72nv6c2j6qrdlcd"; })
(fetchNuGet { pname = "OpenTelemetry.Extensions.Hosting"; version = "1.5.1"; sha256 = "1l83hivr1596mnjd51j0mjsfswm2mz7b5az9krwc80yhyxdhkba3"; })
(fetchNuGet { pname = "Pathoschild.Http.FluentClient"; version = "4.3.0"; sha256 = "157cv084sdy463qx57wqnsj437magqs25dcd38brv35jnbk3vkqp"; })
(fetchNuGet { pname = "Perfolizer"; version = "0.2.1"; sha256 = "012aqqi3y3nfikqmn26yajpwd52c04zlzp0p91iyslw7mf26qncy"; })
(fetchNuGet { pname = "Projektanker.Icons.Avalonia"; version = "9.1.2"; sha256 = "1a28f02n7zxgbi2wpx83krjq9ribylalwny2anabfk8y5lc4xw8n"; })
(fetchNuGet { pname = "Projektanker.Icons.Avalonia.MaterialDesign"; version = "9.1.2"; sha256 = "0w8x94d7bqwgpcnlxxf27zcjxh1frv3mb647wv0k7lj3bvnpmkdl"; })
(fetchNuGet { pname = "ReactiveUI"; version = "18.3.1"; sha256 = "1lxkc8yk9glj0w9n5vry2dnwwvh8152ad2c5bivk8aciq64zidyn"; })
(fetchNuGet { pname = "ReactiveUI"; version = "19.5.41"; sha256 = "1sbs76x4b3kqc5aba6bvp0430nngq28qbjaw74mfijara3b47iqn"; })
(fetchNuGet { pname = "ReactiveUI.Fody"; version = "19.5.41"; sha256 = "0hwrayh0ji6f35z56c5qj0plriha16spghs75w5r80hz20pq9wid"; })
(fetchNuGet { pname = "Reloaded.Memory"; version = "9.3.0"; sha256 = "08jyxwj2jh8dlhdf43f2mqi5cg2pxzrlh1b7bhsx0yp1hgzh58pr"; })
(fetchNuGet { pname = "Reloaded.Memory"; version = "9.4.1"; sha256 = "1yv9c49zp4fvl329q7nwa71zkp2plvxvicdr62i2izby9h0r6xkd"; })
(fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; })
(fetchNuGet { pname = "runtime.any.System.Diagnostics.Tools"; version = "4.3.0"; sha256 = "1wl76vk12zhdh66vmagni66h5xbhgqq7zkdpgw21jhxhvlbcl8pk"; })
(fetchNuGet { pname = "runtime.any.System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn"; })
(fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; })
(fetchNuGet { pname = "runtime.any.System.Globalization.Calendars"; version = "4.3.0"; sha256 = "1ghhhk5psqxcg6w88sxkqrc35bxcz27zbqm2y5p5298pv3v7g201"; })
(fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; })
(fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; })
(fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; })
(fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; })
(fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; })
(fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
(fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; })
(fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; })
(fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
(fetchNuGet { pname = "runtime.any.System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8"; })
(fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; })
(fetchNuGet { pname = "runtime.any.System.Threading.Timer"; version = "4.3.0"; sha256 = "0aw4phrhwqz9m61r79vyfl5la64bjxj8l34qnrcwb28v49fg2086"; })
(fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; })
(fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; })
(fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; })
(fetchNuGet { pname = "runtime.native.System"; version = "4.0.0"; sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf"; })
(fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
(fetchNuGet { pname = "runtime.native.System.IO.Compression"; version = "4.1.0"; sha256 = "0d720z4lzyfcabmmnvh0bnj76ll7djhji2hmfh3h44sdkjnlkknk"; })
(fetchNuGet { pname = "runtime.native.System.IO.Compression"; version = "4.3.0"; sha256 = "1vvivbqsk6y4hzcid27pqpm5bsi6sc50hvqwbcx8aap5ifrxfs8d"; })
(fetchNuGet { pname = "runtime.native.System.Net.Http"; version = "4.0.1"; sha256 = "1hgv2bmbaskx77v8glh7waxws973jn4ah35zysnkxmf0196sfxg6"; })
(fetchNuGet { pname = "runtime.native.System.Net.Http"; version = "4.3.0"; sha256 = "1n6rgz5132lcibbch1qlf0g9jk60r0kqv087hxc0lisy50zpm7kk"; })
(fetchNuGet { pname = "runtime.native.System.Security.Cryptography"; version = "4.0.0"; sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9"; })
(fetchNuGet { pname = "runtime.native.System.Security.Cryptography.Apple"; version = "4.3.0"; sha256 = "1b61p6gw1m02cc1ry996fl49liiwky6181dzr873g9ds92zl326q"; })
(fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; })
(fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; })
(fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; })
(fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple"; version = "4.3.0"; sha256 = "10yc8jdrwgcl44b4g93f1ds76b176bajd3zqi2faf5rvh1vy9smi"; })
(fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; })
(fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; })
(fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; })
(fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; })
(fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; })
(fetchNuGet { pname = "runtime.unix.Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0y61k9zbxhdi0glg154v30kkq7f8646nif8lnnxbvkjpakggd5id"; })
(fetchNuGet { pname = "runtime.unix.System.Console"; version = "4.3.0"; sha256 = "1pfpkvc6x2if8zbdzg9rnc5fx51yllprl8zkm5npni2k50lisy80"; })
(fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; })
(fetchNuGet { pname = "runtime.unix.System.IO.FileSystem"; version = "4.3.0"; sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix"; })
(fetchNuGet { pname = "runtime.unix.System.Net.Primitives"; version = "4.3.0"; sha256 = "0bdnglg59pzx9394sy4ic66kmxhqp8q8bvmykdxcbs5mm0ipwwm4"; })
(fetchNuGet { pname = "runtime.unix.System.Net.Sockets"; version = "4.3.0"; sha256 = "03npdxzy8gfv035bv1b9rz7c7hv0rxl5904wjz51if491mw0xy12"; })
(fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
(fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; })
(fetchNuGet { pname = "SHA3.Net"; version = "2.0.0"; sha256 = "11wmqx6gvkl8kvbhsavk2hsj8nplnv8ai3apwiyv7ndrpkv29p5c"; })
(fetchNuGet { pname = "SharpZipLib"; version = "1.4.2"; sha256 = "0ijrzz2szxjmv2cipk7rpmg14dfaigdkg7xabjvb38ih56m9a27y"; })
(fetchNuGet { pname = "SharpZstd.Interop"; version = "1.5.5-beta1"; sha256 = "1jdwd00pgl86k9k5sz5jk7vckd0bi4818kg52pwpc0byjn8wqfgg"; })
(fetchNuGet { pname = "ShimSkiaSharp"; version = "1.0.0.14"; sha256 = "0gdzvkrg63a4nqh4z2dxqiwmw07if08vdffmmgbck6j4nblx11qh"; })
(fetchNuGet { pname = "SimpleInfoName"; version = "2.1.1"; sha256 = "08rbvnk5aln1dbfv69rqnzkld5m3bvb2j4z367s297fb5ci4s87g"; })
(fetchNuGet { pname = "SimpleInfoName"; version = "2.2.0"; sha256 = "0dd68biqqzi81p8jz8z61181hachpikqphk73xw12s7w33xqf8x0"; })
(fetchNuGet { pname = "SkiaSharp"; version = "2.88.6"; sha256 = "0xs11zjw9ha68maw3l825kfwlrid43qwy0mswljxhpjh0y1k6k6b"; })
(fetchNuGet { pname = "SkiaSharp"; version = "2.88.7"; sha256 = "0f6wbk9dnjiffb9ycjachy1m9zw3pai2m503nym07qgb0izxm792"; })
(fetchNuGet { pname = "SkiaSharp.HarfBuzz"; version = "2.88.6"; sha256 = "1h61vk9ibavwwrxqgclzsxmchighvfaqlcqrj0dpi2fzw57f54c2"; })
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.3"; sha256 = "0dajvr60nwvnv7s6kcqgw1w97zxdpz1c5lb7kcq7r0hi0l05ck3q"; })
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.7"; sha256 = "0p0z6nxkkmabv46wmxhs3yr0xy24i6jzn54gk0hsm3h1a8vi3m21"; })
(fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.6"; sha256 = "1fp9h8c8k6sbsh48b69dc6461isd4dajq7yw5i7j6fhkas78q4zf"; })
(fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.7"; sha256 = "05xwa1izzvqz4gznvx2x31qnpvl1lc65hm5p9sscjg5afisya0ss"; })
(fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.3"; sha256 = "1w5njksq3amrrp7fqxw89nv6ar2kgc5yx092i4rxv7hrjbd1aagx"; })
(fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.7"; sha256 = "1k2hfasgbv01navc55zzwdwzfxcw4186jni35c00zykgwhbwb250"; })
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.6"; sha256 = "1w2mwcwkqvrg4x4ybc4674xnkqwh1n2ihg520gqgpnqfc11ghc4n"; })
(fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.7"; sha256 = "119mlbh5hmlis7vb111s95dwg5p1anm2hmv7cm6fz7gy18473d7v"; })
(fetchNuGet { pname = "Spectre.Console"; version = "0.47.0"; sha256 = "0gc9ana660an7d76w9qd8l62lv66dc69vr5lslr896b1313ywakp"; })
(fetchNuGet { pname = "Spectre.Console"; version = "0.48.0"; sha256 = "0v3zijim9k5lcmhn0ajlsix0japvx3c20r9b7x7f7gvraa8w3gl6"; })
(fetchNuGet { pname = "Splat"; version = "14.4.1"; sha256 = "03ycyjn2ii44npi015p4rk344xnjgdzz02cf63cmhx2ab8hv6p4b"; })
(fetchNuGet { pname = "Splat"; version = "14.8.12"; sha256 = "09gigvphgq6w3n251wgi5r3wbyk9j19cpn6g5wigqdymy5hfr97l"; })
(fetchNuGet { pname = "Splat.Microsoft.Extensions.Logging"; version = "14.8.12"; sha256 = "0gbwyr1sbadbkrf7wgc4jcxv73q96dybwvnkrxhr3igi2hidsn29"; })
(fetchNuGet { pname = "SQLitePCLRaw.bundle_e_sqlite3"; version = "2.1.6"; sha256 = "0pzgdfl707pd9fz108xaff22w7c2y27yaix6wfp36phqkdnzz43m"; })
(fetchNuGet { pname = "SQLitePCLRaw.core"; version = "2.1.6"; sha256 = "1w8zsgz2w2q0a9cw9cl1rzrpv48a04nhyq67ywan6xlgknds65a7"; })
(fetchNuGet { pname = "SQLitePCLRaw.lib.e_sqlite3"; version = "2.1.6"; sha256 = "0g959z7r3h43nwzm7z3jiib1xvyx146lxyv0x6fl8ll5wivpjyxq"; })
(fetchNuGet { pname = "SQLitePCLRaw.provider.e_sqlite3"; version = "2.1.6"; sha256 = "1vs1c7yhi0mdqrd35ji289cxkhg7dxdnn6wgjjbngvqxkdhkyxyc"; })
(fetchNuGet { pname = "Svg.Custom"; version = "1.0.0.14"; sha256 = "1x4cc9npxfl22wgy34pxglp7aja7h6q4vkc5ms0xknr2j9b7x5j6"; })
(fetchNuGet { pname = "Svg.Model"; version = "1.0.0.14"; sha256 = "03g343r1adaclnybj35p33bskwkn2scr9gka1l3cf13d3rz1hxal"; })
(fetchNuGet { pname = "Svg.Skia"; version = "1.0.0.14"; sha256 = "18rnn88gfkry72vzknwa89vfkclsn06hz4wqx3iy1x81pf1az4qq"; })
(fetchNuGet { pname = "System.AppContext"; version = "4.1.0"; sha256 = "0fv3cma1jp4vgj7a8hqc9n7hr1f1kjp541s6z0q1r6nazb4iz9mz"; })
(fetchNuGet { pname = "System.AppContext"; version = "4.3.0"; sha256 = "1649qvy3dar900z3g817h17nl8jp4ka5vcfmsr05kh0fshn7j3ya"; })
(fetchNuGet { pname = "System.Buffers"; version = "4.0.0"; sha256 = "13s659bcmg9nwb6z78971z1lr6bmh2wghxi1ayqyzl4jijd351gr"; })
(fetchNuGet { pname = "System.Buffers"; version = "4.3.0"; sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; })
(fetchNuGet { pname = "System.Buffers"; version = "4.5.1"; sha256 = "04kb1mdrlcixj9zh1xdi5as0k0qi8byr5mi3p3jcxx72qz93s2y3"; })
(fetchNuGet { pname = "System.CodeDom"; version = "5.0.0"; sha256 = "14zs2wqkmdlxzj8ikx19n321lsbarx5vl2a8wrachymxn8zb5njh"; })
(fetchNuGet { pname = "System.CodeDom"; version = "6.0.0"; sha256 = "1i55cxp8ycc03dmxx4n22qi6jkwfl23cgffb95izq7bjar8avxxq"; })
(fetchNuGet { pname = "System.CodeDom"; version = "8.0.0"; sha256 = "0zyzd15v0nf8gla7nz243m1kff8ia6vqp471i3g7xgawgj5n21dv"; })
(fetchNuGet { pname = "System.Collections"; version = "4.0.11"; sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6"; })
(fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
(fetchNuGet { pname = "System.Collections.Concurrent"; version = "4.0.12"; sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc"; })
(fetchNuGet { pname = "System.Collections.Concurrent"; version = "4.3.0"; sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8"; })
(fetchNuGet { pname = "System.Collections.Immutable"; version = "1.1.36"; sha256 = "0bgwv02alikabdp8ax7wbrp8ym4nbbfa65lhz042cy5g9hn35xf7"; })
(fetchNuGet { pname = "System.Collections.Immutable"; version = "1.2.0"; sha256 = "1jm4pc666yiy7af1mcf7766v710gp0h40p228ghj6bavx7xfa38m"; })
(fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; })
(fetchNuGet { pname = "System.Collections.Immutable"; version = "7.0.0"; sha256 = "1n9122cy6v3qhsisc9lzwa1m1j62b8pi2678nsmnlyvfpk0zdagm"; })
(fetchNuGet { pname = "System.Collections.Immutable"; version = "8.0.0"; sha256 = "0z53a42zjd59zdkszcm7pvij4ri5xbb8jly9hzaad9khlf69bcqp"; })
(fetchNuGet { pname = "System.CommandLine"; version = "2.0.0-beta4.22272.1"; sha256 = "1iy5hwwgvx911g3yq65p4zsgpy08w4qz9j3h0igcf7yci44vw8yd"; })
(fetchNuGet { pname = "System.ComponentModel"; version = "4.3.0"; sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb"; })
(fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.3.0"; sha256 = "1ab25njbjgqbnvkazv41ndc0fc7gx0dnnhzb57d2wbd7ljxm21fd"; })
(fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.5.0"; sha256 = "1jj6f6g87k0iwsgmg3xmnn67a14mq88np0l1ys5zkxhkvbc8976p"; })
(fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "5.0.0"; sha256 = "021h7x98lblq9avm1bgpa4i31c2kgsa7zn4sqhxf39g087ar756j"; })
(fetchNuGet { pname = "System.ComponentModel.Composition"; version = "4.5.0"; sha256 = "196ihd17in5idnxq5l5xvpa1fhqamnihjg3mcmv1k4n8bjrrj5y7"; })
(fetchNuGet { pname = "System.Composition"; version = "1.0.31"; sha256 = "0aa27jz73qb0xm6dyxv22qhfrmyyqjyn2dvvsd9asi82lcdh9i61"; })
(fetchNuGet { pname = "System.Composition"; version = "7.0.0"; sha256 = "1aii681g7a4gv8fvgd6hbnbbwi6lpzfcnl3k0k8hqx4m7fxp2f32"; })
(fetchNuGet { pname = "System.Composition.AttributedModel"; version = "1.0.31"; sha256 = "1ipyb86hvw754kmk47vjmzyilvj5hymg9nqabz70sbgsz1fygrdv"; })
(fetchNuGet { pname = "System.Composition.AttributedModel"; version = "7.0.0"; sha256 = "1cxrp0sk5b2gihhkn503iz8fa99k860js2qyzjpsw9rn547pdkny"; })
(fetchNuGet { pname = "System.Composition.Convention"; version = "1.0.31"; sha256 = "00gqcdrql7vhynxh4xq0s9j5nw27kghmn2n773v7lhzjh3ash18r"; })
(fetchNuGet { pname = "System.Composition.Convention"; version = "7.0.0"; sha256 = "1nbyn42xys0kv247jf45r748av6fp8kp27f1582lfhnj2n8290rp"; })
(fetchNuGet { pname = "System.Composition.Hosting"; version = "1.0.31"; sha256 = "1f1bnk3j7ndx9r7zpzibmrhw78clys1pspl20j2dhnmkiwhl23vy"; })
(fetchNuGet { pname = "System.Composition.Hosting"; version = "7.0.0"; sha256 = "0wqbjxgggskfn45ilvg86grqci3zx9xj34r5sradca4mqqc90n7f"; })
(fetchNuGet { pname = "System.Composition.Runtime"; version = "1.0.31"; sha256 = "1shfybfzsn4g6aim4pggb5ha31g0fz2kkk0519c4vj6m166g39ws"; })
(fetchNuGet { pname = "System.Composition.Runtime"; version = "7.0.0"; sha256 = "1p9xpqzx42s8cdizv6nh15hcjvl2km0rwby66nfkj4cb472l339s"; })
(fetchNuGet { pname = "System.Composition.TypedParts"; version = "1.0.31"; sha256 = "1m4j19zx50lbbdx1xxbgpsd1dai2r3kzkyapw47kdvkb89qjkl63"; })
(fetchNuGet { pname = "System.Composition.TypedParts"; version = "7.0.0"; sha256 = "0syz7y6wgnxxgjvfqgymn9mnaa5fjy1qp06qnsvh3agr9mvcv779"; })
(fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "4.4.0"; sha256 = "1hjgmz47v5229cbzd2pwz2h0dkq78lb2wp9grx8qr72pb5i0dk7v"; })
(fetchNuGet { pname = "System.Console"; version = "4.0.0"; sha256 = "0ynxqbc3z1nwbrc11hkkpw9skw116z4y9wjzn7id49p9yi7mzmlf"; })
(fetchNuGet { pname = "System.Console"; version = "4.3.0"; sha256 = "1flr7a9x920mr5cjsqmsy9wgnv3lvd0h1g521pdr1lkb2qycy7ay"; })
(fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.0.11"; sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz"; })
(fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
(fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "4.0.0"; sha256 = "1n6c3fbz7v8d3pn77h4v5wvsfrfg7v1c57lg3nff3cjyh597v23m"; })
(fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "4.3.0"; sha256 = "0z6m3pbiy0qw6rn3n209rrzf9x1k4002zh90vwcrsym09ipm2liq"; })
(fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "6.0.0"; sha256 = "0rrihs9lnb1h6x4h0hn6kgfnh58qq7hx8qq99gh6fayx4dcnx3s5"; })
(fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "7.0.0"; sha256 = "1jxhvsh5mzdf0sgb4dfmbys1b12ylyr5pcfyj1map354fiq3qsgm"; })
(fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "8.0.0"; sha256 = "0nzra1i0mljvmnj1qqqg37xs7bl71fnpl68nwmdajchh65l878zr"; })
(fetchNuGet { pname = "System.Diagnostics.EventLog"; version = "6.0.0"; sha256 = "08y1x2d5w2hnhkh9r1998pjc7r4qp0rmzax062abha85s11chifd"; })
(fetchNuGet { pname = "System.Diagnostics.EventLog"; version = "8.0.0"; sha256 = "1xnvcidh2qf6k7w8ij1rvj0viqkq84cq47biw0c98xhxg5rk3pxf"; })
(fetchNuGet { pname = "System.Diagnostics.Process"; version = "4.3.0"; sha256 = "0g4prsbkygq8m21naqmcp70f24a1ksyix3dihb1r1f71lpi3cfj7"; })
(fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.0.1"; sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x"; })
(fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.3.0"; sha256 = "0in3pic3s2ddyibi8cvgl102zmvp9r9mchh82ns9f0ms4basylw1"; })
(fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.1.0"; sha256 = "1d2r76v1x610x61ahfpigda89gd13qydz6vbwzhpqlyvq8jj6394"; })
(fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; })
(fetchNuGet { pname = "System.Drawing.Common"; version = "4.7.0"; sha256 = "0yfw7cpl54mgfcylvlpvrl0c8r1b0zca6p7r3rcwkvqy23xqcyhg"; })
(fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.0.11"; sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9"; })
(fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; })
(fetchNuGet { pname = "System.Globalization"; version = "4.0.11"; sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d"; })
(fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
(fetchNuGet { pname = "System.Globalization.Calendars"; version = "4.0.1"; sha256 = "0bv0alrm2ck2zk3rz25lfyk9h42f3ywq77mx1syl6vvyncnpg4qh"; })
(fetchNuGet { pname = "System.Globalization.Calendars"; version = "4.3.0"; sha256 = "1xwl230bkakzzkrggy1l1lxmm3xlhk4bq2pkv790j5lm8g887lxq"; })
(fetchNuGet { pname = "System.Globalization.Extensions"; version = "4.0.1"; sha256 = "0hjhdb5ri8z9l93bw04s7ynwrjrhx2n0p34sf33a9hl9phz69fyc"; })
(fetchNuGet { pname = "System.Globalization.Extensions"; version = "4.3.0"; sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls"; })
(fetchNuGet { pname = "System.IO"; version = "4.1.0"; sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp"; })
(fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
(fetchNuGet { pname = "System.IO.Abstractions"; version = "19.1.5"; sha256 = "1dkzkglkdj0alrsmn0bxjx6i7x5xc5svrp0jihyzpkmk9ycs5nwp"; })
(fetchNuGet { pname = "System.IO.Abstractions"; version = "19.2.1"; sha256 = "1v6aazxwmfgy4y95dcbk1wycm4mc53n4pm1cck93nagrwcgbs9y6"; })
(fetchNuGet { pname = "System.IO.Compression"; version = "4.1.0"; sha256 = "0iym7s3jkl8n0vzm3jd6xqg9zjjjqni05x45dwxyjr2dy88hlgji"; })
(fetchNuGet { pname = "System.IO.Compression"; version = "4.3.0"; sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz"; })
(fetchNuGet { pname = "System.IO.Compression.ZipFile"; version = "4.0.1"; sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82"; })
(fetchNuGet { pname = "System.IO.Compression.ZipFile"; version = "4.3.0"; sha256 = "1yxy5pq4dnsm9hlkg9ysh5f6bf3fahqqb6p8668ndy5c0lk7w2ar"; })
(fetchNuGet { pname = "System.IO.FileSystem"; version = "4.0.1"; sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1"; })
(fetchNuGet { pname = "System.IO.FileSystem"; version = "4.3.0"; sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw"; })
(fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.0.1"; sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612"; })
(fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.3.0"; sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; })
(fetchNuGet { pname = "System.IO.Hashing"; version = "7.0.0"; sha256 = "0vilmb817wnw8w13kkps831p05zzc41dldigpbr3wqi0hsrf8ad9"; })
(fetchNuGet { pname = "System.IO.Hashing"; version = "8.0.0"; sha256 = "1hg5i9hiihj9x4d0mlvhfddmivzrhzz83dyh26fqw1nd8jvqccxk"; })
(fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.0"; sha256 = "08211lvckdsdbd67xz4f6cyk76cli565j0dby1grlc4k9bhwby65"; })
(fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.3"; sha256 = "1jgdazpmwc21dd9naq3l9n5s8a1jnbwlvgkf1pnm0aji6jd4xqdz"; })
(fetchNuGet { pname = "System.IO.Pipelines"; version = "7.0.0"; sha256 = "1ila2vgi1w435j7g2y7ykp2pdbh9c5a02vm85vql89az93b7qvav"; })
(fetchNuGet { pname = "System.IO.Pipelines"; version = "8.0.0"; sha256 = "00f36lqz1wf3x51kwk23gznkjjrf5nmqic9n7073nhrgrvb43nid"; })
(fetchNuGet { pname = "System.Linq"; version = "4.1.0"; sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5"; })
(fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; })
(fetchNuGet { pname = "System.Linq.Async"; version = "6.0.1"; sha256 = "10ira8hmv0i54yp9ggrrdm1c06j538sijfjpn1kmnh9j2xk5yzmq"; })
(fetchNuGet { pname = "System.Linq.Expressions"; version = "4.1.0"; sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg"; })
(fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; })
(fetchNuGet { pname = "System.Management"; version = "5.0.0"; sha256 = "09hyv3p0zd549577clydlb2szl84m4gvdjnsry73n8b12ja7d75s"; })
(fetchNuGet { pname = "System.Management"; version = "6.0.2"; sha256 = "190bxmg0y5dmzh0yv9gzh8k6safdz20gqaifpnl8v7yw3z5wcpgj"; })
(fetchNuGet { pname = "System.Management"; version = "8.0.0"; sha256 = "1zbwj6ii8axa4w8ymjzi9d9pj28nhswygahyqppvzaxypw6my2hz"; })
(fetchNuGet { pname = "System.Memory"; version = "4.5.1"; sha256 = "0f07d7hny38lq9w69wx4lxkn4wszrqf9m9js6fh9is645csm167c"; })
(fetchNuGet { pname = "System.Memory"; version = "4.5.3"; sha256 = "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a"; })
(fetchNuGet { pname = "System.Memory"; version = "4.5.4"; sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; })
(fetchNuGet { pname = "System.Memory"; version = "4.5.5"; sha256 = "08jsfwimcarfzrhlyvjjid61j02irx6xsklf32rv57x2aaikvx0h"; })
(fetchNuGet { pname = "System.Net.Http"; version = "4.1.0"; sha256 = "1i5rqij1icg05j8rrkw4gd4pgia1978mqhjzhsjg69lvwcdfg8yb"; })
(fetchNuGet { pname = "System.Net.Http"; version = "4.3.0"; sha256 = "1i4gc757xqrzflbk7kc5ksn20kwwfjhw9w7pgdkn19y3cgnl302j"; })
(fetchNuGet { pname = "System.Net.NameResolution"; version = "4.3.0"; sha256 = "15r75pwc0rm3vvwsn8rvm2krf929mjfwliv0mpicjnii24470rkq"; })
(fetchNuGet { pname = "System.Net.Primitives"; version = "4.0.11"; sha256 = "10xzzaynkzkakp7jai1ik3r805zrqjxiz7vcagchyxs2v26a516r"; })
(fetchNuGet { pname = "System.Net.Primitives"; version = "4.3.0"; sha256 = "0c87k50rmdgmxx7df2khd9qj7q35j9rzdmm2572cc55dygmdk3ii"; })
(fetchNuGet { pname = "System.Net.Sockets"; version = "4.1.0"; sha256 = "1385fvh8h29da5hh58jm1v78fzi9fi5vj93vhlm2kvqpfahvpqls"; })
(fetchNuGet { pname = "System.Net.Sockets"; version = "4.3.0"; sha256 = "1ssa65k6chcgi6mfmzrznvqaxk8jp0gvl77xhf1hbzakjnpxspla"; })
(fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.4.0"; sha256 = "0rdvma399070b0i46c4qq1h2yvjj3k013sqzkilz4bz5cwmx1rba"; })
(fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
(fetchNuGet { pname = "System.ObjectModel"; version = "4.0.12"; sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj"; })
(fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; })
(fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
(fetchNuGet { pname = "System.Reactive"; version = "5.0.0"; sha256 = "1lafmpnadhiwxyd543kraxa3jfdpm6ipblxrjlibym9b1ykpr5ik"; })
(fetchNuGet { pname = "System.Reactive"; version = "6.0.0"; sha256 = "1mkvx1fwychpczksy6svfmniqhbm3xqblxqik6178l12xgq7aw45"; })
(fetchNuGet { pname = "System.Reflection"; version = "4.1.0"; sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9"; })
(fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
(fetchNuGet { pname = "System.Reflection.Emit"; version = "4.0.1"; sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp"; })
(fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; })
(fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.0.1"; sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0"; })
(fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; })
(fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.0.1"; sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr"; })
(fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; })
(fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.0.1"; sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn"; })
(fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; })
(fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.0.21"; sha256 = "0jq1jvjxwgaxi9wama5wy5b3lspvd2kz4rcp8gc9xhqs3idq6ank"; })
(fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.3.0"; sha256 = "1y5m6kryhjpqqm2g3h3b6bzig13wkiw954x3b7icqjm6xypm1x3b"; })
(fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; })
(fetchNuGet { pname = "System.Reflection.Metadata"; version = "5.0.0"; sha256 = "17qsl5nanlqk9iz0l5wijdn6ka632fs1m1fvx18dfgswm258r3ss"; })
(fetchNuGet { pname = "System.Reflection.Metadata"; version = "7.0.0"; sha256 = "1wilasn2qmj870h2bhw348lspamm7pbinpb4m89icg113510l00v"; })
(fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.0.1"; sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28"; })
(fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
(fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.1.0"; sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7"; })
(fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; })
(fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.0.1"; sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi"; })
(fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
(fetchNuGet { pname = "System.Runtime"; version = "4.1.0"; sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m"; })
(fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.4.0"; sha256 = "0a6ahgi5b148sl5qyfpyw383p3cb4yrkm802k29fsi4mxkiwir29"; })
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.5.3"; sha256 = "1afi6s2r1mh1kygbjmfba6l4f87pi5sg13p4a48idqafli94qxln"; })
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.7.1"; sha256 = "119br3pd85lq8zcgh4f60jzmv1g976q1kdgi3hvqdlhfbw6siz2j"; })
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "5.0.0"; sha256 = "02k25ivn50dmqx5jn8hawwmz24yf0454fjd823qk6lygj9513q4x"; })
(fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; })
(fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.1.0"; sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z"; })
(fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
(fetchNuGet { pname = "System.Runtime.Handles"; version = "4.0.1"; sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g"; })
(fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
(fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.1.0"; sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1"; })
(fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
(fetchNuGet { pname = "System.Runtime.InteropServices.RuntimeInformation"; version = "4.0.0"; sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6"; })
(fetchNuGet { pname = "System.Runtime.InteropServices.RuntimeInformation"; version = "4.3.0"; sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii"; })
(fetchNuGet { pname = "System.Runtime.Numerics"; version = "4.0.1"; sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn"; })
(fetchNuGet { pname = "System.Runtime.Numerics"; version = "4.3.0"; sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z"; })
(fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.1.1"; sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k"; })
(fetchNuGet { pname = "System.Security.AccessControl"; version = "4.5.0"; sha256 = "1wvwanz33fzzbnd2jalar0p0z3x0ba53vzx1kazlskp7pwyhlnq0"; })
(fetchNuGet { pname = "System.Security.AccessControl"; version = "4.7.0"; sha256 = "0n0k0w44flkd8j0xw7g3g3vhw7dijfm51f75xkm1qxnbh4y45mpz"; })
(fetchNuGet { pname = "System.Security.AccessControl"; version = "5.0.0"; sha256 = "17n3lrrl6vahkqmhlpn3w20afgz09n7i6rv0r3qypngwi7wqdr5r"; })
(fetchNuGet { pname = "System.Security.Claims"; version = "4.3.0"; sha256 = "0jvfn7j22l3mm28qjy3rcw287y9h65ha4m940waaxah07jnbzrhn"; })
(fetchNuGet { pname = "System.Security.Cryptography.Algorithms"; version = "4.2.0"; sha256 = "148s9g5dgm33ri7dnh19s4lgnlxbpwvrw2jnzllq2kijj4i4vs85"; })
(fetchNuGet { pname = "System.Security.Cryptography.Algorithms"; version = "4.3.0"; sha256 = "03sq183pfl5kp7gkvq77myv7kbpdnq3y0xj7vi4q1kaw54sny0ml"; })
(fetchNuGet { pname = "System.Security.Cryptography.Cng"; version = "4.2.0"; sha256 = "118jijz446kix20blxip0f0q8mhsh9bz118mwc2ch1p6g7facpzc"; })
(fetchNuGet { pname = "System.Security.Cryptography.Cng"; version = "4.3.0"; sha256 = "1k468aswafdgf56ab6yrn7649kfqx2wm9aslywjam1hdmk5yypmv"; })
(fetchNuGet { pname = "System.Security.Cryptography.Csp"; version = "4.0.0"; sha256 = "1cwv8lqj8r15q81d2pz2jwzzbaji0l28xfrpw29kdpsaypm92z2q"; })
(fetchNuGet { pname = "System.Security.Cryptography.Csp"; version = "4.3.0"; sha256 = "1x5wcrddf2s3hb8j78cry7yalca4lb5vfnkrysagbn6r9x6xvrx1"; })
(fetchNuGet { pname = "System.Security.Cryptography.Encoding"; version = "4.0.0"; sha256 = "0a8y1a5wkmpawc787gfmnrnbzdgxmx1a14ax43jf3rj9gxmy3vk4"; })
(fetchNuGet { pname = "System.Security.Cryptography.Encoding"; version = "4.3.0"; sha256 = "1jr6w70igqn07k5zs1ph6xja97hxnb3mqbspdrff6cvssgrixs32"; })
(fetchNuGet { pname = "System.Security.Cryptography.OpenSsl"; version = "4.0.0"; sha256 = "16sx3cig3d0ilvzl8xxgffmxbiqx87zdi8fc73i3i7zjih1a7f4q"; })
(fetchNuGet { pname = "System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0givpvvj8yc7gv4lhb6s1prq6p2c4147204a0wib89inqzd87gqc"; })
(fetchNuGet { pname = "System.Security.Cryptography.Primitives"; version = "4.0.0"; sha256 = "0i7cfnwph9a10bm26m538h5xcr8b36jscp9sy1zhgifksxz4yixh"; })
(fetchNuGet { pname = "System.Security.Cryptography.Primitives"; version = "4.3.0"; sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby"; })
(fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "4.3.0"; sha256 = "1kg264xmqabyz8gfg8ymp6qp6aw43vawfp0znf0909d7b5jd3dq9"; })
(fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "4.4.0"; sha256 = "1q8ljvqhasyynp94a1d7jknk946m20lkwy2c3wa8zw2pc517fbj6"; })
(fetchNuGet { pname = "System.Security.Cryptography.X509Certificates"; version = "4.1.0"; sha256 = "0clg1bv55mfv5dq00m19cp634zx6inm31kf8ppbq1jgyjf2185dh"; })
(fetchNuGet { pname = "System.Security.Cryptography.X509Certificates"; version = "4.3.0"; sha256 = "0valjcz5wksbvijylxijjxb1mp38mdhv03r533vnx1q3ikzdav9h"; })
(fetchNuGet { pname = "System.Security.Permissions"; version = "4.5.0"; sha256 = "192ww5rm3c9mirxgl1nzyrwd18am3izqls0hzm0fvcdjl5grvbhm"; })
(fetchNuGet { pname = "System.Security.Permissions"; version = "4.7.0"; sha256 = "13f366sj36jwbvld957gk2q64k2xbj48r8b0k9avrri2nlq1fs04"; })
(fetchNuGet { pname = "System.Security.Principal"; version = "4.3.0"; sha256 = "12cm2zws06z4lfc4dn31iqv7072zyi4m910d4r6wm8yx85arsfxf"; })
(fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.3.0"; sha256 = "00a0a7c40i3v4cb20s2cmh9csb5jv2l0frvnlzyfxh848xalpdwr"; })
(fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.5.0"; sha256 = "0rmj89wsl5yzwh0kqjgx45vzf694v9p92r4x4q6yxldk1cv1hi86"; })
(fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.7.0"; sha256 = "1a56ls5a9sr3ya0nr086sdpa9qv0abv31dd6fp27maqa9zclqq5d"; })
(fetchNuGet { pname = "System.Security.Principal.Windows"; version = "5.0.0"; sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8"; })
(fetchNuGet { pname = "System.Text.Encoding"; version = "4.0.11"; sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw"; })
(fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
(fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.5.1"; sha256 = "1z21qyfs6sg76rp68qdx0c9iy57naan89pg7p6i3qpj8kyzn921w"; })
(fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "7.0.0"; sha256 = "0sn6hxdjm7bw3xgsmg041ccchsa4sp02aa27cislw3x61dbr68kq"; })
(fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.0.11"; sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs"; })
(fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; })
(fetchNuGet { pname = "System.Text.Encodings.Web"; version = "6.0.0"; sha256 = "06n9ql3fmhpjl32g3492sj181zjml5dlcc5l76xq2h38c4f87sai"; })
(fetchNuGet { pname = "System.Text.Encodings.Web"; version = "8.0.0"; sha256 = "1wbypkx0m8dgpsaqgyywz4z760xblnwalb241d5qv9kx8m128i11"; })
(fetchNuGet { pname = "System.Text.Json"; version = "6.0.0"; sha256 = "1si2my1g0q0qv1hiqnji4xh9wd05qavxnzj9dwgs23iqvgjky0gl"; })
(fetchNuGet { pname = "System.Text.Json"; version = "8.0.0"; sha256 = "134savxw0sq7s448jnzw17bxcijsi1v38mirpbb6zfxmqlf04msw"; })
(fetchNuGet { pname = "System.Text.Json"; version = "8.0.3"; sha256 = "0jkl986gnh2a39v5wbab47qyh1g9a64dgh5s67vppcay8hd42c4n"; })
(fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.1.0"; sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7"; })
(fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.3.0"; sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l"; })
(fetchNuGet { pname = "System.Threading"; version = "4.0.11"; sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls"; })
(fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
(fetchNuGet { pname = "System.Threading.Channels"; version = "7.0.0"; sha256 = "1qrmqa6hpzswlmyp3yqsbnmia9i5iz1y208xpqc1y88b1f6j1v8a"; })
(fetchNuGet { pname = "System.Threading.Tasks"; version = "4.0.11"; sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5"; })
(fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
(fetchNuGet { pname = "System.Threading.Tasks.Dataflow"; version = "4.6.0"; sha256 = "0a1davr71wssyn4z1hr75lk82wqa0daz0vfwkmg1fm3kckfd72k1"; })
(fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.0.0"; sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr"; })
(fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.3.0"; sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z"; })
(fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
(fetchNuGet { pname = "System.Threading.Thread"; version = "4.3.0"; sha256 = "0y2xiwdfcph7znm2ysxanrhbqqss6a3shi1z3c779pj2s523mjx4"; })
(fetchNuGet { pname = "System.Threading.ThreadPool"; version = "4.3.0"; sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1"; })
(fetchNuGet { pname = "System.Threading.Timer"; version = "4.0.1"; sha256 = "15n54f1f8nn3mjcjrlzdg6q3520571y012mx7v991x2fvp73lmg6"; })
(fetchNuGet { pname = "System.Threading.Timer"; version = "4.3.0"; sha256 = "1nx773nsx6z5whv8kaa1wjh037id2f1cxhb69pvgv12hd2b6qs56"; })
(fetchNuGet { pname = "System.ValueTuple"; version = "4.5.0"; sha256 = "00k8ja51d0f9wrq4vv5z2jhq8hy31kac2rg0rv06prylcybzl8cy"; })
(fetchNuGet { pname = "System.Windows.Extensions"; version = "4.7.0"; sha256 = "11dmyx3j0jafjx5r9mkj1v4w2a4rzrdn8fgwm2d1g7fs1ayqcvy9"; })
(fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.0.11"; sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5"; })
(fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.3.0"; sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1"; })
(fetchNuGet { pname = "System.Xml.XDocument"; version = "4.0.11"; sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18"; })
(fetchNuGet { pname = "System.Xml.XDocument"; version = "4.3.0"; sha256 = "08h8fm4l77n0nd4i4fk2386y809bfbwqb7ih9d7564ifcxr5ssxd"; })
(fetchNuGet { pname = "TestableIO.System.IO.Abstractions"; version = "19.1.5"; sha256 = "0c4iis3zdmkmhy5mnkq18qyb56a1w3lzp39k0mpsdajal82bzmva"; })
(fetchNuGet { pname = "TestableIO.System.IO.Abstractions"; version = "19.2.1"; sha256 = "0b5grv4pqjyz9qwfpfaycgizcy392csdf3yrdqsvlimk8g1j968x"; })
(fetchNuGet { pname = "TestableIO.System.IO.Abstractions.Wrappers"; version = "19.1.5"; sha256 = "1igvpn8crzbv53x6kc1dbyp0ljlzbxhzzas3yzq2ya0lhqf3g2jl"; })
(fetchNuGet { pname = "TestableIO.System.IO.Abstractions.Wrappers"; version = "19.2.1"; sha256 = "0n57wg3sb0m635c1hlqh2klhc3rsgsx7l503g384kvafp3bcgdxl"; })
(fetchNuGet { pname = "Tmds.DBus.Protocol"; version = "0.15.0"; sha256 = "0d99kcs7r9cp6gpyc7z230czkkyx4164x86dhy0mca73f2ykc2g2"; })
(fetchNuGet { pname = "TransparentValueObjects"; version = "1.0.1"; sha256 = "1c7ygykkvfwibj8an2xnf0fqldfd3pv0qgchi7nlr9zl70vcjfcx"; })
(fetchNuGet { pname = "Validation"; version = "2.4.18"; sha256 = "0ljc5bzz3h00ba0iwf1y3wgdpzflwafnj4gjb0jmiagc51ai68h7"; })
(fetchNuGet { pname = "ValveKeyValue"; version = "0.8.2.162"; sha256 = "1f1vmvvrqq4m96y3r6bwfz0qipqacf4h3rh367b5h4x578lwbjin"; })
(fetchNuGet { pname = "ValveKeyValue"; version = "0.9.0.267"; sha256 = "1i25kjh06dv93700s03miv3p9ay4zhw32d0hxdzzd2aszag6ppnp"; })
(fetchNuGet { pname = "Verify"; version = "21.3.0"; sha256 = "1qc61h7ga1d0qmhvhxz90fdq1sylg4w0risgj8vwn7qbxapvg8z8"; })
(fetchNuGet { pname = "Verify"; version = "23.2.1"; sha256 = "0qi86z0m9hgv7pv9jq20sra9j3wqdfx39s384pbrfbbbg9h42d09"; })
(fetchNuGet { pname = "Verify"; version = "23.5.0"; sha256 = "14wsn6nwywqlcrb9shvy2wviklhl5dsz0g4xsy2driwmn45l67mw"; })
(fetchNuGet { pname = "Verify.ImageMagick"; version = "3.3.0"; sha256 = "15lgc11l55gq2rz25448d2kjafw3555vmcppmxys1grgiwhy93rh"; })
(fetchNuGet { pname = "Verify.SourceGenerators"; version = "2.2.0"; sha256 = "0rf2rc7z7r2z02l2rp3h7481nlb6qp7ksh24j2jagmjs264k9qhq"; })
(fetchNuGet { pname = "Verify.Xunit"; version = "23.5.0"; sha256 = "05bclxkd1g50s3mb66r11fsqhz2fmc6n76vas6f364g8rsk4n083"; })
(fetchNuGet { pname = "Vogen"; version = "3.0.20"; sha256 = "0z43k2g18f4sq804lvaya6q8r249p2n1fbxnl3a61a0vx7sx73i9"; })
(fetchNuGet { pname = "Vogen"; version = "3.0.24"; sha256 = "1531iavcjfkz64yxm3634wh88laj9vxiagr3krxfmwx08ggzzg3s"; })
(fetchNuGet { pname = "xunit"; version = "2.7.0"; sha256 = "0qs7yaz8qdhi75is7grgdxwxm09j36wv9c2ifyj2xd5jfzvlkc71"; })
(fetchNuGet { pname = "xunit.abstractions"; version = "2.0.1"; sha256 = "0c7zkf3i8n1mhc457q859klk067bw1xbf31lyxlwc5hlx9aqz65z"; })
(fetchNuGet { pname = "xunit.abstractions"; version = "2.0.2"; sha256 = "1cfpdhzrmqywsg8w899w9x5bxbhszipsm4791il1gf7cdq4hz463"; })
(fetchNuGet { pname = "xunit.abstractions"; version = "2.0.3"; sha256 = "00wl8qksgkxld76fgir3ycc5rjqv1sqds6x8yx40927q5py74gfh"; })
(fetchNuGet { pname = "xunit.analyzers"; version = "1.11.0"; sha256 = "0qfmc6s5g2cnfvbdp837jvkgk1sq7hrql8bip6qjsy33liqwfx2m"; })
(fetchNuGet { pname = "xunit.assert"; version = "2.3.0"; sha256 = "07z9xhad8r3lii3p4y6qfn2daqxp1pxqx559l6k7b80h864qvpwl"; })
(fetchNuGet { pname = "xunit.assert"; version = "2.7.0"; sha256 = "14g5pvv709ykkz3lgqbdisksqfll72792fkrg4qr0s8jcp38kpyc"; })
(fetchNuGet { pname = "xunit.core"; version = "2.7.0"; sha256 = "0s31kxc383xa9132hz9nkm21d10xvay78yzpnz2pabaxld2mwdz9"; })
(fetchNuGet { pname = "Xunit.DependencyInjection"; version = "8.9.1"; sha256 = "1shcda3055g2hcbjcz790gxh0009ac91rl0lfxajaim6bkkgsd02"; })
(fetchNuGet { pname = "Xunit.DependencyInjection.Logging"; version = "8.1.0"; sha256 = "019h3pwbhzq1pnivl2prwsb5ssj572884d5y3w65cigfysmifjs7"; })
(fetchNuGet { pname = "Xunit.DependencyInjection.SkippableFact"; version = "8.1.0"; sha256 = "0f656lrmpn6nnpymvikbrn5j4kl9xzlcq98n5wssy5b2xx1ikh0p"; })
(fetchNuGet { pname = "xunit.extensibility.core"; version = "2.2.0"; sha256 = "0l9fl09l709dq671r5yvmcrk9vhxgszmxf3ny1h9ja2sp9xx5pbs"; })
(fetchNuGet { pname = "xunit.extensibility.core"; version = "2.4.0"; sha256 = "0qd834mv1017j13bjz7g0byiiqzpflnnqhm15zvnk309q48rgfrd"; })
(fetchNuGet { pname = "xunit.extensibility.core"; version = "2.4.2"; sha256 = "1h0a62xddsd82lljfjldn1nqy17imga905jb7j0ddr10wi8cqm62"; })
(fetchNuGet { pname = "xunit.extensibility.core"; version = "2.7.0"; sha256 = "0n4xc0fmj9a7rhsavs66n292g4vx5bsa27566k2g5dak4x1lvdv8"; })
(fetchNuGet { pname = "xunit.extensibility.execution"; version = "2.4.0"; sha256 = "0bpy9iw4dkx884ld10dlijlyfp13afxrb3akhprdvazhmh8lj53j"; })
(fetchNuGet { pname = "xunit.extensibility.execution"; version = "2.4.2"; sha256 = "0r9gczqz4bc59cwl6d6wali6pvlw210i97chc1nlwn2qh383m54p"; })
(fetchNuGet { pname = "xunit.extensibility.execution"; version = "2.7.0"; sha256 = "1pmgl10wipvzq739gmlwdcmicpshb6620v1180p8yhham36ppy5i"; })
(fetchNuGet { pname = "xunit.runner.visualstudio"; version = "2.5.7"; sha256 = "07wan383cbxldlczjrxcn8s75jc7i2yv70s8sghv8n860mfsks96"; })
(fetchNuGet { pname = "Xunit.SkippableFact"; version = "1.4.13"; sha256 = "1z0mxzjxlsfh34mymrnkc4wvcn0j7xwq6mcdsl7ack58zp9p3fx4"; })
]

View File

@ -0,0 +1,119 @@
{ _7zz
, buildDotnetModule
, copyDesktopItems
, desktop-file-utils
, dotnetCorePackages
, fetchFromGitHub
, fontconfig
, lib
, libICE
, libSM
, libX11
, nexusmods-app
, runCommand
, enableUnfree ? false # Set to true to support RAR format mods
}:
let
_7zzWithOptionalUnfreeRarSupport = _7zz.override {
inherit enableUnfree;
};
in
buildDotnetModule rec {
pname = "nexusmods-app";
version = "0.4.1";
src = fetchFromGitHub {
owner = "Nexus-Mods";
repo = "NexusMods.App";
rev = "v${version}";
fetchSubmodules = true;
hash = "sha256-FzQphMhiC1g+6qmk/R1v4rq2ldy35NcaWm0RR1UlwLA=";
};
projectFile = "NexusMods.App.sln";
nativeBuildInputs = [
copyDesktopItems
];
nugetDeps = ./deps.nix;
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.runtime_8_0;
preConfigure = ''
substituteInPlace Directory.Build.props \
--replace '</PropertyGroup>' '<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles></PropertyGroup>'
'';
postPatch = ''
ln --force --symbolic "${lib.getExe _7zzWithOptionalUnfreeRarSupport}" src/ArchiveManagement/NexusMods.FileExtractor/runtimes/linux-x64/native/7zz
'';
makeWrapperArgs = [
"--prefix PATH : ${lib.makeBinPath [desktop-file-utils]}"
"--set APPIMAGE $out/bin/${meta.mainProgram}" # Make associating with nxm links work on Linux
];
runtimeDeps = [
fontconfig
libICE
libSM
libX11
];
executables = [
nexusmods-app.meta.mainProgram
];
doCheck = true;
dotnetTestFlags = [
"--environment=USER=nobody"
(lib.strings.concatStrings [
"--filter="
(lib.strings.concatStrings (lib.strings.intersperse "&" ([
"Category!=Disabled"
"FlakeyTest!=True"
"RequiresNetworking!=True"
"FullyQualifiedName!=NexusMods.UI.Tests.ImageCacheTests.Test_LoadAndCache_RemoteImage"
"FullyQualifiedName!=NexusMods.UI.Tests.ImageCacheTests.Test_LoadAndCache_ImageStoredFile"
] ++ lib.optionals (! enableUnfree) [
"FullyQualifiedName!=NexusMods.Games.FOMOD.Tests.FomodXmlInstallerTests.InstallsFilesSimple_UsingRar"
])))
])
];
passthru = {
tests = {
serve = runCommand "${pname}-test-serve" { } ''
${nexusmods-app}/bin/${nexusmods-app.meta.mainProgram}
touch $out
'';
help = runCommand "${pname}-test-help" { } ''
${nexusmods-app}/bin/${nexusmods-app.meta.mainProgram} --help
touch $out
'';
associate-nxm = runCommand "${pname}-test-associate-nxm" { } ''
${nexusmods-app}/bin/${nexusmods-app.meta.mainProgram} associate-nxm
touch $out
'';
list-tools = runCommand "${pname}-test-list-tools" { } ''
${nexusmods-app}/bin/${nexusmods-app.meta.mainProgram} list-tools
touch $out
'';
};
updateScript = ./update.bash;
};
meta = {
description = "Game mod installer, creator and manager";
mainProgram = "NexusMods.App";
homepage = "https://github.com/Nexus-Mods/NexusMods.App";
changelog = "https://github.com/Nexus-Mods/NexusMods.App/releases/tag/${src.rev}";
license = [ lib.licenses.gpl3Plus ];
maintainers = [ lib.maintainers.l0b0 ];
platforms = lib.platforms.linux;
};
}

View File

@ -0,0 +1,9 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=./. -i bash -p nix-update
#shellcheck shell=bash
set -o errexit -o nounset -o pipefail
package=nexusmods-app
nix-update "$package"
"$(nix-build --attr "$package".fetch-deps --no-out-link)"

View File

@ -1 +1 @@
2024-03-01
2024-05-28

View File

@ -1,26 +1,27 @@
# This file has been autogenerate with cabal2nix.
# Update via ./update.sh
{ mkDerivation, base, cmdargs, directory, fetchzip, filepath, lib
, megaparsec, mtl, parser-combinators, safe-exceptions, scientific
, text, transformers, unix
, megaparsec, mtl, parser-combinators, pretty-simple
, safe-exceptions, scientific, text, transformers, unix
}:
mkDerivation {
pname = "nixfmt";
version = "0.5.0";
version = "0.6.0";
src = fetchzip {
url = "https://github.com/piegamesde/nixfmt/archive/2b5ee820690bae64cb4003e46917ae43541e3e0b.tar.gz";
sha256 = "1i1jbc1q4gd7fpilwy6s3a583yl5l8d8rlmipygj61mpclg9ihqg";
url = "https://github.com/nixos/nixfmt/archive/c67a7b65906bd2432730929bd0e4957659c95b8e.tar.gz";
sha256 = "03f00vwlla6i3m125389h3xjsl5xm07630ahm4w5gqwq1007y3r2";
};
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
base megaparsec mtl parser-combinators scientific text transformers
base megaparsec mtl parser-combinators pretty-simple scientific
text transformers
];
executableHaskellDepends = [
base cmdargs directory filepath safe-exceptions text unix
];
jailbreak = true;
homepage = "https://github.com/serokell/nixfmt";
homepage = "https://github.com/NixOS/nixfmt";
description = "An opinionated formatter for Nix";
license = lib.licenses.mpl20;
mainProgram = "nixfmt";

View File

@ -14,13 +14,6 @@ let
passthru.updateScript = ./update.sh;
patches = [
(fetchpatch {
url = "https://github.com/serokell/nixfmt/commit/ca9c8975ed671112fdfce94f2e9e2ad3de480c9a.patch";
hash = "sha256-UOSAYahSKBsqPMVcQJ3H26Eg2xpPAsNOjYMI6g+WTYU=";
})
];
maintainers = lib.teams.formatter.members;
# These tests can be run with the following command.

Some files were not shown because too many files have changed in this diff Show More