From 96988d7f688f161e685f6fd4a048c887d5c20cbb Mon Sep 17 00:00:00 2001 From: Thomas Jensen <32744171+Mast3rwaf1z@users.noreply.github.com> Date: Tue, 4 Mar 2025 20:37:57 +0100 Subject: [PATCH] added packages and inputs (#4) * added packages and inputs * fixed yaml * fixed yaml * fixed hashes --- .github/workflows/nix-build.yml | 23 ++ .gitignore | 1 + flake.lock | 245 +++++++++++++++++ flake.nix | 38 +++ lib/default.nix | 7 + packages/banner/default.nix | 12 + packages/default.nix | 6 + packages/external/default.nix | 6 + packages/external/lavalink/default.nix | 19 ++ packages/external/lavalink/lavalink.yml | 43 +++ packages/external/sketch-bot/default.nix | 18 ++ packages/external/sketch-bot/deps.nix | 320 +++++++++++++++++++++++ packages/wallpaper/default.nix | 32 +++ packages/wallpaper/overlay.py | 59 +++++ 14 files changed, 829 insertions(+) create mode 100644 .github/workflows/nix-build.yml create mode 100644 .gitignore create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 lib/default.nix create mode 100644 packages/banner/default.nix create mode 100644 packages/default.nix create mode 100644 packages/external/default.nix create mode 100644 packages/external/lavalink/default.nix create mode 100644 packages/external/lavalink/lavalink.yml create mode 100644 packages/external/sketch-bot/default.nix create mode 100644 packages/external/sketch-bot/deps.nix create mode 100644 packages/wallpaper/default.nix create mode 100644 packages/wallpaper/overlay.py diff --git a/.github/workflows/nix-build.yml b/.github/workflows/nix-build.yml new file mode 100644 index 0000000..64c9255 --- /dev/null +++ b/.github/workflows/nix-build.yml @@ -0,0 +1,23 @@ +name: build nix packages + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + strategy: + matrix: + package: [ putricide, rp-utils, folkevognen, homepage, sketch-bot, lavalink, tools.wallpaper, tools.banner ] + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4.1.1 + - name: Install nix + uses: DeterminateSystems/nix-installer-action@main + - name: Nix cache + uses: DeterminateSystems/magic-nix-cache-action@main + - name: build system + run: nix build .#${{ matrix.package }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2be92b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +result diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..1a529a1 --- /dev/null +++ b/flake.lock @@ -0,0 +1,245 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "folkevognen": { + "inputs": { + "gradle2nix": "gradle2nix", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741112785, + "narHash": "sha256-O+YgH0PX8a63hE3K4QWqTakYRgeaWNQMNBu4LVe5nr8=", + "owner": "Skademaskinen", + "repo": "Folkevognen", + "rev": "fed49dc4ea96da26137ec3075b265cec04538055", + "type": "github" + }, + "original": { + "owner": "Skademaskinen", + "repo": "Folkevognen", + "type": "github" + } + }, + "gradle2nix": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "folkevognen", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1738375406, + "narHash": "sha256-dvJxvDZCDnh4pY5T99thmQOqjnEeXmMAUeC0Hc4T7U4=", + "owner": "tadfisher", + "repo": "gradle2nix", + "rev": "2ca058c5b7f3b37f0c11258a78bd0110a675caae", + "type": "github" + }, + "original": { + "owner": "tadfisher", + "ref": "v2", + "repo": "gradle2nix", + "type": "github" + } + }, + "gradle2nix_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "rp-utils", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1738375406, + "narHash": "sha256-dvJxvDZCDnh4pY5T99thmQOqjnEeXmMAUeC0Hc4T7U4=", + "owner": "tadfisher", + "repo": "gradle2nix", + "rev": "2ca058c5b7f3b37f0c11258a78bd0110a675caae", + "type": "github" + }, + "original": { + "owner": "tadfisher", + "ref": "v2", + "repo": "gradle2nix", + "type": "github" + } + }, + "homepage": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741113773, + "narHash": "sha256-ULsIBVZ2blXrwizNR8WcPU1VRNhVZT8xQOtIFB/FBwg=", + "owner": "Skademaskinen", + "repo": "homepage", + "rev": "38db17fb42d0958f5380cbf167916f9b6cd36f28", + "type": "github" + }, + "original": { + "owner": "Skademaskinen", + "repo": "homepage", + "type": "github" + } + }, + "nix-velocity": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741112655, + "narHash": "sha256-A4qOkNsSnuPt+tg3Dn86W3fd895/NHIt83aGF2gEhgs=", + "owner": "Skademaskinen", + "repo": "nix-velocity", + "rev": "35e308546a92ffe42f6b45ece4cae52d567c3c0a", + "type": "github" + }, + "original": { + "owner": "Skademaskinen", + "repo": "nix-velocity", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1741010256, + "narHash": "sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ba487dbc9d04e0634c64e3b1f0d25839a0a68246", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "putricide": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741112290, + "narHash": "sha256-xkKelk7tJdh06R744tkWU7jfwUaNaXo2Io+uqpf/Pls=", + "owner": "Skademaskinen", + "repo": "Putricide", + "rev": "89d4d81460a7f9ac1f9179706e15e11f85fd3603", + "type": "github" + }, + "original": { + "owner": "Skademaskinen", + "repo": "Putricide", + "type": "github" + } + }, + "root": { + "inputs": { + "folkevognen": "folkevognen", + "homepage": "homepage", + "nix-velocity": "nix-velocity", + "nixpkgs": "nixpkgs", + "putricide": "putricide", + "rp-utils": "rp-utils" + } + }, + "rp-utils": { + "inputs": { + "gradle2nix": "gradle2nix_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741112887, + "narHash": "sha256-MBvheZYLxU5H4DKsnS+KnW8NQ2BGQbQ6OXzAspdeO9k=", + "owner": "Skademaskinen", + "repo": "RP-Utils", + "rev": "a7f836ac988cc41a9a1add517df7610c99b56b5a", + "type": "github" + }, + "original": { + "owner": "Skademaskinen", + "repo": "RP-Utils", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..595e911 --- /dev/null +++ b/flake.nix @@ -0,0 +1,38 @@ +{ + description = "NixOS modules and packages for personal use"; + inputs = { + nixpkgs.url = "nixpkgs/nixos-unstable"; + # i would use the // operator together with builtins.mapAttrs, but noooo, inputs are cursed + homepage = { + url = "github:Skademaskinen/homepage"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + rp-utils = { + url = "github:Skademaskinen/RP-Utils"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + putricide = { + url = "github:Skademaskinen/Putricide"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nix-velocity = { + url = "github:Skademaskinen/nix-velocity"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + folkevognen = { + url = "github:Skademaskinen/Folkevognen"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = inputs@{ self, nixpkgs, ... }: let + lib = import ./lib; + in { + packages = lib // lib.eachSystem (system: { + homepage = inputs.homepage.packages.${system}.default; + rp-utils = inputs.rp-utils.packages.${system}.default; + putricide = inputs.putricide.packages.${system}.default; + folkevognen = inputs.folkevognen.packages.${system}.default; + } // import ./packages { pkgs = import nixpkgs { inherit system; }; }); + }; +} diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..27d4eaa --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,7 @@ +# library functions, this is completely independant of nixpkgs +{ + eachSystem = drv: builtins.mapAttrs (system: _: drv system) { + "x86_64-linux" = ""; + "aarch64-linux" = ""; + }; +} diff --git a/packages/banner/default.nix b/packages/banner/default.nix new file mode 100644 index 0000000..bcfa857 --- /dev/null +++ b/packages/banner/default.nix @@ -0,0 +1,12 @@ +{pkgs, name ? "test", ...}: pkgs.stdenv.mkDerivation { + name = "banner"; + pname = "banner"; + src = null; + dontUnpack = true; + installPhase = '' + ${pkgs.figlet}/bin/figlet "${name}" > $out + echo "Last rebuild: $(date)" >> $out + echo "" >> $out + echo "Written by: Mast3r_waf1z" >> $out + ''; +} diff --git a/packages/default.nix b/packages/default.nix new file mode 100644 index 0000000..23e57c5 --- /dev/null +++ b/packages/default.nix @@ -0,0 +1,6 @@ +{pkgs, ...}: + +{ + tools.wallpaper = import ./wallpaper { inherit pkgs; }; + tools.banner = import ./banner { inherit pkgs; }; +} // import ./external { inherit pkgs; } diff --git a/packages/external/default.nix b/packages/external/default.nix new file mode 100644 index 0000000..04d7c9c --- /dev/null +++ b/packages/external/default.nix @@ -0,0 +1,6 @@ +{pkgs}: + +{ + sketch-bot = import ./sketch-bot { inherit pkgs; }; + lavalink = import ./lavalink { inherit pkgs; }; +} diff --git a/packages/external/lavalink/default.nix b/packages/external/lavalink/default.nix new file mode 100644 index 0000000..d401b12 --- /dev/null +++ b/packages/external/lavalink/default.nix @@ -0,0 +1,19 @@ +{pkgs}: + +pkgs.stdenv.mkDerivation rec { + name = "lavalink"; + version = "4.0.4"; + pname = "lavalink"; + + src = pkgs.fetchurl { + url = "https://github.com/lavalink-devs/Lavalink/releases/download/${version}/Lavalink.jar"; + sha256 = "sha256-bfdzKJW5wUZmB9VNMg0rlVIOwp1qxEWKugic9fvz4Wc="; + }; + dontUnpack = true; + installPhase = '' + mkdir -p $out/bin + mkdir -p $out/share/lavalink + cp $src $out/bin/lavalink + echo "${builtins.readFile ./lavalink.yml}" > $out/share/lavalink/application.yml + ''; +} diff --git a/packages/external/lavalink/lavalink.yml b/packages/external/lavalink/lavalink.yml new file mode 100644 index 0000000..210e60d --- /dev/null +++ b/packages/external/lavalink/lavalink.yml @@ -0,0 +1,43 @@ +server: # REST and WS server + port: 2333 + address: 0.0.0.0 +spring: + main: + banner-mode: log +lavalink: + server: + password: "youshallnotpass" + sources: + youtube: true + bandcamp: true + soundcloud: true + twitch: true + vimeo: true + mixer: true + http: true + local: false + bufferDurationMs: 400 + youtubePlaylistLoadLimit: 6 # Number of pages at 100 each + gc-warnings: true + noReplace: false + +metrics: + prometheus: + enabled: false + endpoint: /metrics + +sentry: + dsn: "" +# tags: +# some_key: some_value +# another_key: another_value + +logging: + file: + max-history: 30 + max-size: 1GB + path: ./logs/ + + level: + root: INFO + lavalink: INFO \ No newline at end of file diff --git a/packages/external/sketch-bot/default.nix b/packages/external/sketch-bot/default.nix new file mode 100644 index 0000000..ade31e1 --- /dev/null +++ b/packages/external/sketch-bot/default.nix @@ -0,0 +1,18 @@ +{pkgs, ...}: let + name = "SketchBot"; +in pkgs.buildDotnetModule { + name = name; + pname = name; + src = pkgs.fetchFromGitHub { + owner = "Taoshix"; + repo = name; + rev = "e0c2db3c137fcea394fd77c78da8083f13196971"; + sha256 = "19nfdni8chqixa5vjzgwhfar7sjkkq0bzyjwkk1jd37fl311n7b7"; + }; + dotnet-sdk = pkgs.dotnet-sdk_8; + dotnet-runtime = pkgs.dotnet-runtime_8; + nugetDeps = ./deps.nix; + + projectFile = "${name}/${name}.csproj"; + +} diff --git a/packages/external/sketch-bot/deps.nix b/packages/external/sketch-bot/deps.nix new file mode 100644 index 0000000..b3a9079 --- /dev/null +++ b/packages/external/sketch-bot/deps.nix @@ -0,0 +1,320 @@ +# This file was automatically generated by passthru.fetch-deps. +# Please dont edit it manually, your changes might get overwritten! + +{ fetchNuGet }: [ + (fetchNuGet { pname = "BouncyCastle.Cryptography"; version = "2.2.1"; sha256 = "13fx7cg5hmk2y33438wjz0c74c0lvbmh8fa33gwldldmf72mwcr8"; }) + (fetchNuGet { pname = "Discord.Addons.Preconditions"; version = "2.2.0-dev3"; sha256 = "0m14qw8s7s34hgsnmj0vrq8gj34p1g3cfph394dg7fb541rhzcd0"; }) + (fetchNuGet { pname = "Discord.Net"; version = "3.14.1"; sha256 = "0nz9ifz1s0m6qim6ahlsb60935ksn6416isc6wfsyw2013zvp74r"; }) + (fetchNuGet { pname = "Discord.Net.Commands"; version = "2.1.1"; sha256 = "1cixhr5n94jnqdyk2m7sycmkp853c9x5b4jq3yb9g4mkvrrw074p"; }) + (fetchNuGet { pname = "Discord.Net.Commands"; version = "3.14.1"; sha256 = "1sbhfs7zbsc51w2y9b74zf25cyb4ccpwhc23n8hsggh8c50fh2f2"; }) + (fetchNuGet { pname = "Discord.Net.Core"; version = "2.1.1"; sha256 = "05pimq89dsh3q30h930556qd01gx8jb13z8pqfj4swn099vcgjhx"; }) + (fetchNuGet { pname = "Discord.Net.Core"; version = "3.14.1"; sha256 = "0ybqr9i5dyadi1wgs03y795rivvji6ga9l63yn06vfc89qgiznq3"; }) + (fetchNuGet { pname = "Discord.Net.Core"; version = "3.8.1"; sha256 = "0gmzkjw77wkw5mxl4p90jkcr7hrvamh3x8v60plbpi6vwf10igr9"; }) + (fetchNuGet { pname = "Discord.Net.Interactions"; version = "3.14.1"; sha256 = "07v4b5l0w50kdc35ajzhlkpxpbqsnp13lsms31m3dprbprpvl4z7"; }) + (fetchNuGet { pname = "Discord.Net.Rest"; version = "2.1.1"; sha256 = "0yq81005ijmfxaxrzm54m04wv4gsivr9x0z0ah8mld7dhc3miy46"; }) + (fetchNuGet { pname = "Discord.Net.Rest"; version = "3.14.1"; sha256 = "19kljfpb87j1sd8qc0941c2fd98g9v04qn7kpsjm6x8lb7adrxzp"; }) + (fetchNuGet { pname = "Discord.Net.Rest"; version = "3.8.1"; sha256 = "1qfg99cm76iq0d21pfxzn696mhknwn683qaqk072s2g9m5rhgjha"; }) + (fetchNuGet { pname = "Discord.Net.Webhook"; version = "3.14.1"; sha256 = "0zsx2jix5j516svsvirw59r5pdsfyavhqyr7i8qjilgvy3bnvl49"; }) + (fetchNuGet { pname = "Discord.Net.WebSocket"; version = "2.1.1"; sha256 = "0kd4kpyxqg30dzlj1w4qv446mfhk5wavq6p9nxpwgyigjw2ycrql"; }) + (fetchNuGet { pname = "Discord.Net.WebSocket"; version = "3.14.1"; sha256 = "1xvwq9hcgqgpakagq5lrgrp7436gwyxskkg59jyxzl0f6793qgw0"; }) + (fetchNuGet { pname = "Discord.Net.WebSocket"; version = "3.8.1"; sha256 = "1nrmygdddnj25hfm5r3n96lm63mh7d69mbhl22ibych40mv5q2qj"; }) + (fetchNuGet { pname = "DiscordBotsList.Api"; version = "1.5.0"; sha256 = "1qywzpwlzh3gqhflajlfik3z8k6d1hbnkfgqwxyrgi46qm264yba"; }) + (fetchNuGet { pname = "DiscordBotsList.Api.Adapter.Discord.Net"; version = "1.4.5"; sha256 = "0wyz88d90cvip7y746gpbhrnfkhvn2wi49m0gj016aj2b2h45m33"; }) + (fetchNuGet { pname = "Google.Protobuf"; version = "3.25.1"; sha256 = "0zcw9vmv2bdai3zaip86s37lj3r5z4zvcs9mf5a9nih0hy4gzwsi"; }) + (fetchNuGet { pname = "ImgFlip4NET"; version = "1.0.0"; sha256 = "098flvafcv44s1gcy1ydpvx01b8464zq8nchyhd2c0ldapp9sqhb"; }) + (fetchNuGet { pname = "JikanDotNet"; version = "2.7.0"; sha256 = "09ll52a2gqhzaz2f9sf6yr4pam05xv4msrfbjk6h1j7hm7nli1wc"; }) + (fetchNuGet { pname = "K4os.Compression.LZ4"; version = "1.3.5"; sha256 = "1nv9inhz0n25lhkw9xgp6g5xbqmcdccdhx6mwrli0pdp6hjmlh9k"; }) + (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 = "Microsoft.Bcl.AsyncInterfaces"; version = "6.0.0"; sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; }) + (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.3.4"; sha256 = "0wd6v57p53ahz5z9zg4iyzmy3src7rlsncyqpcag02jjj1yx6g58"; }) + (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "4.10.0-2.final"; sha256 = "1jccy8nkzxfqb3nazj8y2nhyfhy6qgqqrkg6s7imrc55kff4xzwk"; }) + (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "4.10.0-2.final"; sha256 = "0w7avq6ff42j4pshiph73w96xdfp4k6lwy72hqk1c5xpxgq9x4ll"; }) + (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "4.10.0-2.final"; sha256 = "0k7d094zql9d74abzwvjqa47vylyxxn4bw8apkkca1ps83ark3iz"; }) + (fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "4.10.0-2.final"; sha256 = "15z3zg83x8fbjg0064xss1l8jkdp9mp4jfwgb0c2z8y2cblk7qys"; }) + (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.7.0"; sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Caching.Abstractions"; version = "1.1.2"; sha256 = "0gf4bpnnmk0mm1qwxv2w2xclbavwp0yx2ms4fp1ndc0d1k1v10lh"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Caching.Memory"; version = "1.1.2"; sha256 = "14665bla8xwbgjn5kl3kki0ch5pcn9pg60p087g0lpbhhpkcz3ws"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "9.0.0-preview.2.24128.5"; sha256 = "0f5nf960cz660d57p2ghqdnvk5p09y14g6ih8r6xblqx0l6d8fpy"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "7.0.0"; sha256 = "1as8cygz0pagg17w22nsf6mb49lr2mcl1x8i3ad1wi8lyzygy1a3"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "9.0.0-preview.2.24128.5"; sha256 = "1s24vrncyl0ppbb729h9a31j0lz6agd5dgrd6a96wq2lhm5zdin5"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "9.0.0-preview.2.24128.5"; sha256 = "0qrygfaigrn4fwnzykx07chfqa9nlklh1lihgq23jmp88xvc2x60"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.CommandLine"; version = "9.0.0-preview.2.24128.5"; sha256 = "0ymc0amb2n97wx94cvqlmln9pjhwffqqzg3xjclr81v97vpwcxvj"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.EnvironmentVariables"; version = "9.0.0-preview.2.24128.5"; sha256 = "0clyg1d6wadyhm3xj63imn8khf26idyl4vjk8z9zz3d0bywd4kz6"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.FileExtensions"; version = "9.0.0-preview.2.24128.5"; sha256 = "14yacjraisgsw0404b8k44w2nqzx6cpk33193wfcmyl0dm8iwlcg"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Json"; version = "9.0.0-preview.2.24128.5"; sha256 = "02c16mabbczwkiqr9b51xywaxd1k5xvzq5mzxjccnr12qbzf66f2"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.UserSecrets"; version = "9.0.0-preview.2.24128.5"; sha256 = "0kv660w1y45cc8683vqbc7rbf9cln643ypzixwxj3r8f70jhj7hj"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "9.0.0-preview.2.24128.5"; sha256 = "0nc7nqp79898m44jb9pcc4xw18y0dqn9ggjhhb7l5g2yhbwrzl0h"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "9.0.0-preview.2.24128.5"; sha256 = "11fa4plzs1vyjfl4by55qbffsmkx9sbfz06p8r9gc4y5ldr3bim0"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Diagnostics"; version = "9.0.0-preview.2.24128.5"; sha256 = "1m33slgzhqhqmd0mf378i89mga1a14js438n2wlwa7lvlc68s080"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Diagnostics.Abstractions"; version = "9.0.0-preview.2.24128.5"; sha256 = "1j4gzj88hvwp6lqz4jzzqh0wxx86km5640v65rvy4ifq69b8ici2"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "7.0.0"; sha256 = "0ff20yklyjgyjzdyv7sybczgqhgd557m05dbwxzjznr0x41b180d"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "9.0.0-preview.2.24128.5"; sha256 = "0ls2iw74199wsn296lnwfg295ryf4rwarrb2g5xnipd4laxarp5i"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Physical"; version = "9.0.0-preview.2.24128.5"; sha256 = "0zq6x44vfhw47v9qjhsjzyrbmgw83bgarahxazlzq3hyv0sr4s7h"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileSystemGlobbing"; version = "9.0.0-preview.2.24128.5"; sha256 = "10yph7mfwhapnyzfyg2bsa7x81v48khih9fk6hyxnbhib415v0fm"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Hosting"; version = "9.0.0-preview.2.24128.5"; sha256 = "0wfad030vmnlfzjjixgzj0bfdrkrh2n1x1mxlimw115waqmslp1b"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Hosting.Abstractions"; version = "7.0.0"; sha256 = "1h5szfsr1dalsvdj9c18y6362853chisfns0hfpsq44hz0pr8j9q"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Hosting.Abstractions"; version = "9.0.0-preview.2.24128.5"; sha256 = "04pac5si4f5npm51gfcmlgra5w164sbq5v6dxmc3n0wnv63a664c"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "9.0.0-preview.2.24128.5"; sha256 = "1bs4lkdwm6xxpw635vxd993g3sfk1dmhrqm098zk4jqdlh5apmbc"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "6.0.2"; sha256 = "1wv54f3p3r2zj1pr9a6z8zqrh2ihm6v6qcw2pjwis1lcc0qb472m"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "7.0.1"; sha256 = "0xv3sqc1lbx5j4yy6g2w3kakzvrpwqs2ihax6lqasj5sz5map6fk"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "9.0.0-preview.2.24128.5"; sha256 = "0i7q4lqpxqm9g2y2bg3kdcys83zxibx43mdzmnh6xcbz6n3p8jy8"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Configuration"; version = "9.0.0-preview.2.24128.5"; sha256 = "1y9azkg2v4angbxci0bgsav3h6hrc5qak5kfrq0x2hy8i65k593x"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Console"; version = "9.0.0-preview.2.24128.5"; sha256 = "0v9ls6bxhix2ckmkjc8a6cal3assis52ramllp2s1nljbxq6c7jw"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Debug"; version = "9.0.0-preview.2.24128.5"; sha256 = "0kan1a07aa2wkk5vpavhl72nq72r9wifishxrvxb60mq2gjw9gpz"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.EventLog"; version = "9.0.0-preview.2.24128.5"; sha256 = "0jxxwdbx3ahimpkkhyg1s6832hjhmgiffr47z5lg19i2rma2gjx5"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.EventSource"; version = "9.0.0-preview.2.24128.5"; sha256 = "0bc3yd7h5sfcq0ml8js4v9z6h4wr30zcc8j4l46k9g92bydm544z"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "1.1.2"; sha256 = "0mpyiq4abv05rbi5y94npp97nndv7f6vkgc35maf3n13f262322y"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "7.0.1"; sha256 = "0ghz4y4gxnf2vw8yvhz9nkw21p6q2qqwh19phkk1xwxywyilr3mq"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "9.0.0-preview.2.24128.5"; sha256 = "19270fhhv38zidm12666ld37pqx498s87b0nb5x1shw7kh930alg"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; version = "9.0.0-preview.2.24128.5"; sha256 = "04p5c8iycqsna05h8c2565w82g9j305fq2l3yzv2vlnixw2xs5nc"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "1.1.1"; sha256 = "0rcwxz1r89y96s8k3bmg0v6zdqanqfp09khy5l99wnl777y15g7x"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "7.0.0"; sha256 = "1b4km9fszid9vp2zb3gya5ni9fn8bq62bzaas2ck2r7gs0sdys80"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "9.0.0-preview.2.24128.5"; sha256 = "1vav2fgmhfbgg8qibs4csjmw68y0inqll1i5h0kl58dssls2gyhf"; }) + (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 = "1.1.1"; sha256 = "164wycgng4mi9zqi2pnsf1pq6gccbqvw6ib916mqizgjmd8f44pj"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "3.1.0"; sha256 = "1gc1x8f95wk8yhgznkwsg80adk1lc65v9n5rx4yaa4bc5dva0z3j"; }) + (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.Win32.Primitives"; version = "4.0.1"; sha256 = "1n8ap0cmljbqskxpf8fjzn7kh1vvlndsa75k01qig26mbw97k2q7"; }) + (fetchNuGet { pname = "Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; }) + (fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "4.7.0"; sha256 = "0pjll2a62hc576hd4wgyasva0lp733yllmk54n37svz5ac7nfz0q"; }) + (fetchNuGet { pname = "morelinq"; version = "4.1.0"; sha256 = "1dldjzbpl7ncwlh0y6csxryq9cbhz5c4i5iflk3m1g53l4b5kidl"; }) + (fetchNuGet { pname = "MySql.Data"; version = "8.3.0"; sha256 = "1mscn8439mx8a72kqjb5dba29j3qxpmz4vilqjj20vymga8jqji9"; }) + (fetchNuGet { pname = "MySqlConnector"; version = "2.3.6"; sha256 = "0h03lv59r4l33821xzrmgf16wak67711mjwbfnplzfj5xm6sdwv0"; }) + (fetchNuGet { pname = "NETStandard.Library"; version = "1.6.0"; sha256 = "0nmmv4yw7gw04ik8ialj3ak0j6pxa9spih67hnn1h2c38ba8h58k"; }) + (fetchNuGet { pname = "NETStandard.Library"; version = "1.6.1"; sha256 = "1z70wvsx2d847a2cjfii7b83pjfs34q05gb037fdjikv5kbagml8"; }) + (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; sha256 = "0xrwysmrn4midrjal8g2hr1bbg38iyisl0svamb11arqws4w2bw7"; }) + (fetchNuGet { pname = "OsuSharp"; version = "6.4.1"; sha256 = "1n86l22ygjkp1hslhgbg8i1kghhx7di96yw4bwrmblnyi142r98f"; }) + (fetchNuGet { pname = "OsuSharp.Domain"; version = "6.4.1"; sha256 = "1j91r1lcds8zipswr7xin992h5j4axlzcayl466kdql0zj8v53jx"; }) + (fetchNuGet { pname = "OsuSharp.JsonModels"; version = "6.4.1"; sha256 = "1x8ag9dvc59h65lv8hh40skv56rmjf5ihkschbhrkj1naji99ywn"; }) + (fetchNuGet { pname = "RedditSharp"; version = "2.0.0"; sha256 = "0rihla4m8k5wqrkp7far2cgdvy0g8kyvvz7jlb0acnrrg5ymlw06"; }) + (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.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "0rwpqngkqiapqc5c2cpkj7idhngrgss5qpnqg0yh40mbyflcxf8i"; }) + (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; }) + (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1n06gxwlinhs0w7s8a94r1q3lwqzvynxwd3mp10ws9bg6gck8n4r"; }) + (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; }) + (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "0404wqrc7f2yc0wxv71y3nnybvqx8v4j9d47hlscxy759a525mc3"; }) + (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.Net.Security"; version = "4.3.0"; sha256 = "0dnqjhw445ay3chpia9p6vy4w2j6s9vy3hxszqvdanpvvyaxijr3"; }) + (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.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "0zy5r25jppz48i2bkg8b9lfig24xixg6nm3xyr1379zdnqnpm8f6"; }) + (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; }) + (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "096ch4n4s8k82xga80lfmpimpzahd2ip1mgwdqgar0ywbbl6x438"; }) + (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; }) + (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1dm8fifl7rf1gy7lnwln78ch4rw54g0pl5g1c189vawavll7p6rj"; }) + (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.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1m9z1k9kzva9n9kwinqxl97x2vgl79qhqjlv17k9s2ymcyv2bwr6"; }) + (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; }) + (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1cpx56mcfxz7cpn57wvj18sjisvzq8b5vd9rw16ihd2i6mcp3wa1"; }) + (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; }) + (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "15gsm1a8jdmgmf8j5v1slfz8ks124nfdhk2vxs2rw3asrxalg8hi"; }) + (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; }) + (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "0q0n5q1r1wnqmr5i5idsrd9ywl33k0js4pngkwq9p368mbxp8x1w"; }) + (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; }) + (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1x0g58pbpjrmj2x2qw17rdwwnrcl0wvim2hdwz48lixvwvp22n9c"; }) + (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 = "SixLabors.Fonts"; version = "2.0.1"; sha256 = "03slkvrqig2n17jr3n98vwsjl09dcm79s9d138qvc0c4pb71qk7q"; }) + (fetchNuGet { pname = "SixLabors.ImageSharp"; version = "3.1.3"; sha256 = "0f36my2lzkgc5fvk6s0lh4gn15vxhbl2zg71rdql7vrzh8b77c6q"; }) + (fetchNuGet { pname = "SixLabors.ImageSharp.Drawing"; version = "2.1.2"; sha256 = "0nbqcgs9hg7awv3s9mcv0j81mkpzf3fkdgi8v75gr319dbvkmw26"; }) + (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.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.3.1"; sha256 = "17615br2x5riyx8ivf1dcqwj6q3ipq1bi5hqhw54yfyxmx38ddva"; }) + (fetchNuGet { pname = "System.Collections.Immutable"; version = "1.7.0"; sha256 = "1gik4sn9jsi1wcy1pyyp0r4sn2g17cwrsh24b2d52vif8p2h24zx"; }) + (fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; }) + (fetchNuGet { pname = "System.Collections.Immutable"; version = "6.0.0"; sha256 = "1js98kmjn47ivcvkjqdmyipzknb9xbndssczm8gq224pbaj1p88c"; }) + (fetchNuGet { pname = "System.Collections.Immutable"; version = "8.0.0"; sha256 = "0z53a42zjd59zdkszcm7pvij4ri5xbb8jly9hzaad9khlf69bcqp"; }) + (fetchNuGet { pname = "System.ComponentModel"; version = "4.0.1"; sha256 = "0v4qpmqlzyfad2kswxxj2frnaqqhz9201c3yn8fmmarx5vlzg52z"; }) + (fetchNuGet { pname = "System.ComponentModel"; version = "4.3.0"; sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb"; }) + (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "4.4.1"; sha256 = "0dzg4ljbwi9z97z31p4cp4zlxb27xpqwb19pagfvfk2pxm80ybz2"; }) + (fetchNuGet { pname = "System.Console"; version = "4.0.0"; sha256 = "0ynxqbc3z1nwbrc11hkkpw9skw116z4y9wjzn7id49p9yi7mzmlf"; }) + (fetchNuGet { pname = "System.Console"; version = "4.3.0"; sha256 = "1flr7a9x920mr5cjsqmsy9wgnv3lvd0h1g521pdr1lkb2qycy7ay"; }) + (fetchNuGet { pname = "System.Diagnostics.Contracts"; version = "4.0.1"; sha256 = "0y6dkd9n5k98vzhc3w14r2pbhf10qjn2axpghpmfr6rlxx9qrb9j"; }) + (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.3.0"; sha256 = "0z6m3pbiy0qw6rn3n209rrzf9x1k4002zh90vwcrsym09ipm2liq"; }) + (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "7.0.2"; sha256 = "1h97ikph775gya93qsjjaka87qcygbyh1064rh1hnfcnp5xv0ipi"; }) + (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "9.0.0-preview.2.24128.5"; sha256 = "09hx1pdplx9nkdjjmqx8blabqh3ln7k8bgd4mrfzqv626g1xgp2v"; }) + (fetchNuGet { pname = "System.Diagnostics.EventLog"; version = "9.0.0-preview.2.24128.5"; sha256 = "11sbg62ql1nd24fry7pjpm75253rxmv8fx2id000887bwg28lpw6"; }) + (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.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.3.0"; sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls"; }) + (fetchNuGet { pname = "System.Interactive.Async"; version = "3.2.0"; sha256 = "0y5r5y7dlccjpgg17rjrrzi3jya4ysyydamxs33qckkv4jb3534d"; }) + (fetchNuGet { pname = "System.Interactive.Async"; version = "4.1.1"; sha256 = "1ww047r0xkixw5ahnjl6lij8npf4zlyim359s9dgb0kqzxifn1dw"; }) + (fetchNuGet { pname = "System.Interactive.Async"; version = "5.0.0"; sha256 = "00flf80ahpyhrsny2kfl9bsyh1mxmsdsigpq3rzhaps9wgdbmzjz"; }) + (fetchNuGet { pname = "System.Interactive.Async"; version = "6.0.1"; sha256 = "17zzdxx7ibfwnxspxxi197a0gfgcqdzgrcza8dlwj13yi9vf8b73"; }) + (fetchNuGet { pname = "System.IO"; version = "4.1.0"; sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp"; }) + (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; }) + (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.Pipelines"; version = "6.0.3"; sha256 = "1jgdazpmwc21dd9naq3l9n5s8a1jnbwlvgkf1pnm0aji6jd4xqdz"; }) + (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 = "4.1.1"; sha256 = "1mjrp05q82blaxqpz3qvydgfz830929434gj0i8lgxbk8j7p1f88"; }) + (fetchNuGet { pname = "System.Linq.Async"; version = "5.0.0"; sha256 = "1bc1bfnahyk6y31mrxn7nd071436m94p4r9b2j835pghcqawqfbc"; }) + (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.Net.Http"; version = "4.3.0"; sha256 = "1i4gc757xqrzflbk7kc5ksn20kwwfjhw9w7pgdkn19y3cgnl302j"; }) + (fetchNuGet { pname = "System.Net.Http"; version = "4.3.3"; sha256 = "02a8r520sc6zwrmls9n80j8f22lvx7p3nidjp4w7nh6my3d4lq77"; }) + (fetchNuGet { pname = "System.Net.Http"; version = "4.3.4"; sha256 = "0kdp31b8819v88l719j6my0yas6myv9d1viql3qz5577mv819jhl"; }) + (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.Security"; version = "4.3.2"; sha256 = "1aw1ca1vssqrillrh4qkarx0lxwc8wcaqdkfdima8376wb98j2q8"; }) + (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.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 = "6.0.0"; sha256 = "1mkvx1fwychpczksy6svfmniqhbm3xqblxqik6178l12xgq7aw45"; }) + (fetchNuGet { pname = "System.Reactive.Core"; version = "3.1.1"; sha256 = "15nlyzsccfah5ihrhklr1fjl2mphv4rqbmbvlfbgvijava0czkn9"; }) + (fetchNuGet { pname = "System.Reactive.Interfaces"; version = "3.1.1"; sha256 = "1i4zq94cwnk3d5bvkds3garm0gg348yxlpvcybq0jpj4m46nd4ak"; }) + (fetchNuGet { pname = "System.Reactive.Linq"; version = "3.1.1"; sha256 = "1l4844pqbpg2s6cddc5k8a0ff9pc5l7qz9q7zlnk5h0gpjy00wvi"; }) + (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 = "8.0.0"; sha256 = "10a8vm0c3n5cili5nix6bdmiaxr69qisvk356pb81f2s8bgq40bm"; }) + (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.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; }) + (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.4.0"; sha256 = "0n9r1w4lp2zmadyqkgp4sk9wy90sj4ygq4dh7kzamx26i9biys5h"; }) + (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.3.0"; sha256 = "149xcsa1pphlrc2zfmca9n822g4mxk7s2a44phvf34r0fajm3hk8"; }) + (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.InteropServices.WindowsRuntime"; version = "4.0.1"; sha256 = "0r43c2jggyd0bvaal64gfv6iw49xj0378r1zb3ycwb53ff4rdn26"; }) + (fetchNuGet { pname = "System.Runtime.Loader"; version = "4.3.0"; sha256 = "07fgipa93g1xxgf7193a6vw677mpzgr0z0cfswbvqqb364cva8dk"; }) + (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.Formatters"; version = "4.3.0"; sha256 = "114j35n8gcvn3sqv9ar36r1jjq0y1yws9r0yk8i6wm4aq7n9rs0m"; }) + (fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.3.0"; sha256 = "01vv2p8h4hsz217xxs0rixvb7f2xzbh6wv1gzbfykcbfrza6dvnf"; }) + (fetchNuGet { pname = "System.Security.AccessControl"; version = "4.7.0"; sha256 = "0n0k0w44flkd8j0xw7g3g3vhw7dijfm51f75xkm1qxnbh4y45mpz"; }) + (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.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.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.7.0"; sha256 = "1a56ls5a9sr3ya0nr086sdpa9qv0abv31dd6fp27maqa9zclqq5d"; }) + (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; }) + (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "9.0.0-preview.2.24128.5"; sha256 = "0cd6mminn3cv6fk5ax3y15caqh3lq9a7xwjcrqjmllmhc7px26pl"; }) + (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 = "7.0.0"; sha256 = "1151hbyrcf8kyg1jz8k9awpbic98lwz9x129rg7zk1wrs6vjlpxl"; }) + (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "9.0.0-preview.2.24128.5"; sha256 = "1bv6hhp764d8zkywjbmf4grs108lrx4dlvbdsmd8z59yngp2m244"; }) + (fetchNuGet { pname = "System.Text.Json"; version = "5.0.2"; sha256 = "0vd0wd29cdhgcjngl9sw391sn2s8xm974y15zvym0whsdgjwiqfx"; }) + (fetchNuGet { pname = "System.Text.Json"; version = "7.0.1"; sha256 = "1lqh6nrrkx4sksvn5509y6j9z8zkhcls0yghd0n31zywmmy3pnf2"; }) + (fetchNuGet { pname = "System.Text.Json"; version = "9.0.0-preview.2.24128.5"; sha256 = "0ilnla17kif58gz6wb2v1vkrxhvx71k7vz4qk3lxhpysxppz43km"; }) + (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.Tasks"; version = "4.0.11"; sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5"; }) + (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; }) + (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.1"; sha256 = "1ikrplvw4m6pzjbq3bfbpr572n4i9mni577zvmrkaygvx85q3myw"; }) + (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.0.10"; sha256 = "0fdr61yjcxh5imvyf93n2m3n5g9pp54bnw2l1d2rdl9z6dd31ypx"; }) + (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 = "taglib-sharp-netstandard2.0"; version = "2.1.0"; sha256 = "1hwacj0v3d8ib9n3sdyv6x3q252jllnb73c1165526wyklm5h6j5"; }) + (fetchNuGet { pname = "Urban.NET"; version = "1.0.0"; sha256 = "0v6wjdafzbmb22zwqqkci5azrw8qgqy15cv8grdyrdzn8xkzwhwl"; }) + (fetchNuGet { pname = "UrbanDictionary"; version = "2.0.0"; sha256 = "0ksabkwp7781mgym2qlbdmxcc7jnmkj13ajwic19andp0phq9lpg"; }) + (fetchNuGet { pname = "Victoria"; version = "6.0.1026"; sha256 = "1s83v0kx4i8w6si68hry2jzh5w7gzgls8h7p354x5prhpbw8m6xm"; }) + (fetchNuGet { pname = "YouTubeSearch"; version = "2.2.6"; sha256 = "0x6mmhxbrg1xdz8vcby614ihswwhsl5mzq4gyhqgswkd4agd1qns"; }) + (fetchNuGet { pname = "ZstdSharp.Port"; version = "0.7.1"; sha256 = "0blxk9dplkk1i2agav140hqa9n3zwfi7zq958f5bqiv3jn9clfsp"; }) +] diff --git a/packages/wallpaper/default.nix b/packages/wallpaper/default.nix new file mode 100644 index 0000000..5d6daae --- /dev/null +++ b/packages/wallpaper/default.nix @@ -0,0 +1,32 @@ +{ pkgs, wallpaper ? pkgs.fetchurl { + + url = "https://img.goodfon.com/original/3840x2160/c/8d/anime-mech-fate.jpg"; + hash = "sha256-my/d2+nKKj+XCtgS5hC2mKFb7yIvVNg9P1IelPl9lRY="; +}}: let + env = pkgs.python312.withPackages (py: with py; [ + pillow + cairosvg + ]); + images = [ + "${pkgs.nixos-artwork.wallpapers.simple-dark-gray-bootloader}/share/backgrounds/nixos/nix-wallpaper-simple-dark-gray_bootloader.png" + "${pkgs.fetchFromGitHub { + owner = "WillPower3309"; + repo = "swayfx"; + rev = "0.5"; + sha256 = "sha256-gdab7zkjp/S7YVCP1t/OfOdUXZRwNvNSuRFGWEJScF8="; + }}/assets/swayfx_logo.svg" + "${pkgs.fetchFromGitHub { + owner = "f-klubben"; + repo = "logo"; + rev = "master"; + sha256 = "sha256-ep6/vzk7dj5InsVmaU/x2W1Lsxd4jvvwsyJzLgQJDEE="; + }}/logo.svg" + ]; +in pkgs.stdenv.mkDerivation { + name = "wallpaper.png"; + pname = "wallpaper.png"; + src = ./.; + installPhase = '' + ${env.interpreter} $src/overlay.py ${wallpaper} ${builtins.concatStringsSep " " images} $out + ''; +} diff --git a/packages/wallpaper/overlay.py b/packages/wallpaper/overlay.py new file mode 100644 index 0000000..eb10410 --- /dev/null +++ b/packages/wallpaper/overlay.py @@ -0,0 +1,59 @@ +import sys +from PIL import Image, ImageOps +from cairosvg import svg2png + +def convert(data, source, target): + return [target if item == source else item for item in data] + + +def autocrop_image(image, border = 0): + # Get the bounding box + bbox = image.getbbox() + + # Crop the image to the contents of the bounding box + image = image.crop(bbox) + + # Determine the width and height of the cropped image + (width, height) = image.size + + # Add border + width += border * 2 + height += border * 2 + + # Create a new image object for the output image + cropped_image = Image.new("RGBA", (width, height), (0,0,0,0)) + + # Paste the cropped image onto the new image + cropped_image.paste(image, (border, border)) + + # Done! + return cropped_image + +def fixup_image(image:str) -> Image.Image: + if image.split(".")[-1] == "svg": + with open(image, "r") as file: + svg2png(bytestring=file.read(), write_to="out.png") + image = "out.png" + img = Image.open(image) + rgba = img.convert("RGBA") + data = rgba.getdata() + transparent = convert(data, (47,48,47,255), (0,0,0,0)) + rgba.putdata(transparent) + cropped = autocrop_image(rgba) + return ImageOps.contain(cropped, (150, 150)) + + +x, y = (1920/4.5, 1080/3.3) + +_, background, *images, destination = sys.argv + +fixed_images = map(fixup_image, images) + +background_img = Image.open(background) +background_img_rgba = background_img.convert("RGBA") +background_img_resized = background_img_rgba.resize((1920, 1080)) + +for i, image in enumerate(fixed_images): + background_img_resized.paste(image, (int(x + (124 * i)), int(y)), image) + +background_img_resized.save(destination, "PNG")