Merge staging-next into staging

main
Frederik Rietdijk 2 years ago
commit 3086301ac4
  1. 21
      .github/workflows/compare-manuals.sh
  2. 10
      .github/workflows/manual-nixos.yml
  3. 64
      .github/workflows/manual-rendering.yml
  4. 2
      .github/workflows/periodic-merge-24h.yml
  5. 2
      .github/workflows/periodic-merge-6h.yml
  6. 3
      .github/workflows/update-terraform-providers.yml
  7. 45
      doc/languages-frameworks/vim.section.md
  8. 5
      lib/options.nix
  9. 42
      lib/types.nix
  10. 49
      maintainers/maintainer-list.nix
  11. 23
      maintainers/scripts/luarocks-packages.csv
  12. 13
      maintainers/scripts/update-luarocks-packages
  13. 3
      nixos/doc/manual/default.nix
  14. 19
      nixos/doc/manual/development/option-declarations.section.md
  15. 73
      nixos/doc/manual/development/option-types.section.md
  16. 26
      nixos/doc/manual/from_md/development/option-declarations.section.xml
  17. 429
      nixos/doc/manual/from_md/development/option-types.section.xml
  18. 9
      nixos/doc/manual/from_md/installation/installing.chapter.xml
  19. 33
      nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
  20. 8
      nixos/doc/manual/installation/installing.chapter.md
  21. 9
      nixos/doc/manual/release-notes/rl-2211.section.md
  22. 29
      nixos/lib/make-options-doc/default.nix
  23. 39
      nixos/lib/make-options-doc/mergeJSON.py
  24. 2
      nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix
  25. 19
      nixos/modules/misc/documentation.nix
  26. 1
      nixos/modules/module-list.nix
  27. 6
      nixos/modules/profiles/installation-device.nix
  28. 25
      nixos/modules/programs/ausweisapp.nix
  29. 2
      nixos/modules/programs/rust-motd.nix
  30. 9
      nixos/modules/security/wrappers/default.nix
  31. 2
      nixos/modules/services/continuous-integration/buildkite-agents.nix
  32. 6
      nixos/modules/services/databases/influxdb.nix
  33. 2
      nixos/modules/services/desktops/espanso.nix
  34. 6
      nixos/modules/services/logging/vector.nix
  35. 10
      nixos/modules/services/misc/gollum.nix
  36. 4
      nixos/modules/services/misc/mediatomb.nix
  37. 10
      nixos/modules/services/misc/paperless.nix
  38. 2
      nixos/modules/services/misc/sourcehut/default.nix
  39. 12
      nixos/modules/services/monitoring/grafana.nix
  40. 2
      nixos/modules/services/monitoring/prometheus/exporters/rtl_433.nix
  41. 2
      nixos/modules/services/monitoring/prometheus/exporters/v2ray.nix
  42. 6
      nixos/modules/services/networking/i2pd.nix
  43. 8
      nixos/modules/services/networking/keepalived/default.nix
  44. 2
      nixos/modules/services/networking/strongswan-swanctl/param-constructors.nix
  45. 9
      nixos/modules/services/networking/syncthing.nix
  46. 8
      nixos/modules/services/networking/wpa_supplicant.nix
  47. 11
      nixos/modules/services/system/cachix-agent/default.nix
  48. 42
      nixos/modules/services/web-apps/dolibarr.nix
  49. 2
      nixos/modules/services/web-apps/lemmy.nix
  50. 56
      nixos/modules/services/web-apps/writefreely.nix
  51. 19
      nixos/modules/services/x11/picom.nix
  52. 18
      nixos/modules/system/boot/luksroot.nix
  53. 14
      nixos/modules/system/boot/networkd.nix
  54. 22
      nixos/modules/virtualisation/proxmox-image.nix
  55. 2
      nixos/modules/virtualisation/qemu-vm.nix
  56. 1
      nixos/tests/all-tests.nix
  57. 2
      nixos/tests/gitea.nix
  58. 14
      nixos/tests/gollum.nix
  59. 10
      nixos/tests/lemmy.nix
  60. 101
      nixos/tests/mediatomb.nix
  61. 5
      nixos/tests/nextcloud/with-declarative-redis-and-secrets.nix
  62. 5
      nixos/tests/nextcloud/with-postgresql-and-redis.nix
  63. 35
      pkgs/applications/audio/miniplayer/default.nix
  64. 4
      pkgs/applications/audio/mopidy/iris.nix
  65. 9
      pkgs/applications/audio/mopidy/ytmusic.nix
  66. 4
      pkgs/applications/audio/pyradio/default.nix
  67. 178
      pkgs/applications/audio/quodlibet/default.nix
  68. 31
      pkgs/applications/audio/snapcast/default.nix
  69. 14
      pkgs/applications/audio/tageditor/default.nix
  70. 4
      pkgs/applications/blockchains/bisq-desktop/default.nix
  71. 4
      pkgs/applications/blockchains/ledger-live-desktop/default.nix
  72. 279
      pkgs/applications/editors/emacs/elisp-packages/elpa-generated.nix
  73. 2
      pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
  74. 106
      pkgs/applications/editors/emacs/elisp-packages/nongnu-generated.nix
  75. 3073
      pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json
  76. 34
      pkgs/applications/editors/emacs/elisp-packages/update-from-overlay
  77. 19
      pkgs/applications/editors/emacs/elisp-packages/yes-no/default.nix
  78. 4
      pkgs/applications/editors/ghostwriter/default.nix
  79. 662
      pkgs/applications/editors/vim/plugins/generated.nix
  80. 4
      pkgs/applications/editors/vim/plugins/overrides.nix
  81. 1
      pkgs/applications/editors/vim/plugins/vim-plugin-names
  82. 24
      pkgs/applications/editors/vscode/extensions/default.nix
  83. 1
      pkgs/applications/emulators/pcsx2/default.nix
  84. 8
      pkgs/applications/emulators/rpcs3/default.nix
  85. 6
      pkgs/applications/emulators/ryujinx/default.nix
  86. 6
      pkgs/applications/emulators/wine/sources.nix
  87. 8
      pkgs/applications/emulators/yuzu/default.nix
  88. 15
      pkgs/applications/graphics/drawing/default.nix
  89. 4
      pkgs/applications/graphics/drawio/default.nix
  90. 59
      pkgs/applications/graphics/eyedropper/default.nix
  91. 1
      pkgs/applications/graphics/pixinsight/default.nix
  92. 49
      pkgs/applications/graphics/pizarra/default.nix
  93. 2
      pkgs/applications/kde/kdepim-runtime/default.nix
  94. 6
      pkgs/applications/kde/okular.nix
  95. 5
      pkgs/applications/misc/ArchiSteamFarm/default.nix
  96. 292
      pkgs/applications/misc/ArchiSteamFarm/deps-x86_64-linux.nix
  97. 25
      pkgs/applications/misc/ArchiSteamFarm/deps.nix
  98. 34
      pkgs/applications/misc/ArchiSteamFarm/update.sh
  99. 4
      pkgs/applications/misc/ausweisapp2/default.nix
  100. 9
      pkgs/applications/misc/genact/default.nix
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,21 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p html-tidy
set -euo pipefail
shopt -s inherit_errexit
normalize() {
tidy \
--anchor-as-name no \
--coerce-endtags no \
--escape-scripts no \
--fix-backslash no \
--fix-style-tags no \
--fix-uri no \
--indent yes \
--wrap 0 \
< "$1" \
2> /dev/null
}
diff -U3 <(normalize "$1") <(normalize "$2")

@ -27,5 +27,13 @@ jobs:
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
name: nixpkgs-ci
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
- name: Building NixOS manual
- name: Building NixOS manual with DocBook options
run: NIX_PATH=nixpkgs=$(pwd) nix-build --option restrict-eval true nixos/release.nix -A manual.x86_64-linux
- name: Building NixOS manual with Markdown options
run: |
export NIX_PATH=nixpkgs=$(pwd)
nix-build \
--option restrict-eval true \
--arg configuration '{ documentation.nixos.options.allowDocBook = false; }' \
nixos/release.nix \
-A manual.x86_64-linux

@ -0,0 +1,64 @@
name: "Check NixOS Manual DocBook rendering against MD rendering"
on:
schedule:
# * is a special character in YAML so you have to quote this string
# Check every 24 hours
- cron: '0 0 * * *'
permissions:
contents: read
jobs:
check-rendering-equivalence:
permissions:
pull-requests: write # for peter-evans/create-or-update-comment to create or update comment
if: github.repository_owner == 'NixOS'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v17
with:
# explicitly enable sandbox
extra_nix_config: sandbox = true
- uses: cachix/cachix-action@v10
with:
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
name: nixpkgs-ci
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
- name: Build DocBook and MD manuals
run: |
export NIX_PATH=nixpkgs=$(pwd)
nix-build \
--option restrict-eval true \
-o docbook nixos/release.nix \
-A manual.x86_64-linux
nix-build \
--option restrict-eval true \
--arg configuration '{ documentation.nixos.options.allowDocBook = false; }' \
-o md nixos/release.nix \
-A manual.x86_64-linux
- name: Compare DocBook and MD manuals
id: check
run: |
export NIX_PATH=nixpkgs=$(pwd)
.github/workflows/compare-manuals.sh \
docbook/share/doc/nixos/options.html \
md/share/doc/nixos/options.html
# if the manual can't be built we don't want to notify anyone.
# while this may temporarily hide rendering failures it will be a lot
# less noisy until all nixpkgs pull requests have stopped using
# docbook for option docs.
- name: Comment on failure
uses: peter-evans/create-or-update-comment@v2
if: ${{ failure() && steps.check.conclusion == 'failure' }}
with:
issue-number: 189318
body: |
Markdown and DocBook manuals do not agree.
Check https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }} for details.

@ -21,7 +21,7 @@ jobs:
periodic-merge:
permissions:
contents: write # for devmasx/merge-branch to merge branches
issues: write # for peter-evans/create-or-update-comment to create or update comment
pull-requests: write # for peter-evans/create-or-update-comment to create or update comment
if: github.repository_owner == 'NixOS'
runs-on: ubuntu-latest
strategy:

@ -21,7 +21,7 @@ jobs:
periodic-merge:
permissions:
contents: write # for devmasx/merge-branch to merge branches
issues: write # for peter-evans/create-or-update-comment to create or update comment
pull-requests: write # for peter-evans/create-or-update-comment to create or update comment
if: github.repository_owner == 'NixOS'
runs-on: ubuntu-latest
strategy:

@ -12,8 +12,7 @@ jobs:
tf-providers:
permissions:
contents: write # for peter-evans/create-pull-request to create branch
issues: write # for peter-evans/create-or-update-comment to create or update comment
pull-requests: write # for peter-evans/create-pull-request to create a PR
pull-requests: write # for peter-evans/create-pull-request to create a PR, for peter-evans/create-or-update-comment to create or update comment
if: github.repository_owner == 'NixOS' && github.ref == 'refs/heads/master' # ensure workflow_dispatch only runs on master
runs-on: ubuntu-latest
steps:

@ -8,7 +8,7 @@ Loading can be deferred; see examples.
At the moment we support two different methods for managing plugins:
- Vim packages (*recommended*)
- vim-plug
- vim-plug (vim only)
## Custom configuration {#custom-configuration}
@ -196,20 +196,8 @@ vim_configurable.customize {
}
```
For Neovim the syntax is:
Note: this is not possible anymore for Neovim.
```nix
neovim.override {
configure = {
customRC = ''
# your custom configuration goes here!
'';
plug.plugins = with pkgs.vimPlugins; [
vim-go
];
};
}
```
## Adding new plugins to nixpkgs {#adding-new-plugins-to-nixpkgs}
@ -227,7 +215,7 @@ Sometimes plugins require an override that must be changed when the plugin is up
To add a new plugin, run `./update.py --add "[owner]/[name]"`. **NOTE**: This script automatically commits to your git repository. Be sure to check out a fresh branch before running.
Finally, there are some plugins that are also packaged in nodePackages because they have Javascript-related build steps, such as running webpack. Those plugins are not listed in `vim-plugin-names` or managed by `update.py` at all, and are included separately in `overrides.nix`. Currently, all these plugins are related to the `coc.nvim` ecosystem of the Language Server Protocol integration with vim/neovim.
Finally, there are some plugins that are also packaged in nodePackages because they have Javascript-related build steps, such as running webpack. Those plugins are not listed in `vim-plugin-names` or managed by `update.py` at all, and are included separately in `overrides.nix`. Currently, all these plugins are related to the `coc.nvim` ecosystem of the Language Server Protocol integration with Vim/Neovim.
## Updating plugins in nixpkgs {#updating-plugins-in-nixpkgs}
@ -243,10 +231,27 @@ Alternatively, set the number of processes to a lower count to avoid rate-limiti
./pkgs/applications/editors/vim/plugins/update.py --proc 1
```
## Important repositories {#important-repositories}
## How to maintain an out-of-tree overlay of vim plugins ?
You can use the updater script to generate basic packages out of a custom vim
plugin list:
```
pkgs/applications/editors/vim/plugins/update.py -i vim-plugin-names -o generated.nix --no-commit
```
with the contents of `vim-plugin-names` being for example:
```
repo,branch,alias
pwntester/octo.nvim,,
```
You can then reference the generated vim plugins via:
- [vim-pi](https://bitbucket.org/vimcommunity/vim-pi) is a plugin repository
from VAM plugin manager meant to be used by others as well used by
```nix
myVimPlugins = pkgs.vimPlugins.extend (
(pkgs.callPackage generated.nix {})
);
```
- [vim2nix](https://github.com/MarcWeber/vim-addon-vim2nix) which generates the
.nix code

@ -284,7 +284,10 @@ rec {
*/
literalDocBook = text:
if ! isString text then throw "literalDocBook expects a string."
else { _type = "literalDocBook"; inherit text; };
else
lib.warnIf (lib.isInOldestRelease 2211)
"literalDocBook is deprecated, use literalMD instead"
{ _type = "literalDocBook"; inherit text; };
/* Transition marker for documentation that's already migrated to markdown
syntax.

@ -227,11 +227,11 @@ rec {
};
int = mkOptionType {
name = "int";
description = "signed integer";
check = isInt;
merge = mergeEqualOption;
};
name = "int";
description = "signed integer";
check = isInt;
merge = mergeEqualOption;
};
# Specialized subdomains of int
ints =
@ -292,10 +292,34 @@ rec {
port = ints.u16;
float = mkOptionType {
name = "float";
description = "floating point number";
check = isFloat;
merge = mergeEqualOption;
name = "float";
description = "floating point number";
check = isFloat;
merge = mergeEqualOption;
};
number = either int float;
numbers = let
betweenDesc = lowest: highest:
"${builtins.toJSON lowest} and ${builtins.toJSON highest} (both inclusive)";
in {
between = lowest: highest:
assert lib.assertMsg (lowest <= highest)
"numbers.between: lowest must be smaller than highest";
addCheck number (x: x >= lowest && x <= highest) // {
name = "numberBetween";
description = "integer or floating point number between ${betweenDesc lowest highest}";
};
nonnegative = addCheck number (x: x >= 0) // {
name = "numberNonnegative";
description = "nonnegative integer or floating point number, meaning >=0";
};
positive = addCheck number (x: x > 0) // {
name = "numberPositive";
description = "positive integer or floating point number, meaning >0";
};
};
str = mkOptionType {

@ -1027,6 +1027,12 @@
fingerprint = "BF8B F725 DA30 E53E 7F11 4ED8 AAA5 0652 F047 9205";
}];
};
apraga = {
email = "alexis.praga@proton.me";
github = "apraga";
githubId = 914687;
name = "Alexis Praga";
};
ar1a = {
email = "aria@ar1as.space";
github = "ar1a";
@ -1075,6 +1081,12 @@
githubId = 628387;
name = "Arian van Putten";
};
arikgrahl = {
email = "mail@arik-grahl.de";
github = "arikgrahl";
githubId = 8049011;
name = "Arik Grahl";
};
aristid = {
email = "aristidb@gmail.com";
github = "aristidb";
@ -2768,6 +2780,12 @@
githubId = 34543609;
name = "creator54";
};
crinklywrappr = {
email = "crinklywrappr@pm.me";
name = "Daniel Fitzpatrick";
github = "crinklywrappr";
githubId = 56522;
};
cript0nauta = {
email = "shareman1204@gmail.com";
github = "cript0nauta";
@ -4298,6 +4316,12 @@
githubId = 7670450;
name = "Federico Beffa";
};
fbergroth = {
email = "fbergroth@gmail.com";
github = "fbergroth";
githubId = 1211003;
name = "Fredrik Bergroth";
};
fbrs = {
email = "yuuki@protonmail.com";
github = "cideM";
@ -6043,6 +6067,12 @@
fingerprint = "A506 C38D 5CC8 47D0 DF01 134A DA8B 833B 5260 4E63";
}];
};
jcs090218 = {
email = "jcs090218@gmail.com";
github = "jcs090218";
githubId = 8685505;
name = "Jen-Chieh Shen";
};
jcumming = {
email = "jack@mudshark.org";
github = "jcumming";
@ -8599,6 +8629,13 @@
githubId = 71893;
name = "Michael Maclean";
};
mglolenstine = {
email = "mglolenstine@gmail.com";
github = "MGlolenstine";
githubId = 9406770;
matrix = "@mglolenstine:matrix.org";
name = "MGlolenstine";
};
mgregoire = {
email = "gregoire@martinache.net";
github = "M-Gregoire";
@ -15268,6 +15305,12 @@
fingerprint = "4384 B8E1 299F C028 1641 7B8F EC30 EFBE FA7E 84A4";
}];
};
bezmuth = {
email = "benkel97@protonmail.com";
name = "Ben Kelly";
github = "bezmuth";
githubId = 31394095;
};
cafkafk = {
email = "cafkafk@cafkafk.com";
matrix = "@cafkafk:matrix.cafkafk.com";
@ -15284,4 +15327,10 @@
githubId = 7775707;
name = "RB";
};
bpaulin = {
email = "brunopaulin@bpaulin.net";
github = "bpaulin";
githubId = 115711;
name = "bpaulin";
};
}

@ -1,6 +1,6 @@
name,src,ref,server,version,luaversion,maintainers
alt-getopt,,,,,,arobyn
bit32,,,,5.3.0-1,lua5_1,lblasc
bit32,,,,5.3.0-1,5.1,lblasc
argparse,https://github.com/luarocks/argparse.git,,,,,
basexx,https://github.com/teto/basexx.git,,,,,
binaryheap,https://github.com/Tieske/binaryheap.lua,,,,,vcunat
@ -12,20 +12,20 @@ cosmo,,,,,,marsam
coxpcall,,,,1.17.0-1,,
cqueues,,,,,,vcunat
cyrussasl,https://github.com/JorjBauer/lua-cyrussasl.git,,,,,
digestif,https://github.com/astoff/digestif.git,,,0.2-1,lua5_3,
digestif,https://github.com/astoff/digestif.git,,,0.2-1,5.3,
dkjson,,,,,,
fifo,,,,,,
fluent,,,,,,alerque
gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,lua5_1,
gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,5.1,
http,,,,0.3-0,,vcunat
inspect,,,,,,
ldbus,,,http://luarocks.org/dev,,,
ldoc,https://github.com/stevedonovan/LDoc.git,,,,,
lgi,,,,,,
linenoise,https://github.com/hoelzro/lua-linenoise.git,,,,,
ljsyscall,,,,,lua5_1,lblasc
lmathx,,,,,lua5_3,alexshpilkin
lmpfrlib,,,,,lua5_3,alexshpilkin
ljsyscall,,,,,5.1,lblasc
lmathx,,,,,5.3,alexshpilkin
lmpfrlib,,,,,5.3,alexshpilkin
loadkit,,,,,,alerque
lpeg,,,,,,vyp
lpeg_patterns,,,,,,
@ -45,7 +45,7 @@ lua-resty-jwt,,,,,,
lua-resty-openidc,,,,,,
lua-resty-openssl,,,,,,
lua-resty-session,,,,,,
lua-subprocess,https://github.com/0x0ade/lua-subprocess,,,,lua5_1,scoder12
lua-subprocess,https://github.com/0x0ade/lua-subprocess,,,,5.1,scoder12
lua-term,,,,,,
lua-toml,,,,,,
lua-zlib,,,,,,koral
@ -63,7 +63,7 @@ luaexpat,,,,1.4.1-1,,arobyn flosse
luaffi,,,http://luarocks.org/dev,,,
luafilesystem,,,,1.7.0-2,,flosse
lualogging,,,,,,
luaossl,,,,,lua5_1,
luaossl,,,,,5.1,
luaposix,,,,34.1.1-1,,vyp lblasc
luarepl,,,,,,
luasec,,,,,,flosse
@ -71,22 +71,25 @@ luasocket,,,,,,
luasql-sqlite3,,,,,,vyp
luassert,,,,,,
luasystem,,,,,,
luaunbound,,,,,
luaunbound,,,,,,
luaunit,,,,,,lockejan
luautf8,,,,,,pstn
luazip,,,,,,
lua-yajl,,,,,,pstn
luuid,,,,,,
luv,,,,1.43.0-0,,
lush.nvim,https://github.com/rktjmp/lush.nvim,,,,,teto
lyaml,,,,,,lblasc
markdown,,,,,,
mediator_lua,,,,,,
mpack,,,,,,
moonscript,https://github.com/leafo/moonscript.git,dev-1,,,,arobyn
nvim-client,https://github.com/neovim/lua-client.git,,,,,
nvim-cmp,,,,,
penlight,https://github.com/lunarmodules/Penlight.git,,,,,alerque
plenary.nvim,https://github.com/nvim-lua/plenary.nvim.git,,,,lua5_1,
plenary.nvim,https://github.com/nvim-lua/plenary.nvim.git,,,,5.1,
rapidjson,https://github.com/xpol/lua-rapidjson.git,,,,,
rest.nvim,,,,,5.1,teto
readline,,,,,,
say,https://github.com/Olivine-Labs/say.git,,,,,
serpent,,,,,,lockejan

Can't render this file because it has a wrong number of fields in line 74.

@ -161,7 +161,10 @@ def generate_pkg_nix(plug: LuaPlugin):
custom_env = os.environ.copy()
custom_env['LUAROCKS_CONFIG'] = LUAROCKS_CONFIG
cmd = [ "luarocks", "nix"]
# we add --dev else luarocks wont find all the "scm" (=dev) versions of the
# packages
# , "--dev"
cmd = [ "luarocks", "nix" ]
if plug.maintainers:
cmd.append(f"--maintainers={plug.maintainers}")
@ -185,13 +188,7 @@ def generate_pkg_nix(plug: LuaPlugin):
cmd.append(f"--only-server={plug.server}")
if plug.luaversion:
with CleanEnvironment():
local_pkgs = str(ROOT.resolve())
cmd2 = ["nix-build", "--no-out-link", local_pkgs, "-A", f"{plug.luaversion}"]
log.debug("running %s", ' '.join(cmd2))
lua_drv_path=subprocess.check_output(cmd2, text=True).strip()
cmd.append(f"--lua-dir={lua_drv_path}/bin")
cmd.append(f"--lua-version={plug.luaversion}")
log.debug("running %s", ' '.join(cmd))

@ -6,6 +6,7 @@
, extraSources ? []
, baseOptionsJSON ? null
, warningsAreErrors ? true
, allowDocBook ? true
, prefix ? ../../..
}:
@ -28,7 +29,7 @@ let
stripAnyPrefixes = lib.flip (lib.foldr lib.removePrefix) prefixesToStrip;
optionsDoc = buildPackages.nixosOptionsDoc {
inherit options revision baseOptionsJSON warningsAreErrors;
inherit options revision baseOptionsJSON warningsAreErrors allowDocBook;
transformOptions = opt: opt // {
# Clean up declaration sites to not refer to the NixOS source tree.
declarations = map stripAnyPrefixes opt.declarations;

@ -44,26 +44,23 @@ The function `mkOption` accepts the following arguments.
: A textual representation of the default value to be rendered verbatim in
the manual. Useful if the default value is a complex expression or depends
on other values or packages.
Use `lib.literalExpression` for a Nix expression, `lib.literalDocBook` for
a plain English description in DocBook format.
Use `lib.literalExpression` for a Nix expression, `lib.literalMD` for
a plain English description in [Nixpkgs-flavored Markdown](
https://nixos.org/nixpkgs/manual/#sec-contributing-markup) format.
`example`
: An example value that will be shown in the NixOS manual.
You can use `lib.literalExpression` and `lib.literalDocBook` in the same way
You can use `lib.literalExpression` and `lib.literalMD` in the same way
as in `defaultText`.
`description`
: A textual description of the option, in DocBook format, that will be
: A textual description of the option, in [Nixpkgs-flavored Markdown](
https://nixos.org/nixpkgs/manual/#sec-contributing-markup) format, that will be
included in the NixOS manual. During the migration process from DocBook
to CommonMark the description may also be written in CommonMark, but has
to be wrapped in `lib.mdDoc` to differentiate it from DocBook. See
the nixpkgs manual for [the list of CommonMark extensions](
https://nixos.org/nixpkgs/manual/#sec-contributing-markup)
supported by NixOS documentation.
New documentation should preferably be written as CommonMark.
to CommonMark the description may also be written in DocBook, but this is
discouraged.
## Utility functions for common option patterns {#sec-option-declarations-util}

@ -4,7 +4,7 @@ Option types are a way to put constraints on the values a module option
can take. Types are also responsible of how values are merged in case of
multiple value definitions.
## Basic Types {#sec-option-types-basic}
## Basic types {#sec-option-types-basic}
Basic types are the simplest available types in the module system. Basic
types include multiple string types that mainly differ in how definition
@ -25,6 +25,11 @@ merging is handled.
: A top-level store path. This can be an attribute set pointing
to a store path, like a derivation or a flake input.
`types.enum` *`l`*
: One element of the list *`l`*, e.g. `types.enum [ "left" "right" ]`.
Multiple definitions cannot be merged.
`types.anything`
: A type that accepts any value and recursively merges attribute sets
@ -95,7 +100,7 @@ merging is handled.
problems.
:::
Integer-related types:
### Numeric types {#sec-option-types-numeric}
`types.int`
@ -118,6 +123,10 @@ Integer-related types:
from 0 to 2^n−1 respectively (e.g. `0`
to `255` for 8 bits).
`types.ints.between` *`lowest highest`*
: An integer between *`lowest`* and *`highest`* (both inclusive).
`types.ints.positive`
: A positive integer (that is > 0).
@ -127,12 +136,44 @@ Integer-related types:
: A port number. This type is an alias to
`types.ints.u16`.
String-related types:
`types.float`
: A floating point number.
::: {.warning}
Converting a floating point number to a string with `toString` or `toJSON`
may result in [precision loss](https://github.com/NixOS/nix/issues/5733).
:::
`types.number`
: Either a signed integer or a floating point number. No implicit conversion
is done between the two types, and multiple equal definitions will only be
merged if they have the same type.
`types.numbers.between` *`lowest highest`*
: An integer or floating point number between *`lowest`* and *`highest`* (both inclusive).
`types.numbers.nonnegative`
: A nonnegative integer or floating point number (that is >= 0).
`types.numbers.positive`
: A positive integer or floating point number (that is > 0).
### String types {#sec-option-types-string}
`types.str`
: A string. Multiple definitions cannot be merged.
`types.separatedString` *`sep`*
: A string. Multiple definitions are concatenated with *`sep`*, e.g.
`types.separatedString "|"`.
`types.lines`
: A string. Multiple definitions are concatenated with a new line
@ -144,7 +185,7 @@ String-related types:
`types.envVar`
: A string. Multiple definitions are concatenated with a collon `":"`.
: A string. Multiple definitions are concatenated with a colon `":"`.
`types.strMatching`
@ -152,24 +193,9 @@ String-related types:
definitions cannot be merged. The regular expression is processed
using `builtins.match`.
## Value Types {#sec-option-types-value}
Value types are types that take a value parameter.
`types.enum` *`l`*
: One element of the list *`l`*, e.g. `types.enum [ "left" "right" ]`.
Multiple definitions cannot be merged.
`types.separatedString` *`sep`*
: A string with a custom separator *`sep`*, e.g.
`types.separatedString "|"`.
`types.ints.between` *`lowest highest`*
## Submodule types {#sec-option-types-submodule}
: An integer between *`lowest`* and *`highest`* (both inclusive). Useful
for creating types like `types.port`.
Submodules are detailed in [Submodule](#section-option-types-submodule).
`types.submodule` *`o`*
@ -178,7 +204,6 @@ Value types are types that take a value parameter.
value. Submodules are used in composed types to create modular
options. This is equivalent to
`types.submoduleWith { modules = toList o; shorthandOnlyDefinesConfig = true; }`.
Submodules are detailed in [Submodule](#section-option-types-submodule).
`types.submoduleWith` { *`modules`*, *`specialArgs`* ? {}, *`shorthandOnlyDefinesConfig`* ? false }
@ -239,7 +264,7 @@ Value types are types that take a value parameter.
more convenient and discoverable than expecting the module user to
type-merge with the `attrsOf submodule` option.
## Composed Types {#sec-option-types-composed}
## Composed types {#sec-option-types-composed}
Composed types are types that take a type as parameter. `listOf
int` and `either int str` are examples of composed types.
@ -496,7 +521,7 @@ Types are mainly characterized by their `check` and `merge` functions.
of strings, and `defs` the list of defined values as a list. It is
possible to override a type merge function for custom needs.
## Custom Types {#sec-option-types-custom}
## Custom types {#sec-option-types-custom}
Custom types can be created with the `mkOptionType` function. As type
creation includes some more complex topics such as submodule handling,

@ -69,8 +69,10 @@ options = {
verbatim in the manual. Useful if the default value is a
complex expression or depends on other values or packages. Use
<literal>lib.literalExpression</literal> for a Nix expression,
<literal>lib.literalDocBook</literal> for a plain English
description in DocBook format.
<literal>lib.literalMD</literal> for a plain English
description in
<link xlink:href="https://nixos.org/nixpkgs/manual/#sec-contributing-markup">Nixpkgs-flavored
Markdown</link> format.
</para>
</listitem>
</varlistentry>
@ -82,7 +84,7 @@ options = {
<para>
An example value that will be shown in the NixOS manual. You
can use <literal>lib.literalExpression</literal> and
<literal>lib.literalDocBook</literal> in the same way as in
<literal>lib.literalMD</literal> in the same way as in
<literal>defaultText</literal>.
</para>
</listitem>
@ -93,18 +95,12 @@ options = {
</term>
<listitem>
<para>
A textual description of the option, in DocBook format, that
will be included in the NixOS manual. During the migration
process from DocBook to CommonMark the description may also be
written in CommonMark, but has to be wrapped in
<literal>lib.mdDoc</literal> to differentiate it from DocBook.
See the nixpkgs manual for
<link xlink:href="https://nixos.org/nixpkgs/manual/#sec-contributing-markup">the
list of CommonMark extensions</link> supported by NixOS
documentation.
</para>
<para>
New documentation should preferably be written as CommonMark.
A textual description of the option, in
<link xlink:href="https://nixos.org/nixpkgs/manual/#sec-contributing-markup">Nixpkgs-flavored
Markdown</link> format, that will be included in the NixOS
manual. During the migration process from DocBook to
CommonMark the description may also be written in DocBook, but
this is discouraged.
</para>
</listitem>
</varlistentry>

@ -6,7 +6,7 @@
in case of multiple value definitions.
</para>
<section xml:id="sec-option-types-basic">
<title>Basic Types</title>
<title>Basic types</title>
<para>
Basic types are the simplest available types in the module system.
Basic types include multiple string types that mainly differ in
@ -49,6 +49,20 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.enum</literal>
<emphasis><literal>l</literal></emphasis>
</term>
<listitem>
<para>
One element of the list
<emphasis><literal>l</literal></emphasis>, e.g.
<literal>types.enum [ &quot;left&quot; &quot;right&quot; ]</literal>.
Multiple definitions cannot be merged.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.anything</literal>
@ -150,186 +164,241 @@
</listitem>
</varlistentry>
</variablelist>
<para>
Integer-related types:
</para>
<variablelist>
<varlistentry>
<term>
<literal>types.int</literal>
</term>
<listitem>
<para>
A signed integer.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.{s8, s16, s32}</literal>
</term>
<listitem>
<para>
Signed integers with a fixed length (8, 16 or 32 bits). They
go from −2^n/2 to 2^n/2−1 respectively (e.g.
<literal>−128</literal> to <literal>127</literal> for 8
bits).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.unsigned</literal>
</term>
<listitem>
<para>
An unsigned integer (that is &gt;= 0).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.{u8, u16, u32}</literal>
</term>
<listitem>
<para>
Unsigned integers with a fixed length (8, 16 or 32 bits).
They go from 0 to 2^n−1 respectively (e.g.
<literal>0</literal> to <literal>255</literal> for 8 bits).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.positive</literal>
</term>
<listitem>
<para>
A positive integer (that is &gt; 0).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.port</literal>
</term>
<listitem>
<para>
A port number. This type is an alias to
<literal>types.ints.u16</literal>.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
String-related types:
</para>
<variablelist>
<varlistentry>
<term>
<literal>types.str</literal>
</term>
<listitem>
<para>
A string. Multiple definitions cannot be merged.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.lines</literal>
</term>
<listitem>
<para>
A string. Multiple definitions are concatenated with a new
line <literal>&quot;\n&quot;</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.commas</literal>
</term>
<listitem>
<para>
A string. Multiple definitions are concatenated with a comma
<literal>&quot;,&quot;</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.envVar</literal>
</term>
<listitem>
<para>
A string. Multiple definitions are concatenated with a
collon <literal>&quot;:&quot;</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.strMatching</literal>
</term>
<listitem>
<para>
A string matching a specific regular expression. Multiple
definitions cannot be merged. The regular expression is
processed using <literal>builtins.match</literal>.
</para>
</listitem>
</varlistentry>
</variablelist>
<section xml:id="sec-option-types-numeric">
<title>Numeric types</title>
<variablelist>
<varlistentry>
<term>
<literal>types.int</literal>
</term>
<listitem>
<para>
A signed integer.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.{s8, s16, s32}</literal>
</term>
<listitem>
<para>
Signed integers with a fixed length (8, 16 or 32 bits).
They go from −2^n/2 to 2^n/2−1 respectively (e.g.
<literal>−128</literal> to <literal>127</literal> for 8
bits).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.unsigned</literal>
</term>
<listitem>
<para>
An unsigned integer (that is &gt;= 0).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.{u8, u16, u32}</literal>
</term>
<listitem>
<para>
Unsigned integers with a fixed length (8, 16 or 32 bits).
They go from 0 to 2^n−1 respectively (e.g.
<literal>0</literal> to <literal>255</literal> for 8
bits).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.between</literal>
<emphasis><literal>lowest highest</literal></emphasis>
</term>
<listitem>
<para>
An integer between
<emphasis><literal>lowest</literal></emphasis> and
<emphasis><literal>highest</literal></emphasis> (both
inclusive).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.positive</literal>
</term>
<listitem>
<para>
A positive integer (that is &gt; 0).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.port</literal>
</term>
<listitem>
<para>
A port number. This type is an alias to
<literal>types.ints.u16</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.float</literal>
</term>
<listitem>
<para>
A floating point number.
</para>
<warning>
<para>
Converting a floating point number to a string with
<literal>toString</literal> or <literal>toJSON</literal>
may result in
<link xlink:href="https://github.com/NixOS/nix/issues/5733">precision
loss</link>.
</para>
</warning>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.number</literal>
</term>
<listitem>
<para>
Either a signed integer or a floating point number. No
implicit conversion is done between the two types, and
multiple equal definitions will only be merged if they
have the same type.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.numbers.between</literal>
<emphasis><literal>lowest highest</literal></emphasis>
</term>
<listitem>
<para>
An integer or floating point number between
<emphasis><literal>lowest</literal></emphasis> and
<emphasis><literal>highest</literal></emphasis> (both
inclusive).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.numbers.nonnegative</literal>
</term>
<listitem>
<para>
A nonnegative integer or floating point number (that is
&gt;= 0).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.numbers.positive</literal>
</term>
<listitem>
<para>
A positive integer or floating point number (that is &gt;
0).
</para>
</listitem>
</varlistentry>
</variablelist>
</section>
<section xml:id="sec-option-types-string">
<title>String types</title>
<variablelist>
<varlistentry>
<term>
<literal>types.str</literal>
</term>
<listitem>
<para>
A string. Multiple definitions cannot be merged.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.separatedString</literal>
<emphasis><literal>sep</literal></emphasis>
</term>
<listitem>
<para>
A string. Multiple definitions are concatenated with
<emphasis><literal>sep</literal></emphasis>, e.g.
<literal>types.separatedString &quot;|&quot;</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.lines</literal>
</term>
<listitem>
<para>
A string. Multiple definitions are concatenated with a new
line <literal>&quot;\n&quot;</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.commas</literal>
</term>
<listitem>
<para>
A string. Multiple definitions are concatenated with a
comma <literal>&quot;,&quot;</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.envVar</literal>
</term>
<listitem>
<para>
A string. Multiple definitions are concatenated with a
colon <literal>&quot;:&quot;</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.strMatching</literal>
</term>
<listitem>
<para>
A string matching a specific regular expression. Multiple
definitions cannot be merged. The regular expression is
processed using <literal>builtins.match</literal>.
</para>
</listitem>
</varlistentry>
</variablelist>
</section>
</section>
<section xml:id="sec-option-types-value">
<title>Value Types</title>
<section xml:id="sec-option-types-submodule">
<title>Submodule types</title>
<para>
Value types are types that take a value parameter.
Submodules are detailed in
<link linkend="section-option-types-submodule">Submodule</link>.
</para>
<variablelist>
<varlistentry>
<term>
<literal>types.enum</literal>
<emphasis><literal>l</literal></emphasis>
</term>
<listitem>
<para>
One element of the list
<emphasis><literal>l</literal></emphasis>, e.g.
<literal>types.enum [ &quot;left&quot; &quot;right&quot; ]</literal>.
Multiple definitions cannot be merged.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.separatedString</literal>
<emphasis><literal>sep</literal></emphasis>
</term>
<listitem>
<para>
A string with a custom separator
<emphasis><literal>sep</literal></emphasis>, e.g.
<literal>types.separatedString &quot;|&quot;</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.ints.between</literal>
<emphasis><literal>lowest highest</literal></emphasis>
</term>
<listitem>
<para>
An integer between
<emphasis><literal>lowest</literal></emphasis> and
<emphasis><literal>highest</literal></emphasis> (both
inclusive). Useful for creating types like
<literal>types.port</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>types.submodule</literal>
@ -345,8 +414,6 @@
in composed types to create modular options. This is
equivalent to
<literal>types.submoduleWith { modules = toList o; shorthandOnlyDefinesConfig = true; }</literal>.
Submodules are detailed in
<link linkend="section-option-types-submodule">Submodule</link>.
</para>
</listitem>
</varlistentry>
@ -467,7 +534,7 @@
</variablelist>
</section>
<section xml:id="sec-option-types-composed">
<title>Composed Types</title>
<title>Composed types</title>
<para>
Composed types are types that take a type as parameter.
<literal>listOf int</literal> and
@ -850,7 +917,7 @@ nixThings = mkOption {
</variablelist>
</section>
<section xml:id="sec-option-types-custom">
<title>Custom Types</title>
<title>Custom types</title>
<para>
Custom types can be created with the
<literal>mkOptionType</literal> function. As type creation

@ -243,6 +243,15 @@ OK
</para>
<programlisting>
# parted /dev/sda -- mkpart primary 1MB -8GB
</programlisting>
</listitem>
<listitem>
<para>
Set the root partition’s boot flag to on. This allows the
disk to be booted from.
</para>
<programlisting>
# parted /dev/sda -- set 1 boot on
</programlisting>
</listitem>
<listitem>

@ -270,6 +270,14 @@
<link linkend="opt-services.tempo.enable">services.tempo</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://www.ausweisapp.bund.de/">AusweisApp2</link>,
the authentication software for the German ID card. Available
as
<link linkend="opt-programs.ausweisapp.enable">programs.ausweisapp</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://github.com/zalando/patroni">Patroni</link>,
@ -484,6 +492,12 @@
instead.
</para>
</listitem>
<listitem>
<para>
Neovim can not be configured with plug anymore (still works
for vim).
</para>
</listitem>
<listitem>
<para>
<literal>k3s</literal> no longer supports docker as runtime
@ -582,6 +596,25 @@
as coreboot’s fork is no longer available.
</para>
</listitem>
<listitem>
<para>
Option descriptions, examples, and defaults writting in
DocBook are now deprecated. Using CommonMark is preferred and
will become the default in a future release.
</para>
</listitem>
<listitem>
<para>
The
<literal>documentation.nixos.options.allowDocBook</literal>
option was added to ease the transition to CommonMark option
documentation. Setting this option to <literal>false</literal>
causes an error for every option included in the manual that
uses DocBook documentation; it defaults to
<literal>true</literal> to preserve the previous behavior and
will be removed once the transition to CommonMark is complete.
</para>
</listitem>
<listitem>
<para>
The udisks2 service, available at

@ -183,7 +183,13 @@ update /etc/fstab.
# parted /dev/sda -- mkpart primary 1MB -8GB
```
3. Finally, add a *swap* partition. The size required will vary
3. Set the root partition's boot flag to on. This allows the disk to be booted from.
```ShellSession
# parted /dev/sda -- set 1 boot on
```
4. Finally, add a *swap* partition. The size required will vary
according to needs, here a 8GiB one is created.
```ShellSession

@ -96,6 +96,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [Grafana Tempo](https://www.grafana.com/oss/tempo/), a distributed tracing store. Available as [services.tempo](#opt-services.tempo.enable).
- [AusweisApp2](https://www.ausweisapp.bund.de/), the authentication software for the German ID card. Available as [programs.ausweisapp](#opt-programs.ausweisapp.enable).
- [Patroni](https://github.com/zalando/patroni), a template for PostgreSQL HA with ZooKeeper, etcd or Consul.
Available as [services.patroni](options.html#opt-services.patroni.enable).
@ -168,7 +170,8 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
- The `paperless` module now defaults `PAPERLESS_TIME_ZONE` to your configured system timezone.
- (Neo)Vim can not be configured with `configure.pathogen` anymore to reduce maintainance burden.
Use `configure.packages` instead.
Use `configure.packages` instead.
- Neovim can not be configured with plug anymore (still works for vim).
- `k3s` no longer supports docker as runtime due to upstream dropping support.
@ -199,6 +202,10 @@ Use `configure.packages` instead.
- memtest86+ was updated from 5.00-coreboot-002 to 6.00-beta2. It is now the upstream version from https://www.memtest.org/, as coreboot's fork is no longer available.
- Option descriptions, examples, and defaults writting in DocBook are now deprecated. Using CommonMark is preferred and will become the default in a future release.
- The `documentation.nixos.options.allowDocBook` option was added to ease the transition to CommonMark option documentation. Setting this option to `false` causes an error for every option included in the manual that uses DocBook documentation; it defaults to `true` to preserve the previous behavior and will be removed once the transition to CommonMark is complete.
- The udisks2 service, available at `services.udisks2.enable`, is now disabled by default. It will automatically be enabled through services and desktop environments as needed.
This also means that polkit will now actually be disabled by default. The default for `security.polkit.enable` was already flipped in the previous release, but udisks2 being enabled by default re-enabled it.

@ -34,6 +34,10 @@
# instead of printing warnings for eg options with missing descriptions (which may be lost
# by nix build unless -L is given), emit errors instead and fail the build
, warningsAreErrors ? true
# allow docbook option docs if `true`. only markdown documentation is allowed when set to
# `false`, and a different renderer may be used with different bugs and performance
# characteristics but (hopefully) indistinguishable output.
, allowDocBook ? true
}:
let
@ -127,26 +131,23 @@ in rec {
];
options = builtins.toFile "options.json"
(builtins.unsafeDiscardStringContext (builtins.toJSON optionsNix));
# merge with an empty set if baseOptionsJSON is null to run markdown
# processing on the input options
baseJSON =
if baseOptionsJSON == null
then builtins.toFile "base.json" "{}"
else baseOptionsJSON;
}
''
# Export list of options in different format.
dst=$out/share/doc/nixos
mkdir -p $dst
${
if baseOptionsJSON == null
then ''
# `cp $options $dst/options.json`, but with temporary
# markdown processing
python ${./mergeJSON.py} $options <(echo '{}') > $dst/options.json
''
else ''
python ${./mergeJSON.py} \
${lib.optionalString warningsAreErrors "--warnings-are-errors"} \
${baseOptionsJSON} $options \
> $dst/options.json
''
}
python ${./mergeJSON.py} \
${lib.optionalString warningsAreErrors "--warnings-are-errors"} \
${lib.optionalString (! allowDocBook) "--error-on-docbook"} \
$baseJSON $options \
> $dst/options.json
brotli -9 < $dst/options.json > $dst/options.json.br

@ -212,8 +212,17 @@ def convertMD(options: Dict[str, Any]) -> str:
return options
warningsAreErrors = sys.argv[1] == "--warnings-are-errors"
optOffset = 1 if warningsAreErrors else 0
warningsAreErrors = False
errorOnDocbook = False
optOffset = 0
for arg in sys.argv[1:]:
if arg == "--warnings-are-errors":
optOffset += 1
warningsAreErrors = True
if arg == "--error-on-docbook":
optOffset += 1
errorOnDocbook = True
options = pivot(json.load(open(sys.argv[1 + optOffset], 'r')))
overrides = pivot(json.load(open(sys.argv[2 + optOffset], 'r')))
@ -241,9 +250,33 @@ for (k, v) in overrides.items():
severity = "error" if warningsAreErrors else "warning"
def is_docbook(o, key):
val = o.get(key, {})
if not isinstance(val, dict):
return False
return val.get('_type', '') == 'literalDocBook'
# check that every option has a description
hasWarnings = False
hasErrors = False
for (k, v) in options.items():
if errorOnDocbook:
if isinstance(v.value.get('description', {}), str):
hasErrors = True
print(
f"\x1b[1;31merror: option {v.name} description uses DocBook\x1b[0m",
file=sys.stderr)
elif is_docbook(v.value, 'defaultText'):
hasErrors = True
print(
f"\x1b[1;31merror: option {v.name} default uses DocBook\x1b[0m",
file=sys.stderr)
elif is_docbook(v.value, 'example'):
hasErrors = True
print(
f"\x1b[1;31merror: option {v.name} example uses DocBook\x1b[0m",
file=sys.stderr)
if v.value.get('description', None) is None:
hasWarnings = True
print(f"\x1b[1;31m{severity}: option {v.name} has no description\x1b[0m", file=sys.stderr)
@ -254,6 +287,8 @@ for (k, v) in options.items():
f"\x1b[1;31m{severity}: option {v.name} has no type. Please specify a valid type, see " +
"https://nixos.org/manual/nixos/stable/index.html#sec-option-types\x1b[0m", file=sys.stderr)
if hasErrors:
sys.exit(1)
if hasWarnings and warningsAreErrors:
print(
"\x1b[1;31m" +

@ -26,7 +26,7 @@ with lib;
# Provide networkmanager for easy wireless configuration.
networking.networkmanager.enable = true;
networking.wireless.enable = mkForce false;
networking.wireless.enable = mkImageMediaOverride false;
# KDE complains if power management is disabled (to be precise, if
# there is no power management backend such as upower).

@ -99,7 +99,7 @@ let
exit 1
} >&2
'';
inherit (cfg.nixos.options) warningsAreErrors;
inherit (cfg.nixos.options) warningsAreErrors allowDocBook;
};
@ -255,6 +255,23 @@ in
'';
};
nixos.options.allowDocBook = mkOption {
type = types.bool;
default = true;
description = lib.mdDoc ''
Whether to allow DocBook option docs. When set to `false` all option using
DocBook documentation will cause a manual build error; additionally a new
renderer may be used.
::: {.note}
The `false` setting for this option is not yet fully supported. While it
should work fine and produce the same output as the previous toolchain
using DocBook it may not work in all circumstances. Whether markdown option
documentation is allowed is independent of this option.
:::
'';
};
nixos.options.warningsAreErrors = mkOption {
type = types.bool;
default = true;

@ -128,6 +128,7 @@
./programs/adb.nix
./programs/appgate-sdp.nix
./programs/atop.nix
./programs/ausweisapp.nix
./programs/autojump.nix
./programs/bandwhich.nix
./programs/bash/bash.nix

@ -22,10 +22,10 @@ with lib;
config = {
# Enable in installer, even if the minimal profile disables it.
documentation.enable = mkForce true;
documentation.enable = mkImageMediaOverride true;
# Show the manual.
documentation.nixos.enable = mkForce true;
documentation.nixos.enable = mkImageMediaOverride true;
# Use less privileged nixos user
users.users.nixos = {
@ -41,7 +41,7 @@ with lib;
# Allow passwordless sudo from nixos user
security.sudo = {
enable = mkDefault true;
wheelNeedsPassword = mkForce false;
wheelNeedsPassword = mkImageMediaOverride false;
};
# Automatically log in at the virtual consoles.

@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.ausweisapp;
in
{
options.programs.ausweisapp = {
enable = mkEnableOption (lib.mdDoc "AusweisApp2");
openFirewall = mkOption {
description = lib.mdDoc ''
Whether to open the required firewall ports for the Smartphone as Card Reader (SaC) functionality of AusweisApp2.
'';
default = false;
type = lib.types.bool;
};
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ AusweisApp2 ];
networking.firewall.allowedUDPPorts = lib.optionals cfg.openFirewall [ 24727 ];
};
}

@ -7,7 +7,7 @@ let
format = pkgs.formats.toml { };
in {
options.programs.rust-motd = {
enable = mkEnableOption "rust-motd";
enable = mkEnableOption (lib.mdDoc "rust-motd");
enableMotdInSSHD = mkOption {
default = true;
type = types.bool;

@ -52,10 +52,11 @@ let
{ type = lib.types.commas;
default = "";
description = lib.mdDoc ''
A comma-separated list of capabilities to be given to the wrapper
program. For capabilities supported by the system check the
{manpage}`capabilities(7)`
manual page.
A comma-separated list of capability clauses to be given to the
wrapper program. The format for capability clauses is described in the
TEXTUAL REPRESENTATION section of the {manpage}`cap_from_text(3)`
manual page. For a list of capabilities supported by the system, check
the {manpage}`capabilities(7)` manual page.
::: {.note}
`cap_setpcap`, which is required for the wrapper

@ -9,7 +9,7 @@ let
inherit name;
value = mkOption {
default = null;
inherit description;
description = lib.mdDoc description;
type = types.nullOr types.lines;
} // (if example == null then {} else { inherit example; });
};

@ -96,10 +96,8 @@ let
};
} cfg.extraConfig;
configFile = pkgs.runCommandLocal "config.toml" {
nativeBuildInputs = [ pkgs.remarshal ];
} ''
remarshal -if json -of toml \
configFile = pkgs.runCommandLocal "config.toml" { } ''
${pkgs.buildPackages.remarshal}/bin/remarshal -if json -of toml \
< ${pkgs.writeText "config.json" (builtins.toJSON configOptions)} \
> $out
'';

@ -6,7 +6,7 @@ in {
meta = { maintainers = with lib.maintainers; [ numkem ]; };
options = {
services.espanso = { enable = options.mkEnableOption "Espanso"; };
services.espanso = { enable = options.mkEnableOption (lib.mdDoc "Espanso"); };
};
config = mkIf cfg.enable {

@ -43,8 +43,10 @@ in
format = pkgs.formats.toml { };
conf = format.generate "vector.toml" cfg.settings;
validateConfig = file:
pkgs.runCommand "validate-vector-conf" { } ''
${pkgs.vector}/bin/vector validate --no-environment "${file}"
pkgs.runCommand "validate-vector-conf" {
nativeBuildInputs = [ pkgs.buildPackages.vector ];
} ''
vector validate --no-environment "${file}"
ln -s "${file}" "$out"
'';
in

@ -87,6 +87,14 @@ in
description = lib.mdDoc "Specifies the path of the repository directory. If it does not exist, Gollum will create it on startup.";
};
package = mkOption {
type = types.package;
default = pkgs.gollum;
defaultText = literalExpression "pkgs.gollum";
description = lib.mdDoc ''
The package used in the service
'';
};
};
config = mkIf cfg.enable {
@ -120,7 +128,7 @@ in
Group = config.users.groups.gollum.name;
WorkingDirectory = cfg.stateDir;
ExecStart = ''
${pkgs.gollum}/bin/gollum \
${cfg.package}/bin/gollum \
--port ${toString cfg.port} \
--host ${cfg.address} \
--config ${pkgs.writeText "gollum-config.rb" cfg.extraConfig} \

@ -362,7 +362,9 @@ in {
in mkIf cfg.enable {
systemd.services.mediatomb = {
description = "${cfg.serverName} media Server";
after = [ "network.target" ];
# Gerbera might fail if the network interface is not available on startup
# https://github.com/gerbera/gerbera/issues/1324
after = [ "network.target" "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig.ExecStart = "${binaryCommand} --port ${toString cfg.port} ${interfaceFlag} ${configFlag} --home ${cfg.dataDir}";
serviceConfig.User = cfg.user;

@ -16,13 +16,13 @@ let
PAPERLESS_MEDIA_ROOT = cfg.mediaDir;
PAPERLESS_CONSUMPTION_DIR = cfg.consumptionDir;
GUNICORN_CMD_ARGS = "--bind=${cfg.address}:${toString cfg.port}";
} // (
lib.mapAttrs (_: toString) cfg.extraConfig
) // optionalAttrs (config.time.timeZone != null) {
PAPERLESS_TIME_ZONE = lib.mkDefault config.time.timeZone;
} // optionalAttrs (config.time.timeZone != null) {
PAPERLESS_TIME_ZONE = config.time.timeZone;
} // optionalAttrs enableRedis {
PAPERLESS_REDIS = "unix://${redisServer.unixSocket}";
};
} // (
lib.mapAttrs (_: toString) cfg.extraConfig
);
manage = let
setupEnv = lib.concatStringsSep "\n" (mapAttrsToList (name: val: "export ${name}=\"${val}\"") env);

@ -101,7 +101,7 @@ let
todosrht
]);
mkOptionNullOrStr = description: mkOption {
inherit description;
description = lib.mdDoc description;
type = with types; nullOr str;
default = null;
};

@ -628,18 +628,18 @@ in {
};
allowedDomains = mkOption {
description = lib.mdDoc ''
To limit access to authenticated users who are members of one or more groups,
set allowedGroups to a comma- or space-separated list of group object IDs.
You can find object IDs for a specific group on the Azure portal.
Limits access to users who belong to specific domains.
Separate domains with space or comma.
'';
default = "";
type = types.str;
};
allowedGroups = mkOption {
description = lib.mdDoc ''
Limits access to users who belong to specific domains.
Separate domains with space or comma.
'';
To limit access to authenticated users who are members of one or more groups,
set allowedGroups to a comma- or space-separated list of group object IDs.
You can find object IDs for a specific group on the Azure portal.
'';
default = "";
type = types.str;
};

@ -16,7 +16,7 @@ in
};
"${field}" = lib.mkOption {
type = int;
inherit description;
description = lib.mdDoc description;
};
location = lib.mkOption {
type = str;

@ -11,7 +11,7 @@ in
v2rayEndpoint = mkOption {
type = types.str;
default = "127.0.0.1:54321";
description = ''
description = lib.mdDoc ''
v2ray grpc api endpoint
'';
};

@ -396,12 +396,12 @@ in
};
precomputation.elgamal = mkEnableTrueOption "Precomputed ElGamal tables" // {
description = ''
description = lib.mdDoc ''
Whenever to use precomputated tables for ElGamal.
<command>i2pd</command> defaults to <literal>false</literal>
{command}`i2pd` defaults to `false`
to save 64M of memory (and looses some performance).
We default to <literal>true</literal> as that is what most
We default to `true` as that is what most
users want anyway.
'';
};

@ -268,11 +268,11 @@ in
type = types.nullOr types.path;
default = null;
example = "/run/keys/keepalived.env";
description = ''
description = lib.mdDoc ''
Environment variables from this file will be interpolated into the
final config file using envsubst with this syntax: <literal>$ENVIRONMENT</literal>
or <literal>''${VARIABLE}</literal>.
The file should contain lines formatted as <literal>SECRET_VAR=SECRET_VALUE</literal>.
final config file using envsubst with this syntax: `$ENVIRONMENT`
or `''${VARIABLE}`.
The file should contain lines formatted as `SECRET_VAR=SECRET_VALUE`.
This is useful to avoid putting secrets into the nix store.
'';
};

@ -152,7 +152,7 @@ rec {
option = mkOption {
type = types.attrsOf (types.submodule {options = paramsToOptions params;});
default = {};
inherit description;
description = lib.mdDoc description;
};
render = postfix: attrs:
let postfixedAttrs = mapAttrs' (name: nameValuePair "${name}-${postfix}") attrs;

@ -325,11 +325,12 @@ in {
};
type = mkOption {
type = types.enum [ "sendreceive" "sendonly" "receiveonly" ];
type = types.enum [ "sendreceive" "sendonly" "receiveonly" "receiveencrypted" ];
default = "sendreceive";
description = lib.mdDoc ''
Whether to only send changes for this folder, only receive them
or both.
or both. `receiveencrypted` can be used for untrusted devices. See
<https://docs.syncthing.net/users/untrusted.html> for reference.
'';
};
@ -528,6 +529,8 @@ in {
};
systemd.services = {
# upstream reference:
# https://github.com/syncthing/syncthing/blob/main/etc/linux-systemd/system/syncthing%40.service
syncthing = mkIf cfg.systemService {
description = "Syncthing service";
after = [ "network.target" ];
@ -539,7 +542,7 @@ in {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Restart = "on-failure";
SuccessExitStatus = "2 3 4";
SuccessExitStatus = "3 4";
RestartForceExitStatus="3 4";
User = cfg.user;
Group = cfg.group;

@ -187,12 +187,12 @@ in {
};
allowAuxiliaryImperativeNetworks = mkEnableOption (lib.mdDoc "support for imperative & declarative networks") // {
description = ''
description = lib.mdDoc ''
Whether to allow configuring networks "imperatively" (e.g. via
<literal>wpa_supplicant_gui</literal>) and declaratively via
<xref linkend="opt-networking.wireless.networks"/>.
`wpa_supplicant_gui`) and declaratively via
[](#opt-networking.wireless.networks).
Please note that this adds a custom patch to <literal>wpa_supplicant</literal>.
Please note that this adds a custom patch to `wpa_supplicant`.
'';
};

@ -29,6 +29,12 @@ in {
description = lib.mdDoc "Profile name, defaults to 'system' (NixOS).";
};
host = mkOption {
type = types.str;
default = null;
description = lib.mdDoc "Cachix uri to use.";
};
package = mkOption {
type = types.package;
default = pkgs.cachix;
@ -63,7 +69,10 @@ in {
KillMode = "process";
Restart = "on-failure";
EnvironmentFile = cfg.credentialsFile;
ExecStart = "${cfg.package}/bin/cachix ${lib.optionalString cfg.verbose "--verbose"} deploy agent ${cfg.name} ${if cfg.profile != null then profile else ""}";
ExecStart = ''
${cfg.package}/bin/cachix ${lib.optionalString cfg.verbose "--verbose"} ${lib.optionalString (cfg.host != null) "--host ${cfg.host}"} \
deploy agent ${cfg.name} ${if cfg.profile != null then cfg.profile else ""}
'';
};
};
};

@ -48,12 +48,12 @@ in
{
# interface
options.services.dolibarr = {
enable = mkEnableOption "dolibarr";
enable = mkEnableOption (lib.mdDoc "dolibarr");
domain = mkOption {
type = types.str;
default = "localhost";
description = ''
description = lib.mdDoc ''
Domain name of your server.
'';
};
@ -61,35 +61,35 @@ in
user = mkOption {
type = types.str;
default = "dolibarr";
description = ''
description = lib.mdDoc ''
User account under which dolibarr runs.
<note><para>
If left as the default value this user will automatically be created
on system activation, otherwise you are responsible for
ensuring the user exists before the dolibarr application starts.
</para></note>
::: {.note}
If left as the default value this user will automatically be created
on system activation, otherwise you are responsible for
ensuring the user exists before the dolibarr application starts.
:::
'';
};
group = mkOption {
type = types.str;
default = "dolibarr";
description = ''
description = lib.mdDoc ''
Group account under which dolibarr runs.
<note><para>
If left as the default value this group will automatically be created
on system activation, otherwise you are responsible for
ensuring the group exists before the dolibarr application starts.
</para></note>
::: {.note}
If left as the default value this group will automatically be created
on system activation, otherwise you are responsible for
ensuring the group exists before the dolibarr application starts.
:::
'';
};
stateDir = mkOption {
type = types.str;
default = "/var/lib/dolibarr";
description = ''
description = lib.mdDoc ''
State and configuration directory dolibarr will use.
'';
};
@ -98,33 +98,33 @@ in
host = mkOption {
type = types.str;
default = "localhost";
description = "Database host address.";
description = lib.mdDoc "Database host address.";
};
port = mkOption {
type = types.port;
default = 3306;
description = "Database host port.";
description = lib.mdDoc "Database host port.";
};
name = mkOption {
type = types.str;
default = "dolibarr";
description = "Database name.";
description = lib.mdDoc "Database name.";
};
user = mkOption {
type = types.str;
default = "dolibarr";
description = "Database username.";
description = lib.mdDoc "Database username.";
};
passwordFile = mkOption {
type = with types; nullOr path;
default = null;
example = "/run/keys/dolibarr-dbpassword";
description = "Database password file.";
description = lib.mdDoc "Database password file.";
};
createLocally = mkOption {
type = types.bool;
default = true;
description = "Create the database and database user locally.";
description = lib.mdDoc "Create the database and database user locally.";
};
};

@ -117,7 +117,7 @@ in
file_server
}
@for_backend {
path /api/* /pictrs/* feeds/* nodeinfo/*
path /api/* /pictrs/* /feeds/* /nodeinfo/*
}
handle @for_backend {
reverse_proxy 127.0.0.1:${toString cfg.settings.port}

@ -133,45 +133,45 @@ let
in {
options.services.writefreely = {
enable =
lib.mkEnableOption "Writefreely, build a digital writing community";
lib.mkEnableOption (lib.mdDoc "Writefreely, build a digital writing community");
package = lib.mkOption {
type = lib.types.package;
default = pkgs.writefreely;
defaultText = lib.literalExpression "pkgs.writefreely";
description = "Writefreely package to use.";
description = lib.mdDoc "Writefreely package to use.";
};
stateDir = mkOption {
type = types.path;
default = "/var/lib/writefreely";
description = "The state directory where keys and data are stored.";
description = lib.mdDoc "The state directory where keys and data are stored.";
};
user = mkOption {
type = types.str;
default = "writefreely";
description = "User under which Writefreely is ran.";
description = lib.mdDoc "User under which Writefreely is ran.";
};
group = mkOption {
type = types.str;
default = "writefreely";
description = "Group under which Writefreely is ran.";
description = lib.mdDoc "Group under which Writefreely is ran.";
};
host = mkOption {
type = types.str;
default = "";
description = "The public host name to serve.";
description = lib.mdDoc "The public host name to serve.";
example = "example.com";
};
settings = mkOption {
default = { };
description = ''
Writefreely configuration (<filename>config.ini</filename>). Refer to
<link xlink:href="https://writefreely.org/docs/latest/admin/config" />
description = lib.mdDoc ''
Writefreely configuration ({file}`config.ini`). Refer to
<https://writefreely.org/docs/latest/admin/config>
for details.
'';
@ -183,7 +183,7 @@ in {
theme = mkOption {
type = types.str;
default = "write";
description = "The theme to apply.";
description = lib.mdDoc "The theme to apply.";
};
};
@ -192,7 +192,7 @@ in {
type = types.port;
default = if cfg.nginx.enable then 18080 else 80;
defaultText = "80";
description = "The port WriteFreely should listen on.";
description = lib.mdDoc "The port WriteFreely should listen on.";
};
};
};
@ -203,60 +203,60 @@ in {
type = mkOption {
type = types.enum [ "sqlite3" "mysql" ];
default = "sqlite3";
description = "The database provider to use.";
description = lib.mdDoc "The database provider to use.";
};
name = mkOption {
type = types.str;
default = "writefreely";
description = "The name of the database to store data in.";
description = lib.mdDoc "The name of the database to store data in.";
};
user = mkOption {
type = types.nullOr types.str;
default = if cfg.database.type == "mysql" then "writefreely" else null;
defaultText = "writefreely";
description = "The database user to connect as.";
description = lib.mdDoc "The database user to connect as.";
};
passwordFile = mkOption {
type = types.nullOr types.path;
default = null;
description = "The file to load the database password from.";
description = lib.mdDoc "The file to load the database password from.";
};
host = mkOption {
type = types.str;
default = "localhost";
description = "The database host to connect to.";
description = lib.mdDoc "The database host to connect to.";
};
port = mkOption {
type = types.port;
default = 3306;
description = "The port used when connecting to the database host.";
description = lib.mdDoc "The port used when connecting to the database host.";
};
tls = mkOption {
type = types.bool;
default = false;
description =
"Whether or not TLS should be used for the database connection.";
lib.mdDoc "Whether or not TLS should be used for the database connection.";
};
migrate = mkOption {
type = types.bool;
default = true;
description =
"Whether or not to automatically run migrations on startup.";
lib.mdDoc "Whether or not to automatically run migrations on startup.";
};
createLocally = mkOption {
type = types.bool;
default = false;
description = ''
When <option>services.writefreely.database.type</option> is set to
<code>"mysql"</code>, this option will enable the MySQL service locally.
description = lib.mdDoc ''
When {option}`services.writefreely.database.type` is set to
`"mysql"`, this option will enable the MySQL service locally.
'';
};
};
@ -264,15 +264,15 @@ in {
admin = {
name = mkOption {
type = types.nullOr types.str;
description = "The name of the first admin user.";
description = lib.mdDoc "The name of the first admin user.";
default = null;
};
initialPasswordFile = mkOption {
type = types.path;
description = ''
description = lib.mdDoc ''
Path to a file containing the initial password for the admin user.
If not provided, the default password will be set to <code>nixos</code>.
If not provided, the default password will be set to `nixos`.
'';
default = pkgs.writeText "default-admin-pass" "nixos";
defaultText = "/nix/store/xxx-default-admin-pass";
@ -284,13 +284,13 @@ in {
type = types.bool;
default = false;
description =
"Whether or not to enable and configure nginx as a proxy for WriteFreely.";
lib.mdDoc "Whether or not to enable and configure nginx as a proxy for WriteFreely.";
};
forceSSL = mkOption {
type = types.bool;
default = false;
description = "Whether or not to force the use of SSL.";
description = lib.mdDoc "Whether or not to force the use of SSL.";
};
};
@ -299,7 +299,7 @@ in {
type = types.bool;
default = false;
description =
"Whether or not to automatically fetch and configure SSL certs.";
lib.mdDoc "Whether or not to automatically fetch and configure SSL certs.";
};
};
};

@ -11,15 +11,6 @@ let
addCheck (listOf x) (y: length y == 2)
// { description = "pair of ${x.description}"; };
floatBetween = a: b: with types;
let
# toString prints floats with hardcoded high precision
floatToString = f: builtins.toJSON f;
in
addCheck float (x: x <= b && x >= a)
// { description = "a floating point number in " +
"range [${floatToString a}, ${floatToString b}]"; };
mkDefaultAttrs = mapAttrs (n: v: mkDefault v);
# Basically a tinkered lib.generators.mkKeyValueDefault
@ -93,7 +84,7 @@ in {
};
fadeSteps = mkOption {
type = pairOf (floatBetween 0.01 1);
type = pairOf (types.numbers.between 0.01 1);
default = [ 0.028 0.03 ];
example = [ 0.04 0.04 ];
description = lib.mdDoc ''
@ -133,7 +124,7 @@ in {
};
shadowOpacity = mkOption {
type = floatBetween 0 1;
type = types.numbers.between 0 1;
default = 0.75;
example = 0.8;
description = lib.mdDoc ''
@ -156,7 +147,7 @@ in {
};
activeOpacity = mkOption {
type = floatBetween 0 1;
type = types.numbers.between 0 1;
default = 1.0;
example = 0.8;
description = lib.mdDoc ''
@ -165,7 +156,7 @@ in {
};
inactiveOpacity = mkOption {
type = floatBetween 0.1 1;
type = types.numbers.between 0.1 1;
default = 1.0;
example = 0.8;
description = lib.mdDoc ''
@ -174,7 +165,7 @@ in {
};
menuOpacity = mkOption {
type = floatBetween 0 1;
type = types.numbers.between 0 1;
default = 1.0;
example = 0.8;
description = lib.mdDoc ''

@ -148,6 +148,7 @@ let
+ optionalString dev.bypassWorkqueues " --perf-no_read_workqueue --perf-no_write_workqueue"
+ optionalString (dev.header != null) " --header=${dev.header}";
cschange = "cryptsetup luksChangeKey ${dev.device} ${optionalString (dev.header != null) "--header=${dev.header}"}";
fido2luksCredentials = dev.fido2.credentials ++ optional (dev.fido2.credential != null) dev.fido2.credential;
in ''
# Wait for luksRoot (and optionally keyFile and/or header) to appear, e.g.
# if on a USB drive.
@ -417,7 +418,7 @@ let
}
''}
${optionalString (luks.fido2Support && (dev.fido2.credential != null)) ''
${optionalString (luks.fido2Support && fido2luksCredentials != []) ''
open_with_hardware() {
local passsphrase
@ -433,7 +434,7 @@ let
echo "Please move your mouse to create needed randomness."
''}
echo "Waiting for your FIDO2 device..."
fido2luks open${optionalString dev.allowDiscards " --allow-discards"} ${dev.device} ${dev.name} ${dev.fido2.credential} --await-dev ${toString dev.fido2.gracePeriod} --salt string:$passphrase
fido2luks open${optionalString dev.allowDiscards " --allow-discards"} ${dev.device} ${dev.name} "${builtins.concatStringsSep "," fido2luksCredentials}" --await-dev ${toString dev.fido2.gracePeriod} --salt string:$passphrase
if [ $? -ne 0 ]; then
echo "No FIDO2 key found, falling back to normal open procedure"
open_normally
@ -444,7 +445,7 @@ let
# commands to run right before we mount our device
${dev.preOpenCommands}
${if (luks.yubikeySupport && (dev.yubikey != null)) || (luks.gpgSupport && (dev.gpgCard != null)) || (luks.fido2Support && (dev.fido2.credential != null)) then ''
${if (luks.yubikeySupport && (dev.yubikey != null)) || (luks.gpgSupport && (dev.gpgCard != null)) || (luks.fido2Support && fido2luksCredentials != []) then ''
open_with_hardware
'' else ''
open_normally
@ -695,6 +696,17 @@ in
description = lib.mdDoc "The FIDO2 credential ID.";
};
credentials = mkOption {
default = [];
example = [ "f1d00200d8dc783f7fb1e10ace8da27f8312d72692abfca2f7e4960a73f48e82e1f7571f6ebfcee9fb434f9886ccc8fcc52a6614d8d2" ];
type = types.listOf types.str;
description = lib.mdDoc ''
List of FIDO2 credential IDs.
Use this if you have multiple FIDO2 keys you want to use for the same luks device.
'';
};
gracePeriod = mkOption {
default = 10;
type = types.int;

@ -1257,11 +1257,10 @@ let
default = {};
example = { Route = "fd00::/64"; };
type = types.addCheck (types.attrsOf unitOption) check.network.sectionIPv6RoutePrefix;
description = ''
description = lib.mdDoc ''
Each attribute in this set specifies an option in the
<literal>[IPv6RoutePrefix]</literal> section of the unit. See
<citerefentry><refentrytitle>systemd.network</refentrytitle>
<manvolnum>5</manvolnum></citerefentry> for details.
`[IPv6RoutePrefix]` section of the unit. See
{manpage}`systemd.network(5)` for details.
'';
};
};
@ -1411,12 +1410,11 @@ let
ipv6RoutePrefixes = mkOption {
default = [];
example = [ { Route = "fd00::/64"; LifetimeSec = 3600; } ];
example = [ { ipv6RoutePrefixConfig = { Route = "fd00::/64"; LifetimeSec = 3600; }; } ];
type = with types; listOf (submodule ipv6RoutePrefixOptions);
description = ''
description = lib.mdDoc ''
A list of ipv6RoutePrefix sections to be added to the unit. See
<citerefentry><refentrytitle>systemd.network</refentrytitle>
<manvolnum>5</manvolnum></citerefentry> for details.
{manpage}`systemd.network(5)` for details.
'';
};

@ -127,8 +127,28 @@ with lib;
name = "proxmox-${cfg.filenameSuffix}";
postVM = let
# Build qemu with PVE's patch that adds support for the VMA format
vma = pkgs.qemu_kvm.overrideAttrs ( super: rec {
vma = (pkgs.qemu_kvm.override {
alsaSupport = false;
pulseSupport = false;
sdlSupport = false;
jackSupport = false;
gtkSupport = false;
vncSupport = false;
smartcardSupport = false;
spiceSupport = false;
ncursesSupport = false;
libiscsiSupport = false;
tpmSupport = false;
numaSupport = false;
seccompSupport = false;
guestAgentSupport = false;
}).overrideAttrs ( super: rec {
version = "7.0.0";
src = pkgs.fetchurl {
url= "https://download.qemu.org/qemu-${version}.tar.xz";
sha256 = "sha256-9rN1x5UfcoQCeYsLqrsthkeMpT1Eztvvq74cRr9G+Dk=";
};
patches = [
(pkgs.fetchpatch {
url =

@ -584,7 +584,7 @@ in
example = literalExpression ''
import pkgs.path { system = "x86_64-darwin"; }
'';
description = ''
description = lib.mdDoc ''
pkgs set to use for the host-specific packages of the vm runner.
Changing this to e.g. a Darwin package set allows running NixOS VMs on Darwin.
'';

@ -189,6 +189,7 @@ in {
gobgpd = handleTest ./gobgpd.nix {};
gocd-agent = handleTest ./gocd-agent.nix {};
gocd-server = handleTest ./gocd-server.nix {};
gollum = handleTest ./gollum.nix {};
google-oslogin = handleTest ./google-oslogin {};
gotify-server = handleTest ./gotify-server.nix {};
grafana = handleTest ./grafana.nix {};

@ -18,7 +18,7 @@ let
services.gitea = {
enable = true;
database = { inherit type; };
disableRegistration = true;
settings.service.DISABLE_REGISTRATION = true;
};
environment.systemPackages = [ pkgs.gitea pkgs.jq ];
services.openssh.enable = true;

@ -0,0 +1,14 @@
import ./make-test-python.nix ({ pkgs, ... }: {
name = "gollum";
nodes = {
webserver = { pkgs, lib, ... }: {
services.gollum.enable = true;
};
};
testScript = { nodes, ... }: ''
webserver.wait_for_unit("gollum")
webserver.wait_for_open_port(${toString nodes.webserver.config.services.gollum.port})
'';
})

@ -23,6 +23,13 @@ in
hostname = "http://${lemmyNodeName}";
port = backendPort;
database.createLocally = true;
# Without setup, the /feeds/* and /nodeinfo/* API endpoints won't return 200
setup = {
admin_username = "mightyiam";
admin_password = "ThisIsWhatIUseEverywhereTryIt";
site_name = "Lemmy FTW";
admin_email = "mightyiam@example.com";
};
};
caddy.enable = true;
};
@ -76,7 +83,8 @@ in
# No path can return 200 until after we upload an image to pict-rs
assert_http_code("${lemmyNodeName}/pictrs/", 404)
# The paths `/feeds/*` and `/nodeinfo/*` are not tested because they seem to be misconfigured
assert_http_code("${lemmyNodeName}/feeds/all.xml", 200)
assert_http_code("${lemmyNodeName}/nodeinfo/2.0.json", 200)
assert_http_code("${lemmyNodeName}/some-other-made-up-path/", 404, "-X POST")
assert_http_code("${lemmyNodeName}/some-other-path", 404, "-H 'Accept: application/activity+json'")

@ -1,81 +1,44 @@
import ./make-test-python.nix ({ pkgs, ... }:
{
import ./make-test-python.nix {
name = "mediatomb";
nodes = {
serverGerbera =
{ ... }:
let port = 49152;
in {
imports = [ ../modules/profiles/minimal.nix ];
services.mediatomb = {
enable = true;
serverName = "Gerbera";
package = pkgs.gerbera;
interface = "eth1"; # accessible from test
openFirewall = true;
mediaDirectories = [
{ path = "/var/lib/gerbera/pictures"; recursive = false; hidden-files = false; }
{ path = "/var/lib/gerbera/audio"; recursive = true; hidden-files = false; }
];
};
};
serverMediatomb =
{ ... }:
let port = 49151;
in {
imports = [ ../modules/profiles/minimal.nix ];
services.mediatomb = {
enable = true;
serverName = "Mediatomb";
package = pkgs.mediatomb;
interface = "eth1";
inherit port;
mediaDirectories = [
{ path = "/var/lib/mediatomb/pictures"; recursive = false; hidden-files = false; }
{ path = "/var/lib/mediatomb/audio"; recursive = true; hidden-files = false; }
];
};
networking.firewall.interfaces.eth1 = {
allowedUDPPorts = [ 1900 port ];
allowedTCPPorts = [ port ];
};
server = {
services.mediatomb = {
enable = true;
serverName = "Gerbera";
interface = "eth1";
openFirewall = true;
mediaDirectories = [
{
path = "/var/lib/gerbera/pictures";
recursive = false;
hidden-files = false;
}
{
path = "/var/lib/gerbera/audio";
recursive = true;
hidden-files = false;
}
];
};
systemd.tmpfiles.rules = [
"d /var/lib/gerbera/pictures 0770 mediatomb mediatomb"
"d /var/lib/gerbera/audio 0770 mediatomb mediatomb"
];
};
client = { ... }: { };
client = {};
};
testScript =
''
testScript = ''
start_all()
port = 49151
serverMediatomb.succeed("mkdir -p /var/lib/mediatomb/{pictures,audio}")
serverMediatomb.succeed("chown -R mediatomb:mediatomb /var/lib/mediatomb")
serverMediatomb.wait_for_unit("mediatomb")
serverMediatomb.wait_for_open_port(port)
serverMediatomb.succeed(f"curl --fail http://serverMediatomb:{port}/")
page = client.succeed(f"curl --fail http://serverMediatomb:{port}/")
assert "MediaTomb" in page and "Gerbera" not in page
serverMediatomb.shutdown()
server.wait_for_unit("mediatomb")
server.wait_until_succeeds("nc -z 192.168.1.2 49152")
server.succeed("curl -v --fail http://server:49152/")
port = 49152
serverGerbera.succeed("mkdir -p /var/lib/mediatomb/{pictures,audio}")
serverGerbera.succeed("chown -R mediatomb:mediatomb /var/lib/mediatomb")
# service running gerbera fails the first time claiming something is already bound
# gerbera[715]: 2020-07-18 23:52:14 info: Please check if another instance of Gerbera or
# gerbera[715]: 2020-07-18 23:52:14 info: another application is running on port TCP 49152 or UDP 1900.
# I did not find anything so here I work around this
serverGerbera.succeed("sleep 2")
serverGerbera.wait_until_succeeds("systemctl restart mediatomb")
serverGerbera.wait_for_unit("mediatomb")
serverGerbera.succeed(f"curl --fail http://serverGerbera:{port}/")
page = client.succeed(f"curl --fail http://serverGerbera:{port}/")
client.wait_for_unit("multi-user.target")
page = client.succeed("curl -v --fail http://server:49152/")
assert "Gerbera" in page and "MediaTomb" not in page
serverGerbera.shutdown()
client.shutdown()
'';
})
}

@ -47,9 +47,8 @@ in {
};
};
services.redis = {
enable = true;
};
services.redis.servers."nextcloud".enable = true;
services.redis.servers."nextcloud".port = 6379;
systemd.services.nextcloud-setup= {
requires = ["postgresql.service"];

@ -37,9 +37,8 @@ in {
};
};
services.redis = {
enable = true;
};
services.redis.servers."nextcloud".enable = true;
services.redis.servers."nextcloud".port = 6379;
systemd.services.nextcloud-setup= {
requires = ["postgresql.service"];

@ -0,0 +1,35 @@
{ lib
, python3Packages
}:
with python3Packages;
buildPythonApplication rec {
pname = "miniplayer";
version = "1.7.0";
format = "pyproject";
src = fetchPypi {
inherit pname version;
hash = "sha256-JUlUFj/5DOTLa1XCZX/9Nj3Z9W+k4gnpJONiS4qNBIU=";
};
propagatedBuildInputs = [
colorthief
ffmpeg-python
mpd2
pillow
pixcat
requests
ueberzug
];
# pythonImportsCheck is disabled because this package doesn't expose any modules.
meta = with lib; {
description = "A curses-based MPD client with basic functionality that can also display an album art";
homepage = "https://github.com/GuardKenzie/miniplayer";
license = licenses.mit;
maintainers = with maintainers; [ azahi ];
};
}

@ -2,11 +2,11 @@
python3Packages.buildPythonApplication rec {
pname = "Mopidy-Iris";
version = "3.60.0";
version = "3.64.0";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "18w6qqmxzn8psiacybryxailm826f3j1wgiv0c03fbdsy6kr5f7l";
sha256 = "062x73glhn1x4wgc7zmb9y3cq15d5grgqf5drdpbp6p3cgk4s2vc";
};
propagatedBuildInputs = [

@ -2,19 +2,14 @@
python3Packages.buildPythonApplication rec {
pname = "mopidy-ytmusic";
version = "0.3.5";
version = "0.3.7";
src = python3Packages.fetchPypi {
inherit version;
pname = "Mopidy-YTMusic";
sha256 = "0pncyxfqxvznb9y4ksndbny1yf5mxh4089ak0yz86dp2qi5j99iv";
sha256 = "0gqjvi3nfzkqvbdhihzai241p1h5p037bj2475cc93xwzyyqxcrq";
};
postPatch = ''
substituteInPlace setup.py \
--replace 'ytmusicapi>=0.20.0,<0.21.0' 'ytmusicapi>=0.20.0'
'';
propagatedBuildInputs = [
mopidy
python3Packages.ytmusicapi

@ -2,13 +2,13 @@
python3Packages.buildPythonApplication rec {
pname = "pyradio";
version = "0.8.9.25";
version = "0.8.9.26";
src = fetchFromGitHub {
owner = "coderholic";
repo = pname;
rev = "refs/tags/${version}";
sha256 = "sha256-bkZ+zgFtENQUjks9HwVcqHIREcKQ5XCt3AEh3QAyiEc=";
sha256 = "sha256-RuQAbmzB8s+YmJLSbzJTQtpiYLr1oFtrxKF8P+MlHeU=";
};
nativeBuildInputs = [ installShellFiles ];

@ -1,66 +1,168 @@
{ lib, fetchurl, python3, wrapGAppsHook, gettext, libsoup, gnome, gtk3, gdk-pixbuf, librsvg,
tag ? "", xvfb-run, dbus, glibcLocales, glib, glib-networking, gobject-introspection, hicolor-icon-theme,
gst_all_1, withGstPlugins ? true,
xineBackend ? false, xine-lib,
withDbusPython ? false, withPyInotify ? false, withMusicBrainzNgs ? false, withPahoMqtt ? false,
webkitgtk ? null,
keybinder3 ? null, gtksourceview ? null, libmodplug ? null, kakasi ? null, libappindicator-gtk3 ? null }:
let optionals = lib.optionals; in
{ lib
, fetchFromGitHub
, fetchpatch
, tag ? ""
# build time
, gettext
, gobject-introspection
, wrapGAppsHook
# runtime
, adwaita-icon-theme
, gdk-pixbuf
, glib
, glib-networking
, gtk3
, gtksourceview
, kakasi
, keybinder3
, libappindicator-gtk3
, libmodplug
, librsvg
, libsoup
, webkitgtk
# optional features
, withDbusPython ? false
, withPypresence ? false
, withPyInotify ? false
, withMusicBrainzNgs ? false
, withPahoMqtt ? false
, withSoco ? false
# backends
, withGstreamerBackend ? true, gst_all_1
, withGstPlugins ? withGstreamerBackend
, withXineBackend ? true, xine-lib
# tests
, dbus
, glibcLocales
, hicolor-icon-theme
, python3
, xvfb-run
}:
python3.pkgs.buildPythonApplication rec {
pname = "quodlibet${tag}";
version = "4.5.0";
format = "pyproject";
src = fetchurl {
url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz";
sha256 = "sha256-MBYVgp9lLLr+2zVTkjcWKli8HucaVn0kn3eJ2SaCRbw=";
src = fetchFromGitHub {
owner = "quodlibet";
repo = "quodlibet";
rev = "refs/tags/release-${version}";
hash = "sha256-G6zcdnHkevbVCrMoseWoSia5ajEor8nZhee6NeZIs8Q=";
};
nativeBuildInputs = [ wrapGAppsHook gettext ];
patches = [
(fetchpatch {
# Fixes cover globbing under python 3.10.5+
url = "https://github.com/quodlibet/quodlibet/commit/5eb7c30766e1dcb30663907664855ee94a3accc0.patch";
hash = "sha256-bDyEOE7Vs4df4BeN4QMvt6niisVEpvc1onmX5rtoAWc=";
})
];
outputs = [
"out"
"doc"
];
checkInputs = [ gdk-pixbuf hicolor-icon-theme ] ++ (with python3.pkgs; [ pytest pytest-xdist polib xvfb-run dbus.daemon glibcLocales ]);
nativeBuildInputs = [
gettext
gobject-introspection
wrapGAppsHook
] ++ (with python3.pkgs; [
sphinxHook
sphinx-rtd-theme
]);
buildInputs = [ gnome.adwaita-icon-theme libsoup glib glib-networking gtk3 webkitgtk gdk-pixbuf keybinder3 gtksourceview libmodplug libappindicator-gtk3 kakasi gobject-introspection ]
++ (if xineBackend then [ xine-lib ] else with gst_all_1;
[ gstreamer gst-plugins-base ] ++ optionals withGstPlugins [ gst-plugins-good gst-plugins-ugly gst-plugins-bad ]);
buildInputs = [
adwaita-icon-theme
gdk-pixbuf
glib
glib-networking
gtk3
gtksourceview
kakasi
keybinder3
libappindicator-gtk3
libmodplug
libsoup
webkitgtk
] ++ lib.optionals (withXineBackend) [
xine-lib
] ++ lib.optionals (withGstreamerBackend) (with gst_all_1; [
gst-plugins-base
gstreamer
] ++ lib.optionals (withGstPlugins) [
gst-plugins-bad
gst-plugins-good
gst-plugins-ugly
]);
propagatedBuildInputs = with python3.pkgs; [ pygobject3 pycairo mutagen gst-python feedparser ]
++ optionals withDbusPython [ dbus-python ]
++ optionals withPyInotify [ pyinotify ]
++ optionals withMusicBrainzNgs [ musicbrainzngs ]
++ optionals withPahoMqtt [ paho-mqtt ];
propagatedBuildInputs = with python3.pkgs; [
feedparser
gst-python
mutagen
pycairo
pygobject3
]
++ lib.optionals withDbusPython [ dbus-python ]
++ lib.optionals withPypresence [ pypresence ]
++ lib.optionals withPyInotify [ pyinotify ]
++ lib.optionals withMusicBrainzNgs [ musicbrainzngs ]
++ lib.optionals withPahoMqtt [ paho-mqtt ]
++ lib.optionals withSoco [ soco ];
LC_ALL = "en_US.UTF-8";
pytestFlags = lib.optionals (xineBackend || !withGstPlugins) [
"--ignore=tests/plugin/test_replaygain.py"
] ++ [
checkInputs = [
dbus.daemon
gdk-pixbuf
glibcLocales
hicolor-icon-theme
xvfb-run
] ++ (with python3.pkgs; [
polib
pytest
pytest-xdist
]);
pytestFlags = [
# requires networking
"--ignore=tests/test_browsers_iradio.py"
# the default theme doesn't have the required icons
"--ignore=tests/plugin/test_trayicon.py"
"--deselect=tests/test_browsers_iradio.py::TIRFile::test_download_tags"
# missing translation strings in potfiles
"--deselect=tests/test_po.py::TPOTFILESIN::test_missing"
# upstream does actually not enforce source code linting
"--ignore=tests/quality"
# build failure on Arch Linux
# https://github.com/NixOS/nixpkgs/pull/77796#issuecomment-575841355
"--ignore=tests/test_operon.py"
] ++ lib.optionals (withXineBackend || !withGstPlugins) [
"--ignore=tests/plugin/test_replaygain.py"
];
preCheck = ''
export XDG_DATA_DIRS="$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_ICON_DIRS:$XDG_DATA_DIRS"
export GDK_PIXBUF_MODULE_FILE=${librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
export HOME=$(mktemp -d)
'';
checkPhase = ''
runHook preCheck
# otherwise tests can't find the app icons; instead of creating index.theme from scratch
# I re-used the one from hicolor-icon-theme which seems to work
cp "${hicolor-icon-theme}/share/icons/hicolor/index.theme" quodlibet/images/hicolor
env XDG_DATA_DIRS="$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_ICON_DIRS:$XDG_DATA_DIRS" \
GDK_PIXBUF_MODULE_FILE=${librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \
HOME=$(mktemp -d) \
xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
--config-file=${dbus.daemon}/share/dbus-1/session.conf \
py.test $pytestFlags
xvfb-run -s '-screen 0 1920x1080x24' \
dbus-run-session --config-file=${dbus.daemon}/share/dbus-1/session.conf \
pytest $pytestFlags
runHook postCheck
'';
preFixup = lib.optionalString (kakasi != null) "gappsWrapperArgs+=(--prefix PATH : ${kakasi}/bin)";
preFixup = lib.optionalString (kakasi != null) ''
gappsWrapperArgs+=(--prefix PATH : ${kakasi}/bin)
'';
meta = with lib; {
description = "GTK-based audio player written in Python, using the Mutagen tagging library";

@ -1,40 +1,11 @@
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config
, alsa-lib, asio, avahi, boost17x, flac, libogg, libvorbis, soxr
, aixlog, popl
, pulseaudioSupport ? false, libpulseaudio
, nixosTests }:
assert pulseaudioSupport -> libpulseaudio != null;
let
dependency = { name, version, sha256 }:
stdenv.mkDerivation {
name = "${name}-${version}";
src = fetchFromGitHub {
owner = "badaix";
repo = name;
rev = "v${version}";
inherit sha256;
};
nativeBuildInputs = [ cmake ];
};
aixlog = dependency {
name = "aixlog";
version = "1.5.0";
sha256 = "09mnkrans9zmwfxsiwgkm0rba66c11kg5zby9x3rjic34gnmw6ay";
};
popl = dependency {
name = "popl";
version = "1.2.0";
sha256 = "1z6z7fwffs3d9h56mc2m24d5gp4fc5bi8836zyfb276s6fjyfcai";
};
in
stdenv.mkDerivation rec {
pname = "snapcast";
version = "0.26.0";

@ -1,9 +1,8 @@
{ stdenv
, pkgs
, lib
, fetchFromGitHub
, pkg-config
, cmake
, cpp-utilities
, qtutilities
, mp4v2
@ -18,13 +17,13 @@
stdenv.mkDerivation rec {
pname = "tageditor";
version = "3.3.10";
version = "3.7.5";
src = fetchFromGitHub {
owner = "martchus";
repo = "tageditor";
repo = pname;
rev = "v${version}";
sha256 = "16cmq7dyalcwc8gx1y9acngw5imjh8ydp4prxy7qpzk4fj3kpsak";
hash = "sha256-/0zzzOEkzNr1aIpPFdflFaM/0HTs3TlIRxau3Yt+Hog=";
};
nativeBuildInputs = [
@ -32,10 +31,10 @@ stdenv.mkDerivation rec {
cmake
wrapQtAppsHook
];
buildInputs = [
mp4v2
libid3tag
pkg-config
qtbase
qttools
qtx11extras
@ -45,7 +44,7 @@ stdenv.mkDerivation rec {
tagparser
];
meta = with pkgs.lib; {
meta = with lib; {
homepage = "https://github.com/Martchus/tageditor";
description = "A tag editor with Qt GUI and command-line interface supporting MP4/M4A/AAC (iTunes), ID3, Vorbis, Opus, FLAC and Matroska";
license = licenses.gpl2;
@ -53,4 +52,3 @@ stdenv.mkDerivation rec {
platforms = platforms.linux;
};
}

@ -34,11 +34,11 @@ let
in
stdenv.mkDerivation rec {
pname = "bisq-desktop";
version = "1.9.4";
version = "1.9.5";
src = fetchurl {
url = "https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb";
sha256 = "sha256-8CgbJ5gfzIEh5ppwvQxYz1IES7Dd4MZCac0uVLh/YaY=";
sha256 = "1jmhngxyn2yf7k1dn98yr9d20jlvkmskbpzz5kbzci36v2wfmjrp";
};
nativeBuildInputs = [ makeWrapper copyDesktopItems imagemagick dpkg zip xz ];

@ -2,11 +2,11 @@
let
pname = "ledger-live-desktop";
version = "2.46.0";
version = "2.46.2";
src = fetchurl {
url = "https://download.live.ledger.com/${pname}-${version}-linux-x86_64.AppImage";
hash = "sha256-QbCiOzASqicd0Tns1sV9ZVoc/GmuoohB9wB/g0Z6uFA=";
hash = "sha256-fSfES+6+LCRTLdOy3RJaHzv0zRXkqT+0Rsdt2kSeU18=";
};
appimageContents = appimageTools.extractType2 {

@ -159,10 +159,10 @@
elpaBuild {
pname = "aircon-theme";
ename = "aircon-theme";
version = "0.0.5";
version = "0.0.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/aircon-theme-0.0.5.tar";
sha256 = "0k9nsm64szi2hvngx9ciyjn8ic9qprfm3gmwp33f0kakq05ykpd1";
url = "https://elpa.gnu.org/packages/aircon-theme-0.0.6.tar";
sha256 = "09yjjx9gy1x2i8xk7jlblzk6gkx7cgglb0pwxbl8n6aj19ba40nd";
};
packageRequires = [ emacs ];
meta = {
@ -234,10 +234,10 @@
elpaBuild {
pname = "async";
ename = "async";
version = "1.9.5";
version = "1.9.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/async-1.9.5.tar";
sha256 = "02f43vqlggy4qkqdggkl9mcg3rvagjysj45xgrx41jjx6cnjnm19";
url = "https://elpa.gnu.org/packages/async-1.9.6.tar";
sha256 = "0qyf1niqjhzaphb50q1znkwqzpdvqw3drivkzrqxrs747k7pm3my";
};
packageRequires = [ emacs ];
meta = {
@ -249,10 +249,10 @@
elpaBuild {
pname = "auctex";
ename = "auctex";
version = "13.1.3";
version = "13.1.4";
src = fetchurl {
url = "https://elpa.gnu.org/packages/auctex-13.1.3.tar";
sha256 = "0v9rxwz6ngnwrgvzgdki861s136gq30lqhy2gcd9q0a36gb6zhwk";
url = "https://elpa.gnu.org/packages/auctex-13.1.4.tar";
sha256 = "1r9qysnfdbiblq3c95rgsh7vgy3k4qabnj0vicqhdkca0cl2b2bj";
};
packageRequires = [ emacs ];
meta = {
@ -354,10 +354,10 @@
elpaBuild {
pname = "blist";
ename = "blist";
version = "0.1";
version = "0.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/blist-0.1.tar";
sha256 = "0p9jx7m05ynfi3bnd91jghw7101ym8qzm5r42rb1vy85pcf9lbad";
url = "https://elpa.gnu.org/packages/blist-0.2.tar";
sha256 = "1gsrj6clsfw36i7pdayfip615r80543j3iph6zm93p88wgwqigrq";
};
packageRequires = [];
meta = {
@ -493,10 +493,10 @@
elpaBuild {
pname = "cape";
ename = "cape";
version = "0.8";
version = "0.9";
src = fetchurl {
url = "https://elpa.gnu.org/packages/cape-0.8.tar";
sha256 = "03zc1c2r8h3p9aqk2y8pwysiawbx0f5vgz7582d9qnixdygni117";
url = "https://elpa.gnu.org/packages/cape-0.9.tar";
sha256 = "0bjzm1jf3554q83mbmyj584v29cgb0s5wpj74y4p9iyy40g739rw";
};
packageRequires = [ emacs ];
meta = {
@ -628,10 +628,10 @@
elpaBuild {
pname = "cobol-mode";
ename = "cobol-mode";
version = "1.0.0";
version = "1.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/cobol-mode-1.0.0.el";
sha256 = "1zmcfpl7v787yacc7gxm8mkp53fmrznp5mnad628phf3vj4kwnxi";
url = "https://elpa.gnu.org/packages/cobol-mode-1.1.tar";
sha256 = "1ivp0pghrkflhr2md34a6a86gwns867bnl30nqzwq8m4qc5xqjra";
};
packageRequires = [ cl-lib ];
meta = {
@ -771,10 +771,10 @@
elpaBuild {
pname = "compat";
ename = "compat";
version = "28.1.2.0";
version = "28.1.2.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/compat-28.1.2.0.tar";
sha256 = "0gm2drvxdlmc3fjlapb5z8k1ymr6q7mrj9z7mb686jfy931b9mwr";
url = "https://elpa.gnu.org/packages/compat-28.1.2.2.tar";
sha256 = "1jymfbadvnbjfyml6lri7hc7gz4f97nadn7a7ifpcncm9mhi13bp";
};
packageRequires = [ emacs nadvice ];
meta = {
@ -786,10 +786,10 @@
elpaBuild {
pname = "consult";
ename = "consult";
version = "0.18";
version = "0.19";
src = fetchurl {
url = "https://elpa.gnu.org/packages/consult-0.18.tar";
sha256 = "0nvi8f0jrji26sjmji8f7rvc8gr1zq49kliq39z7h970d8p10cx2";
url = "https://elpa.gnu.org/packages/consult-0.19.tar";
sha256 = "11dac6cl40xyg05wzxanxsc74f1kgnnkqlgf5gqlkq24gwmlgvyk";
};
packageRequires = [ compat emacs ];
meta = {
@ -801,10 +801,10 @@
elpaBuild {
pname = "consult-recoll";
ename = "consult-recoll";
version = "0.6.2";
version = "0.7";
src = fetchurl {
url = "https://elpa.gnu.org/packages/consult-recoll-0.6.2.tar";
sha256 = "0ngisaxdsfmjcincxdjrpgj6q6vh4dav7b2bpfls9a7107rb2ycp";
url = "https://elpa.gnu.org/packages/consult-recoll-0.7.tar";
sha256 = "12a1qhp7yz6r5pblm68wp1zis0xnvsn2rm12rz9fircq8p3ff3j7";
};
packageRequires = [ consult emacs ];
meta = {
@ -831,10 +831,10 @@
elpaBuild {
pname = "corfu";
ename = "corfu";
version = "0.26";
version = "0.27";
src = fetchurl {
url = "https://elpa.gnu.org/packages/corfu-0.26.tar";
sha256 = "13wsb0llrnmk65m27drnyaqzv9qicnxbpvqcanj0k90iv411kw21";
url = "https://elpa.gnu.org/packages/corfu-0.27.tar";
sha256 = "1i8nl94aaa5p4bp0idsmph3z61lccg9a7plbsnpicy0klsaj69r2";
};
packageRequires = [ emacs ];
meta = {
@ -842,16 +842,16 @@
license = lib.licenses.free;
};
}) {};
coterm = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
coterm = callPackage ({ compat, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "coterm";
ename = "coterm";
version = "1.5";
version = "1.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/coterm-1.5.tar";
sha256 = "1v8cl3bw5z0f36iw8x3gcgiizml74m1kfxfrasyfx8k01nbxcfs8";
url = "https://elpa.gnu.org/packages/coterm-1.6.tar";
sha256 = "0ikfm1acdsckflv1hcy9lmssyac2099x2yybhvb6vkghcgy99p00";
};
packageRequires = [ emacs ];
packageRequires = [ compat emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/coterm.html";
license = lib.licenses.free;
@ -906,10 +906,10 @@
elpaBuild {
pname = "crdt";
ename = "crdt";
version = "0.3.0";
version = "0.3.3";
src = fetchurl {
url = "https://elpa.gnu.org/packages/crdt-0.3.0.tar";
sha256 = "0fmrmpjqyzxcmx38kwl6mifq412qfgm9ak7j4f54j33kbp10hjj7";
url = "https://elpa.gnu.org/packages/crdt-0.3.3.tar";
sha256 = "12xdqdp4zwd163wc19cjakabgjyzm4l4xg4bns6q1p60zgynbkx8";
};
packageRequires = [];
meta = {
@ -966,10 +966,10 @@
elpaBuild {
pname = "cursory";
ename = "cursory";
version = "0.2.1";
version = "0.3.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/cursory-0.2.1.tar";
sha256 = "12q1icz1npan9fjn0sy2zfs3d0iz6b34hqsfggm187igq4zj3rrb";
url = "https://elpa.gnu.org/packages/cursory-0.3.0.tar";
sha256 = "1mgvdncqgf0ll2mn5zp47lvvbzrzgdga9dbbjwqaapzy6llfg51x";
};
packageRequires = [ emacs ];
meta = {
@ -1041,10 +1041,10 @@
elpaBuild {
pname = "debbugs";
ename = "debbugs";
version = "0.32";
version = "0.33";
src = fetchurl {
url = "https://elpa.gnu.org/packages/debbugs-0.32.tar";
sha256 = "1xp3mj3ndaljma0g7x9abziphgi2a6j8k1v52sb8xwgn4p5gdvby";
url = "https://elpa.gnu.org/packages/debbugs-0.33.tar";
sha256 = "1s4p3jf9yrm8pn5pljpkrw05n2p9v6fpl141rh1df7f7l0w80qbk";
};
packageRequires = [ emacs soap-client ];
meta = {
@ -1071,10 +1071,10 @@
elpaBuild {
pname = "denote";
ename = "denote";
version = "0.4.0";
version = "0.6.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/denote-0.4.0.tar";
sha256 = "031ia1k5fqzq154jhi4icvivhdg8yn7zfkwy81yf0ivcsivri54s";
url = "https://elpa.gnu.org/packages/denote-0.6.1.tar";
sha256 = "1yxfnwq2b32xrl52g61a9g3i53m94iybx0n8hh6nbmcv5x4y43ya";
};
packageRequires = [ emacs ];
meta = {
@ -1086,10 +1086,10 @@
elpaBuild {
pname = "detached";
ename = "detached";
version = "0.7";
version = "0.8.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/detached-0.7.tar";
sha256 = "1a2w6cmzy7c861rih9k2qbnmizyybrs1kwqp6lbz3wfs2h0zisrw";
url = "https://elpa.gnu.org/packages/detached-0.8.1.tar";
sha256 = "03riybjk2yls8wjkp1sqd30p0jpvrlz3qlj8r04cx7s1nn1kn9g3";
};
packageRequires = [ emacs ];
meta = {
@ -1131,10 +1131,10 @@
elpaBuild {
pname = "diff-hl";
ename = "diff-hl";
version = "1.8.8";
version = "1.9.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/diff-hl-1.8.8.tar";
sha256 = "10g1333xvki8aw5vhyijkpjn62jh9k3n4a5sh1z69hsfvxih5lqk";
url = "https://elpa.gnu.org/packages/diff-hl-1.9.0.tar";
sha256 = "00mqknqyibbqyfcvdvk1m7nwipfpsw3afbvipqmghh5zm2n7wjr4";
};
packageRequires = [ cl-lib emacs ];
meta = {
@ -1386,10 +1386,10 @@
elpaBuild {
pname = "eev";
ename = "eev";
version = "20220626";
version = "20220828";
src = fetchurl {
url = "https://elpa.gnu.org/packages/eev-20220626.tar";
sha256 = "0n09dws1qy23a31s5iv75dzl6xy8m5m7qy9gf7sk1b3133ly4sf5";
url = "https://elpa.gnu.org/packages/eev-20220828.tar";
sha256 = "0znsimjq61p67c2q3qbia5qrimy847xy6gjpl1jgyrdlpgm9hv6r";
};
packageRequires = [ emacs ];
meta = {
@ -1397,6 +1397,21 @@
license = lib.licenses.free;
};
}) {};
ef-themes = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "ef-themes";
ename = "ef-themes";
version = "0.4.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/ef-themes-0.4.2.tar";
sha256 = "0ik9kzdv5r1q7hw81nh3raiychpmwi61034y12pqvbq24njp0y72";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/ef-themes.html";
license = lib.licenses.free;
};
}) {};
eglot = callPackage ({ eldoc
, elpaBuild
, emacs
@ -1535,6 +1550,38 @@
license = lib.licenses.free;
};
}) {};
ement = callPackage ({ elpaBuild
, emacs
, fetchurl
, lib
, map
, plz
, svg-lib
, taxy
, taxy-magit-section
, transient }:
elpaBuild {
pname = "ement";
ename = "ement";
version = "0.1.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/ement-0.1.2.tar";
sha256 = "1n5k3rcgdq625b9fjhl53nl5zbis4dw0d00h4dk16m61nk98ra2l";
};
packageRequires = [
emacs
map
plz
svg-lib
taxy
taxy-magit-section
transient
];
meta = {
homepage = "https://elpa.gnu.org/packages/ement.html";
license = lib.licenses.free;
};
}) {};
emms = callPackage ({ cl-lib ? null
, elpaBuild
, fetchurl
@ -1774,10 +1821,10 @@
elpaBuild {
pname = "fontaine";
ename = "fontaine";
version = "0.3.0";
version = "0.4.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/fontaine-0.3.0.tar";
sha256 = "0ixi48w3d0yvmw1103gj7iq2acj90p0qlyhna4hpfhnwa247lp2k";
url = "https://elpa.gnu.org/packages/fontaine-0.4.0.tar";
sha256 = "1phbni32zgwml5mwldbqmqmkbhbdj4vf4bs98wj0my6d902x6lbw";
};
packageRequires = [ emacs ];
meta = {
@ -2208,10 +2255,10 @@
elpaBuild {
pname = "inspector";
ename = "inspector";
version = "0.5";
version = "0.7";
src = fetchurl {
url = "https://elpa.gnu.org/packages/inspector-0.5.tar";
sha256 = "19f2a0fw0zcrfirjhq7my910jiqxqkishyjprj87cahpksdp4cp9";
url = "https://elpa.gnu.org/packages/inspector-0.7.tar";
sha256 = "0cwfbg7bx4ni0xadba9v5jbkivz2slqwxcy7q8s3zipb4m578xbk";
};
packageRequires = [ emacs ];
meta = {
@ -2438,10 +2485,10 @@
elpaBuild {
pname = "kind-icon";
ename = "kind-icon";
version = "0.1.6";
version = "0.1.7";
src = fetchurl {
url = "https://elpa.gnu.org/packages/kind-icon-0.1.6.tar";
sha256 = "0ac53qrz217b054z51244r7whvjmyrq4941ld0bgl9crssrhb588";
url = "https://elpa.gnu.org/packages/kind-icon-0.1.7.tar";
sha256 = "02imi2qj329yrqvs23d4z7fv8bbaz0fvya6zdswb38blpdri4cn1";
};
packageRequires = [ emacs svg-lib ];
meta = {
@ -2543,10 +2590,10 @@
elpaBuild {
pname = "lin";
ename = "lin";
version = "0.4.0";
version = "1.0.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/lin-0.4.0.tar";
sha256 = "1fynn3fpf3c2yamlpp9j6rakgd21ivyvqrx0hmsgcyr115q5afm4";
url = "https://elpa.gnu.org/packages/lin-1.0.0.tar";
sha256 = "0b090g2l8mvm3b6k7s31v9lw48qjcvcif2p201wlqgipddm6s180";
};
packageRequires = [ emacs ];
meta = {
@ -2633,10 +2680,10 @@
elpaBuild {
pname = "logos";
ename = "logos";
version = "0.4.0";
version = "0.5.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/logos-0.4.0.tar";
sha256 = "12yypzfd6lf71qyix0a1088vkamh9ilq8inpmv2882w3r5dii345";
url = "https://elpa.gnu.org/packages/logos-0.5.0.tar";
sha256 = "026nzkgkfs96m9qxpng7h0kqvhxfah883pv4i08fz0950lrsxynd";
};
packageRequires = [ emacs ];
meta = {
@ -2663,10 +2710,10 @@
elpaBuild {
pname = "marginalia";
ename = "marginalia";
version = "0.13";
version = "0.14";
src = fetchurl {
url = "https://elpa.gnu.org/packages/marginalia-0.13.tar";
sha256 = "1d5y3d2plkxnmm4458l0gfpim6q3vzps3bsfakvnzf86hh5nm77j";
url = "https://elpa.gnu.org/packages/marginalia-0.14.tar";
sha256 = "0y1mz9688h56knyly7by3gl6v37q437c3lp5bsx6jajysb8v69xw";
};
packageRequires = [ emacs ];
meta = {
@ -2693,10 +2740,10 @@
elpaBuild {
pname = "math-symbol-lists";
ename = "math-symbol-lists";
version = "1.2.1";
version = "1.3";
src = fetchurl {
url = "https://elpa.gnu.org/packages/math-symbol-lists-1.2.1.el";
sha256 = "015q44qg9snrpz04syz89f9f79pzg5h7w88nh84p38klynkx2f86";
url = "https://elpa.gnu.org/packages/math-symbol-lists-1.3.tar";
sha256 = "0h330j7vxmb56z66xgynqlxkr5bnp5id25j0w4ikyms407sdyrbs";
};
packageRequires = [];
meta = {
@ -2862,10 +2909,10 @@
elpaBuild {
pname = "modus-themes";
ename = "modus-themes";
version = "2.5.0";
version = "2.6.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/modus-themes-2.5.0.tar";
sha256 = "0j2mx47fpbqvpwhkdskgrnyj5nzg25sqgxwsdvrvw22c7gxhirxn";
url = "https://elpa.gnu.org/packages/modus-themes-2.6.0.tar";
sha256 = "0i4y69rrdcm64mvqs5z7dmgx1xk0x7g5978q5gjblczlfka444k4";
};
packageRequires = [ emacs ];
meta = {
@ -3130,10 +3177,10 @@
elpaBuild {
pname = "num3-mode";
ename = "num3-mode";
version = "1.4";
version = "1.5";
src = fetchurl {
url = "https://elpa.gnu.org/packages/num3-mode-1.4.tar";
sha256 = "01cl5wc5xzf4milq6r5ps2f4ikpkdbdidk880svby9mhiw6agydh";
url = "https://elpa.gnu.org/packages/num3-mode-1.5.tar";
sha256 = "0i01v0sl0wi98xvc3wkk2lwc3nxmnhhpyrhr9gn88x5ygc0p4rdw";
};
packageRequires = [];
meta = {
@ -3235,10 +3282,10 @@
elpaBuild {
pname = "org";
ename = "org";
version = "9.5.4";
version = "9.5.5";
src = fetchurl {
url = "https://elpa.gnu.org/packages/org-9.5.4.tar";
sha256 = "1rcr1kyvd2l5h1i22z40x998jm4b6vk47i77y376blcrcx2dp26m";
url = "https://elpa.gnu.org/packages/org-9.5.5.tar";
sha256 = "13sykrkhb192vnmj5nlws5jc5a4fr7ynmyxpzanqlzx1gbdxv32p";
};
packageRequires = [ emacs ];
meta = {
@ -3655,10 +3702,10 @@
elpaBuild {
pname = "pulsar";
ename = "pulsar";
version = "0.4.0";
version = "0.5.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/pulsar-0.4.0.tar";
sha256 = "027kpywdjfd1xm1fxkprbc04iq96lnyzw2f3499wyrfj4vxk2dn2";
url = "https://elpa.gnu.org/packages/pulsar-0.5.0.tar";
sha256 = "1bs6f8j1a7vypwm087zsrccv5kbahxyg3nhc65ffgpwrnxfp4v96";
};
packageRequires = [ emacs ];
meta = {
@ -3670,10 +3717,10 @@
elpaBuild {
pname = "pyim";
ename = "pyim";
version = "5.2.3";
version = "5.2.4";
src = fetchurl {
url = "https://elpa.gnu.org/packages/pyim-5.2.3.tar";
sha256 = "189r0qkd8nv5zjg2ljbzbj086jb8xbl4yd1jliz4azaprv8fhqv0";
url = "https://elpa.gnu.org/packages/pyim-5.2.4.tar";
sha256 = "1dzl4xaf31nyjb5hnwwf29i75x0i8dakpmmagbn4ks5hi3jl2ig0";
};
packageRequires = [ async emacs xr ];
meta = {
@ -4181,10 +4228,10 @@
elpaBuild {
pname = "shell-command-plus";
ename = "shell-command+";
version = "2.3.2";
version = "2.4.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/shell-command+-2.3.2.tar";
sha256 = "03hmk4gr9kjy3238n0ys9na00py035j9s0y8d87c45f5af6c6g2c";
url = "https://elpa.gnu.org/packages/shell-command+-2.4.1.tar";
sha256 = "1pbv5g58647gq83vn5pg8c6kjhvjn3lj0wggz3iz3695yvl8aw4i";
};
packageRequires = [ emacs ];
meta = {
@ -4730,14 +4777,29 @@
license = lib.licenses.free;
};
}) {};
topspace = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "topspace";
ename = "topspace";
version = "0.3.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/topspace-0.3.1.tar";
sha256 = "1c2raqmbyv5bd48gimh6dazfb6dmipjmf1j0w53vyrs48dx6kskq";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/topspace.html";
license = lib.licenses.free;
};
}) {};
tramp = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "tramp";
ename = "tramp";
version = "2.5.3.1";
version = "2.5.3.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/tramp-2.5.3.1.tar";
sha256 = "0dqc5gmp20isrlanccvj6nhalmmsfg7bmm690gxfgrbqcc2vj69a";
url = "https://elpa.gnu.org/packages/tramp-2.5.3.2.tar";
sha256 = "1jcicb9f7c1nmaqg20yy2j4wd0qfch4llc26ga7q3ckhx41pvbiw";
};
packageRequires = [ emacs ];
meta = {
@ -5045,10 +5107,10 @@
elpaBuild {
pname = "vertico";
ename = "vertico";
version = "0.25";
version = "0.26";
src = fetchurl {
url = "https://elpa.gnu.org/packages/vertico-0.25.tar";
sha256 = "1v0icwqp4ppa2j1k1fk4fc5zdzqb4hcdc7khjc1c31q0gad6l3xy";
url = "https://elpa.gnu.org/packages/vertico-0.26.tar";
sha256 = "070dkw7ii5lfg4m0bwl9blbyq3rgqs212my142ri69ig1fz9x5ad";
};
packageRequires = [ emacs ];
meta = {
@ -5462,4 +5524,19 @@
license = lib.licenses.free;
};
}) {};
zuul = callPackage ({ elpaBuild, emacs, fetchurl, lib, project }:
elpaBuild {
pname = "zuul";
ename = "zuul";
version = "0.4.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/zuul-0.4.0.tar";
sha256 = "1bm91g001q3n5m9ihxc719siiiy23pkpfkhplwi9p1i4i9zrpx5g";
};
packageRequires = [ emacs project ];
meta = {
homepage = "https://elpa.gnu.org/packages/zuul.html";
license = lib.licenses.free;
};
}) {};
}

@ -232,6 +232,8 @@
tree-sitter-langs = callPackage ./tree-sitter-langs { final = self; };
tsc = callPackage ./tsc { };
yes-no = callPackage ./yes-no { };
youtube-dl = callPackage ./youtube-dl { };
# From old emacsPackages (pre emacsPackagesNg)

@ -135,21 +135,16 @@
license = lib.licenses.free;
};
}) {};
autothemer = callPackage ({ cl-lib ? null
, dash
, elpaBuild
, emacs
, fetchurl
, lib }:
autothemer = callPackage ({ dash, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "autothemer";
ename = "autothemer";
version = "0.2.5";
version = "0.2.14";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/autothemer-0.2.5.tar";
sha256 = "1g07j8fmyqhhas0ci2f9l7i5l238cpb02vr93gyn2a3r3lq6wn4d";
url = "https://elpa.nongnu.org/nongnu/autothemer-0.2.14.tar";
sha256 = "14y8b807d75qym1qviiqy1s85495z9g7jvvfqqz42ngdnk87l3qb";
};
packageRequires = [ cl-lib dash emacs ];
packageRequires = [ dash emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/autothemer.html";
license = lib.licenses.free;
@ -219,10 +214,10 @@
elpaBuild {
pname = "buttercup";
ename = "buttercup";
version = "1.25";
version = "1.26";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/buttercup-1.25.tar";
sha256 = "1iadgn56sfakv927g9bk7fq7yjg0f3r10ygrmjpy46vgvfz0fqs6";
url = "https://elpa.nongnu.org/nongnu/buttercup-1.26.tar";
sha256 = "1ddzk6h4cxrl7mn8vr2qp4xjj2al3h5s3kwqxpdwd3zn6wqgyqm4";
};
packageRequires = [ emacs ];
meta = {
@ -245,16 +240,16 @@
license = lib.licenses.free;
};
}) {};
cdlatex = callPackage ({ auctex, elpaBuild, fetchurl, lib }:
cdlatex = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "cdlatex";
ename = "cdlatex";
version = "4.12";
version = "4.14";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/cdlatex-4.12.tar";
sha256 = "1m8liqxz76r8f3b8hvyyn7kqgq0fkk5pv4pqgdscbgw36vpcbkry";
url = "https://elpa.nongnu.org/nongnu/cdlatex-4.14.tar";
sha256 = "114g2afnq86c6662ychd0v64aam7nhk3hacbwx1cavhg1k2l7kci";
};
packageRequires = [ auctex ];
packageRequires = [];
meta = {
homepage = "https://elpa.gnu.org/packages/cdlatex.html";
license = lib.licenses.free;
@ -273,10 +268,10 @@
elpaBuild {
pname = "cider";
ename = "cider";
version = "1.4.1";
version = "1.5.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/cider-1.4.1.tar";
sha256 = "0l36pqmjqzv6ykmw593h6qd24pygq7171qfinvlp2fh8897ac2nj";
url = "https://elpa.nongnu.org/nongnu/cider-1.5.0.tar";
sha256 = "0vggh2l92m8hm2wqzcyka439fs0kzbbfknfgyn79hf2f2f405534";
};
packageRequires = [
clojure-mode
@ -793,6 +788,21 @@
license = lib.licenses.free;
};
}) {};
focus = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "focus";
ename = "focus";
version = "1.0.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/focus-1.0.0.tar";
sha256 = "0gicqiw7npcf18rfb99hm1s054m9l4izzcqzij2kpnc544aqgf9y";
};
packageRequires = [ cl-lib emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/focus.html";
license = lib.licenses.free;
};
}) {};
forth-mode = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "forth-mode";
@ -832,10 +842,10 @@
elpaBuild {
pname = "geiser";
ename = "geiser";
version = "0.24";
version = "0.26.1";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/geiser-0.24.tar";
sha256 = "14qnni8ridrg3afh1wy9nvchbk0drn0h7ww5xgc6s03ivvmy7a71";
url = "https://elpa.nongnu.org/nongnu/geiser-0.26.1.tar";
sha256 = "1fq68gvyyrplxw8i0yma4q0yqmrzp00v1v7izlc5r7h58wryy39a";
};
packageRequires = [ emacs project transient ];
meta = {
@ -922,10 +932,10 @@
elpaBuild {
pname = "geiser-guile";
ename = "geiser-guile";
version = "0.23.2";
version = "0.26.1";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/geiser-guile-0.23.2.tar";
sha256 = "1z2khagg425y5cfja694zxrj3lyw3awsmqd86b2hpqhrylrb8jaa";
url = "https://elpa.nongnu.org/nongnu/geiser-guile-0.26.1.tar";
sha256 = "1ay7v2qsl0kr9zvf6j1sss3gxniwrqp8xgxhxf7nhlkmkgcfp1wk";
};
packageRequires = [ emacs geiser ];
meta = {
@ -1123,10 +1133,10 @@
elpaBuild {
pname = "gruvbox-theme";
ename = "gruvbox-theme";
version = "1.27.0";
version = "1.30.1";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/gruvbox-theme-1.27.0.tar";
sha256 = "0p36b2rrhizfrj8i86zm810bh0w7qikb5cwpyn106yfvgcv39jl8";
url = "https://elpa.nongnu.org/nongnu/gruvbox-theme-1.30.1.tar";
sha256 = "19r3ffkyq779jjz0jvyxdf2zhm1yd1lax9sh0qsj1r5xrcmb15l7";
};
packageRequires = [ autothemer ];
meta = {
@ -1345,10 +1355,10 @@
elpaBuild {
pname = "inf-ruby";
ename = "inf-ruby";
version = "2.6.1";
version = "2.6.2";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/inf-ruby-2.6.1.tar";
sha256 = "0z57wwpm7wh04yp7za8fmv4ib56np629kmk4djs8qaz5bv494znr";
url = "https://elpa.nongnu.org/nongnu/inf-ruby-2.6.2.tar";
sha256 = "09p9pny4p0bfw6lw5pf17spyd77jb0pliapp3mfn7r3w8l8wi8xc";
};
packageRequires = [ emacs ];
meta = {
@ -1723,10 +1733,10 @@
elpaBuild {
pname = "org-auto-tangle";
ename = "org-auto-tangle";
version = "0.5.1";
version = "0.6.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/org-auto-tangle-0.5.1.tar";
sha256 = "12sy30yr8r3g7gmvcdsrrmy62lhvajg3gp62gj7p836kh9xllpsl";
url = "https://elpa.nongnu.org/nongnu/org-auto-tangle-0.6.0.tar";
sha256 = "07g1cwsr8j1sd8whshi9y2b69qx10g9vd77pmwki9ba4sy0m7b0p";
};
packageRequires = [ async emacs ];
meta = {
@ -1944,10 +1954,10 @@
elpaBuild {
pname = "php-mode";
ename = "php-mode";
version = "1.24.0";
version = "1.24.1";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/php-mode-1.24.0.tar";
sha256 = "158850zdmz5irjy6cjai1i8j7qs1vwp95a2dli9f341lbpv2jvzp";
url = "https://elpa.nongnu.org/nongnu/php-mode-1.24.1.tar";
sha256 = "0ixm7z2bq4aacbwyzx53alfnqwbdn36i5ixdi3qjhr8rh5k48vg1";
};
packageRequires = [ emacs ];
meta = {
@ -2338,10 +2348,10 @@
elpaBuild {
pname = "subed";
ename = "subed";
version = "1.0.7";
version = "1.0.8";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/subed-1.0.7.tar";
sha256 = "0js48yar8xgj3wjmlkv3k5208q1zvv74sg4lhk6asiy4cq3pqjia";
url = "https://elpa.nongnu.org/nongnu/subed-1.0.8.tar";
sha256 = "05dx4ywma7n73d0cihf4v8ayihm7gmfqpzvdycq4yk0zkxb958z1";
};
packageRequires = [ emacs ];
meta = {
@ -2614,10 +2624,10 @@
elpaBuild {
pname = "web-mode";
ename = "web-mode";
version = "17.2.3";
version = "17.3.1";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/web-mode-17.2.3.tar";
sha256 = "1fvkr3yvhx67wkcynid7xppaci3m1d5ggdaii3d4dfp57wwz5c13";
url = "https://elpa.nongnu.org/nongnu/web-mode-17.3.1.tar";
sha256 = "0xlpxk9qscxip93lqyl1l5bzv6nxgq5yb8r05s4jslcipbbfil1d";
};
packageRequires = [ emacs ];
meta = {
@ -2712,10 +2722,10 @@
elpaBuild {
pname = "xah-fly-keys";
ename = "xah-fly-keys";
version = "17.19.20220806194323";
version = "17.22.20220909110152";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-17.19.20220806194323.tar";
sha256 = "1cflsvp1cpyr3zsj2dij3mc36lprwjdhrvxx2k8ilavhzi4dn64v";
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-17.22.20220909110152.tar";
sha256 = "1d8xkwcyd6dcxp926mwb8kgcpdqrcpmdv62ybdhx7izx0abia95y";
};
packageRequires = [ emacs ];
meta = {

@ -1,17 +1,37 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p curl nix
#! nix-shell -i bash -p curl nix coreutils
set -euxo pipefail
export NIXPKGS_ALLOW_BROKEN=1
# This script piggybacks on the automatic code generation done by the nix-community emacs overlay
# You can use this to avoid running lengthy code generation jobs locally
curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/elpa/elpa-generated.nix
export NIXPKGS_ALLOW_BROKEN=1
download_change() {
local FILE_LOCATION="$1"
local BASEURL="https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos"
curl -s -O "${BASEURL}/${FILE_LOCATION}"
}
commit_change() {
local MESSAGE="$1"
local FILENAME="$2"
git diff --exit-code "${FILENAME}" > /dev/null || \
git commit -m "${MESSAGE}: updated $(date --iso) (from overlay)" -- "${FILENAME}"
}
download_change "elpa/elpa-generated.nix"
nix-instantiate ../../../../../ -A emacs.pkgs.elpaPackages --show-trace
git diff --exit-code elpa-generated.nix > /dev/null || git commit -m "emacs.pkgs.elpa-packages: $(date --iso)" -- elpa-generated.nix
commit_change "elpa-packages" "elpa-generated.nix"
curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/melpa/recipes-archive-melpa.json
download_change "melpa/recipes-archive-melpa.json"
nix-instantiate --show-trace ../../../../../ -A emacs.pkgs.melpaStablePackages
nix-instantiate --show-trace ../../../../../ -A emacs.pkgs.melpaPackages
git diff --exit-code recipes-archive-melpa.json > /dev/null || git commit -m "emacs.pkgs.melpa-packages: $(date --iso)" -- recipes-archive-melpa.json
commit_change "melpa-packages" "recipes-archive-melpa.json"
download_change "nongnu/nongnu-generated.nix"
nix-instantiate --show-trace ../../../../../ -A emacs.pkgs.nongnuPackages
commit_change "nongnu-packages" "nongnu-generated.nix"

@ -0,0 +1,19 @@
{ lib, fetchurl, trivialBuild }:
trivialBuild {
pname = "yes-no";
version = "2017-10-01";
src = fetchurl {
url = "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/143bcaeb679a8fa8a548e92a5a9d5c2baff50d9c/yes-no.el";
sha256 = "03w4wfx885y89ckyd5d95n2571nmmzrll6kr0yan3ip2aw28xq3i";
};
meta = with lib; {
description = "Specify use of `y-or-n-p' or `yes-or-no-p' on a case-by-case basis";
homepage = "https://www.emacswiki.org/emacs/yes-no.el";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ jcs090218 ];
platforms = platforms.all;
};
}

@ -14,13 +14,13 @@
mkDerivation rec {
pname = "ghostwriter";
version = "2.1.4";
version = "2.1.5";
src = fetchFromGitHub {
owner = "wereturtle";
repo = pname;
rev = version;
hash = "sha256-Vr1w9bAtjQK1ZevFDWQ7xNsUrdv5qrP+JHe1Cuc2CvE=";
hash = "sha256-YmZrT/KZUa34A0mMDM423GL99BDLrqrio7gNEW833SI=";
};
nativeBuildInputs = [ qmake pkg-config qttools ];

File diff suppressed because it is too large Load Diff

@ -257,6 +257,10 @@ self: super: {
'';
});
compiler-explorer-nvim = super.compiler-explorer-nvim.overrideAttrs (old: {
dependencies = with self; [ plenary-nvim ];
});
completion-buffers = super.completion-buffers.overrideAttrs (old: {
dependencies = with self; [ completion-nvim ];
});

@ -155,6 +155,7 @@ https://github.com/hrsh7th/compe-conjure/,,
https://github.com/GoldsteinE/compe-latex-symbols/,,
https://github.com/tzachar/compe-tabnine/,,
https://github.com/tamago324/compe-zsh/,,
https://github.com/krady21/compiler-explorer.nvim/,HEAD,
https://github.com/steelsojka/completion-buffers/,,
https://github.com/nvim-lua/completion-nvim/,,
https://github.com/aca/completion-tabnine/,,

@ -2609,6 +2609,30 @@ let
ms-vsliveshare.vsliveshare = callPackage ./ms-vsliveshare-vsliveshare { };
vscjava.vscode-java-debug = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-java-debug";
publisher = "vscjava";
version = "0.44.0";
sha256 = "sha256-8/H7rihSKAvXp8QxK949txgMKwt6aYVN4EQdwhphIiQ=";
};
meta = {
license = lib.licenses.mit;
};
};
vscjava.vscode-java-test = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-java-test";
publisher = "vscjava";
version = "0.37.1";
sha256 = "sha256-QpDMG+0RbiRY9YQYXQhA6ESBoIjBeUxq+bEZ1Y71oSM=";
};
meta = {
license = lib.licenses.mit;
};
};
vscodevim.vim = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vim";

@ -33,6 +33,7 @@
stdenv.mkDerivation rec {
pname = "pcsx2";
version = "1.7.3165";
# nixpkgs-update: no auto update
src = fetchFromGitHub {
owner = "PCSX2";

@ -9,10 +9,10 @@
let
# Keep these separate so the update script can regex them
rpcs3GitVersion = "13907-cdef752a9";
rpcs3Version = "0.0.23-13907-cdef752a9";
rpcs3Revision = "cdef752a9c2004010279cd4a6d77b451b42cc6ab";
rpcs3Sha256 = "1mw6k097rsiljaw34harhvr32dvrh4xv22ryinylijnsjlm3hcan";
rpcs3GitVersion = "14141-d686b48f6";
rpcs3Version = "0.0.24-14141-d686b48f6";
rpcs3Revision = "d686b48f6549c736661e14d1e0990b043c32e3c2";
rpcs3Sha256 = "1jzpb189isy9kc6l5cy1nfx0wq5cri753sh32b1xq259lkqihdp5";
ittapi = fetchFromGitHub {
owner = "intel";

@ -27,13 +27,13 @@
buildDotnetModule rec {
pname = "ryujinx";
version = "1.1.248"; # Based off of the official github actions builds: https://github.com/Ryujinx/Ryujinx/actions/workflows/release.yml
version = "1.1.257"; # Based off of the official github actions builds: https://github.com/Ryujinx/Ryujinx/actions/workflows/release.yml
src = fetchFromGitHub {
owner = "Ryujinx";
repo = "Ryujinx";
rev = "5ff5fe47bad947a95545390865c597bec6c62070";
sha256 = "0nfzf7q58mhdyszwv3mbz3wqf4w0m1p3fmf3cpga1pf9mfq65nqz";
rev = "81f1a4dc3161882b0385c9d4752fbba84b9eca96";
sha256 = "1p4c8k8pc47hl32bml050fvxyhdjcd002xx60rwvzlgvdgw6b3xq";
};
nugetDeps = ./deps.nix;

@ -46,9 +46,9 @@ in rec {
unstable = fetchurl rec {
# NOTE: Don't forget to change the SHA256 for staging as well.
version = "7.15";
version = "7.17";
url = "https://dl.winehq.org/wine/source/7.x/wine-${version}.tar.xz";
sha256 = "sha256-0auKGarm/mwIM8PYgqMkSKv6SihZDxRulUUOufWPuRw=";
sha256 = "sha256-JDa4rFDWKPTKOsUwDBgmY9/PpIuhulVIp3KOtmH7T0E=";
inherit (stable) gecko32 gecko64 patches;
mono = fetchurl rec {
@ -61,7 +61,7 @@ in rec {
staging = fetchFromGitHub rec {
# https://github.com/wine-staging/wine-staging/releases
inherit (unstable) version;
sha256 = "sha256-JMig0EUgxdRwpeaxZcNQi+6xWHUg43bXB7jkm5skKC8=";
sha256 = "sha256-eC5nYX6Cjutd30rrAn6SavWlQtF8swMHDzsESN4SUmo=";
owner = "wine-staging";
repo = "wine-staging";
rev = "v${version}";

@ -15,13 +15,13 @@ let
in {
mainline = libsForQt5.callPackage ./generic.nix rec {
pname = "yuzu-mainline";
version = "1137";
version = "1162";
src = fetchFromGitHub {
owner = "yuzu-emu";
repo = "yuzu-mainline";
rev = "mainline-0-${version}";
sha256 = "sha256-DLU5hmjTnlpRQ6sbcU7as/KeI9dDJAFUzVLciql5niE=";
sha256 = "sha256-1UNgB/3l6RN0OLRrmXqzwcEUgXlWGSE7PvHbZ8YSDro=";
fetchSubmodules = true;
};
@ -30,13 +30,13 @@ in {
early-access = libsForQt5.callPackage ./generic.nix rec {
pname = "yuzu-ea";
version = "2907";
version = "2945";
src = fetchFromGitHub {
owner = "pineappleEA";
repo = "pineapple-src";
rev = "EA-${version}";
sha256 = "sha256-spPW2/qeVyd1P1/Z2lcuA69igS3xV4KtcJ59yf9X4JI=";
sha256 = "sha256-/051EtQxhB5oKH/JxZZ2AjnxOBcRxCBIwd4Qr8lq7Ok=";
fetchSubmodules = true;
};

@ -1,6 +1,5 @@
{ lib
, fetchFromGitHub
, fetchpatch
, meson
, ninja
, pkg-config
@ -19,7 +18,7 @@
python3.pkgs.buildPythonApplication rec {
pname = "drawing";
version = "1.0.0";
version = "1.0.1";
format = "other";
@ -27,19 +26,9 @@ python3.pkgs.buildPythonApplication rec {
owner = "maoschanz";
repo = pname;
rev = version;
sha256 = "sha256-qNaljtuA5E/QaLJ9QILPRQCqOvKmX4ZGq/0z5unA8KA=";
sha256 = "sha256-9nosriI3Kdf1M5/TYFWn1jtQTqNKhBcFh7q3E4Uoq4s=";
};
patches = [
# Fix build with meson 0.61, can be removed on next update.
# https://github.com/NixOS/nixpkgs/issues/167584
(fetchpatch {
url = "https://github.com/maoschanz/drawing/commit/6dd271089af76b69322500778e3ad6615a117dcc.patch";
sha256 = "sha256-4pKWm3LYstVxZ4+gGsZDfM4K+7WBY8EYjylzc/CQZmo=";
includes = [ "data/meson.build" "help/meson.build" ];
})
];
nativeBuildInputs = [
appstream-glib
desktop-file-utils

@ -11,11 +11,11 @@
stdenv.mkDerivation rec {
pname = "drawio";
version = "20.2.3";
version = "20.3.0";
src = fetchurl {
url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/drawio-x86_64-${version}.rpm";
sha256 = "sha256-O/gzXAzvaYJXpexjBSc6jNW1wX0ukwQcpFU8fq4qM4k=";
sha256 = "bfcd363f549ce8dc13ae2287cec5099e4bf1d0d4b6f8deef40a81279f78817e1";
};
nativeBuildInputs = [

@ -0,0 +1,59 @@
{ lib
, stdenv
, fetchFromGitHub
, rustPlatform
, pkg-config
, meson
, ninja
, glib
, gtk4
, libadwaita
, wrapGAppsHook4
, appstream-glib
, desktop-file-utils
}:
stdenv.mkDerivation rec {
pname = "eyedropper";
version = "0.2.0";
src = fetchFromGitHub {
owner = "FineFindus";
repo = pname;
rev = "v${version}";
hash = "sha256-xyvnnWts+VuUFlV/o1cGOM7482ReiHVsn+AfdExYBTM=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
inherit src;
name = "${pname}-${version}";
hash = "sha256-8G1fJ5YiUAzMqDoIjWGDTvtPw8chkxPrOz/c9WZRbhM=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook4
appstream-glib
desktop-file-utils
] ++ (with rustPlatform; [
rust.cargo
rust.rustc
cargoSetupHook
]);
buildInputs = [
glib
gtk4
libadwaita
];
meta = with lib; {
description = "An easy-to-use color picker and editor";
homepage = "https://github.com/FineFindus/eyedropper";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ zendo ];
};
}

@ -128,6 +128,7 @@ stdenv.mkDerivation rec {
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = [ maintainers.sheepforce ];
hydraPlatforms = [];
mainProgram = "PixInsight";
};
}

@ -0,0 +1,49 @@
{ lib
, fetchFromGitLab
, rustPlatform
, cargo
, pkg-config
, binutils-unwrapped
, gtk3-x11
, atk
, glib
, librsvg
, gdk-pixbuf
, wrapGAppsHook
}:
rustPlatform.buildRustPackage rec {
pname = "pizarra";
version = "1.7.3";
src = fetchFromGitLab {
owner = "categulario";
repo = "pizarra-gtk";
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-XP+P2w6s47JQV4spKeMKe/Ktxid7uokGYH4IEJ5VHSc=";
};
cargoSha256 = "sha256-JQZ/95tRlmsrb0EJaPlE8G0fMSeEgLnDi3pkLjcJz/o=";
nativeBuildInputs = [ wrapGAppsHook pkg-config gdk-pixbuf ];
buildInputs = [ gtk3-x11 atk glib librsvg ];
meta = with lib; {
description = "A simple blackboard written in GTK";
longDescription = ''
A simple endless blackboard.
Contains various features, such as:
- Pencil
- Rectangle
- Ellipse
- Line
- Text
- Grids
'';
homepage = "https://pizarra.categulario.tk/en/";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ mglolenstine ];
};
}

@ -24,6 +24,6 @@ mkDerivation {
qca-qt5 qtkeychain qtnetworkauth qtspeech qtxmlpatterns
];
qtWrapperArgs = [
"--prefix SASL_PATH : ${lib.makeSearchPath "lib/sasl2" [ cyrus_sasl libkgapi ]}"
"--prefix SASL_PATH : ${lib.makeSearchPath "lib/sasl2" [ cyrus_sasl.out libkgapi ]}"
];
}

@ -1,7 +1,7 @@
{
stdenv, mkDerivation, lib,
extra-cmake-modules, kdoctools,
breeze-icons, chmlib ? null, discount, djvulibre, ebook_tools, kactivities,
breeze-icons, chmlib, discount, djvulibre, ebook_tools, kactivities,
karchive, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons,
kdbusaddons, kdegraphics-mobipocket, kiconthemes, kjs, khtml, kio, kparts,
kpty, kpurpose, kwallet, kwindowsystem, libkexiv2, libspectre, libzip, phonon, poppler,
@ -16,8 +16,8 @@ mkDerivation {
kcompletion kconfig kconfigwidgets kcoreaddons kdbusaddons
kdegraphics-mobipocket kiconthemes kjs khtml kio kparts kpty kpurpose kwallet
kwindowsystem libkexiv2 libspectre libzip phonon poppler qca-qt5
qtdeclarative qtsvg threadweaver kcrash qtspeech
] ++ lib.optional (!stdenv.isAarch64) chmlib;
qtdeclarative qtsvg threadweaver kcrash qtspeech chmlib
];
# InitialPreference values are too high and end up making okular
# default for anything considered text/plain. Resetting to 1, which

@ -23,7 +23,10 @@ buildDotnetModule rec {
dotnet-runtime = dotnetCorePackages.aspnetcore_6_0;
nugetDeps = if stdenvNoCC.isAarch64 then ./deps-aarch64-linux.nix else ./deps-x86_64-linux.nix;
nugetDeps = ./deps.nix;
# Without this dotnet attempts to restore for Windows targets, which it cannot find the dependencies for
dotnetRestoreFlags = [ "--runtime ${dotnetCorePackages.sdk_6_0.systemToDotnetRid stdenvNoCC.targetPlatform.system}" ];
projectFile = "ArchiSteamFarm.sln";
executables = [ "ArchiSteamFarm" ];

@ -1,292 +0,0 @@
{ fetchNuGet }: [
(fetchNuGet { pname = "AngleSharp"; version = "0.17.1"; sha256 = "038idg33ydy72362qplsd7y8ldifi9zg02dhjli6wy4p47hyqcph"; })
(fetchNuGet { pname = "AngleSharp.XPath"; version = "2.0.1"; sha256 = "0sdxqjwvyf0l1cp4n4i84g7rly8z7ramq0y7vsgqvf6hzx7dnk5i"; })
(fetchNuGet { pname = "ConfigureAwaitChecker.Analyzer"; version = "5.0.0.1"; sha256 = "01llfwhra5m3jj1qpa4rj1hbh01drirakzjc2963vkl9iwrzscyl"; })
(fetchNuGet { pname = "CryptSharpStandard"; version = "1.0.0"; sha256 = "0nikzb92z4a2n969sz747ginwxsbrap5741bcwwxr4r6m2na9jz7"; })
(fetchNuGet { pname = "Humanizer"; version = "2.14.1"; sha256 = "18cycx9gvbc3735chdi2r583x73m2fkz1ws03yi3g640j9zv00fp"; })
(fetchNuGet { pname = "Humanizer.Core"; version = "2.14.1"; sha256 = "1ai7hgr0qwd7xlqfd92immddyi41j3ag91h3594yzfsgsy6yhyqi"; })
(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 = "JetBrains.Annotations"; version = "2022.1.0"; sha256 = "0lsqpssain0v9i3jhpi1c42r5s329y31cvqk5x7gqvy17f29y002"; })
(fetchNuGet { pname = "Markdig.Signed"; version = "0.30.2"; sha256 = "094yy2hfwvnlzap919zmnbfc915v86gd1zb9hfcbfvzbly11rd7s"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "6.0.6"; sha256 = "1fv3xvqc98l3ma4s8f2g4fklifbj1i24fngcvlhfm4j6s295xjj1"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "6.0.6"; sha256 = "1z50gqg0jimk98yd0zr2vxn087h3h1qn08fdcqbaxfgpcw30yi87"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "6.0.6"; sha256 = "0ndah9cqkgswhi60wrnni10j1d2hdg8jljij83lk1wbfqbng86jm"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "6.0.6"; sha256 = "1qp64z6m7sr5ln3sa5b39vj73yd52zs7asqlsws3a9jpisns6vds"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "6.0.6"; sha256 = "0i00xs472gpxbrwx593z520sp8nv3lmqi8z3zrj9cshqckq8knnx"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "6.0.6"; sha256 = "1i66xw8h6qw1p0yf09hdy6l42bkhw3qi8q6zi7933mdkd4r3qr9n"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.JsonPatch"; version = "6.0.0-rc.1.21452.15"; sha256 = "0c3vnaag8gxlxij77n18m3hawpjkjjamsnq5kfjz5cvc7sfg3fwh"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.Mvc.NewtonsoftJson"; version = "6.0.0-rc.1.21452.15"; sha256 = "1xyx358w4fqzxr9cy358agnm86rjijbnvikiqlngz2msgmldxi2z"; })
(fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "6.0.0"; sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; })
(fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.2.0"; sha256 = "018yl113i037m5qhm3z6csb0c4l8kj412dxw2dagdbj07qbxwikj"; })
(fetchNuGet { pname = "Microsoft.CSharp"; version = "4.0.1"; sha256 = "0zxc0apx1gcx361jlq8smc9pfdgmyjh6hpka8dypc9w23nlsh6yj"; })
(fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; })
(fetchNuGet { pname = "Microsoft.CSharp"; version = "4.7.0"; sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; })
(fetchNuGet { pname = "Microsoft.Extensions.ApiDescription.Server"; version = "6.0.5"; sha256 = "1pi2bm3cm0a7jzqzmfc2r7bpcdkmk3hhjfvb2c81j7wl7xdw3624"; })
(fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "5.0.0"; sha256 = "0fqxkc9pjxkqylsdf26s9q21ciyk56h1w33pz3v1v4wcv8yv1v6k"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "5.0.0"; sha256 = "15sdwcyzz0qlybwbdq854bn3jk6kx7awx28gs864c4shhbqkppj4"; })
(fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "5.0.0"; sha256 = "17cz6s80va0ch0a6nqa1wbbbp3p8sqxb96lj4qcw67ivkp2yxiyj"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "5.0.0"; sha256 = "1qa1l18q2jh9azya8gv1p8anzcdirjzd9dxxisb4911i9m1648i3"; })
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "5.0.0"; sha256 = "1yza38675dbv1qqnnhqm23alv2bbaqxp0pb7zinjmw8j2mr5r6wc"; })
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "5.0.0"; sha256 = "1rdmgpg770x8qwaaa6ryc27zh93p697fcyvn5vkxp0wimlhqkbay"; })
(fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "5.0.0"; sha256 = "0swqcknyh87ns82w539z1mvy804pfwhgzs97cr3nwqk6g5s42gd6"; })
(fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.2.0"; sha256 = "0ncnq378pk1immy2dyf75xjf2xn72r4m5gma1njhc4rvhzx9qz11"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "6.0.6"; sha256 = "0kygwac98rxq89g83lyzn21kslvgdkcqfd1dnba2ssw7q056fbgy"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "6.0.6"; sha256 = "0hlxq0k60ras0wj7d7q94dxd8nzjcry0kixxs6z1hyrbm4q0y3ls"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "6.0.6"; sha256 = "1wwwjldbqy6l8x9dlw0512zqac9jplsmnn0rrrwzrlb0p5amz0a4"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "6.0.6"; sha256 = "12b6ya9q5wszfq6yp38lpan8zws95gbp1vs9pydk3v82gai336r3"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "6.0.6"; sha256 = "186ammhxnkh4m68f1s70rca23025lwzhxnc7m82wjg18rwz2vnkl"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "6.0.6"; sha256 = "088ggz1ac5z4ir707xmxiw4dlcaacfgmyvvlgwvsxhnv3fngf8b6"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "6.0.6"; sha256 = "117rz4gm7ihns5jlc2x05h7kdcgrl0ic4v67dzfbbr9kpra1bmcw"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "6.0.6"; sha256 = "0fjbjh7yxqc9h47ix37y963xi9f9y99jvl26cw3x3kvjlb8x0bgj"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "6.0.6"; sha256 = "04i4d7zhw7cqhfl84p93hpib8lhvkhmprip1li64sq5zrs36dxpx"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "6.0.6"; sha256 = "0l15md6rzr2dvwvnk8xj1qz1dcjcbmp0aglnflrj8av60g5r1kwd"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "6.0.6"; sha256 = "1a6hvkiy2z6z7v7rw1q61qqlw7w0hzc4my3rm94kwgjcv5qkpr5k"; })
(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 = "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.OpenApi"; version = "1.2.3"; sha256 = "07b19k89whj69j87afkz86gp9b3iybw8jqwvlgcn43m7fb2y99rr"; })
(fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.2.0"; sha256 = "0l05smcgjzdfa5f60f9q5lylap3i21aswxbava92s19bgv46w2rv"; })
(fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.2.0"; sha256 = "1238hx3hdg22s123cxygdfm89h54abw1jv6az6hl8h76ip39ybdp"; })
(fetchNuGet { pname = "Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; })
(fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "5.0.0"; sha256 = "102hvhq2gmlcbq8y2cb7hdr2dnmjzfp2k3asr1ycwrfacwyaak7n"; })
(fetchNuGet { pname = "MSTest.TestAdapter"; version = "2.2.10"; sha256 = "0w6c55n30w6imm0rjafl2sg0x8vf9852xmil9dzqb4h36cs7v6y6"; })
(fetchNuGet { pname = "MSTest.TestFramework"; version = "2.2.10"; sha256 = "0j5p3p5a0pr3rmzg7va21z3w0lb929zqj5xcdd81iys5vvh1hjiw"; })
(fetchNuGet { pname = "NETStandard.Library"; version = "1.6.1"; sha256 = "1z70wvsx2d847a2cjfii7b83pjfs34q05gb037fdjikv5kbagml8"; })
(fetchNuGet { pname = "Newtonsoft.Json"; version = "10.0.3"; sha256 = "06vy67bkshclpz69kps4vgzc9h2cgg41c8vlqmdbwclfky7c4haq"; })
(fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.1"; sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb"; })
(fetchNuGet { pname = "Newtonsoft.Json"; version = "9.0.1"; sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r"; })
(fetchNuGet { pname = "Newtonsoft.Json.Bson"; version = "1.0.2"; sha256 = "0c27bhy9x3c2n26inq32kmp6drpm71n6mqnmcr19wrlcaihglj35"; })
(fetchNuGet { pname = "Nito.AsyncEx.Coordination"; version = "5.1.2"; sha256 = "0sxvmqnv8a94k3pq1w3lh1vgjb8l62h1qamxcjl3pkq634h2fwrl"; })
(fetchNuGet { pname = "Nito.AsyncEx.Tasks"; version = "5.1.2"; sha256 = "11wp47kc69sjdxrbg5pgx0wlffqlp0x5kr54ggnz2v19kmjz362v"; })
(fetchNuGet { pname = "Nito.Collections.Deque"; version = "1.1.1"; sha256 = "152564q3s0n5swfv5p5rx0ghn2sm0g2xsnbd7gv8vb9yfklv7yg8"; })
(fetchNuGet { pname = "Nito.Disposables"; version = "2.2.1"; sha256 = "1hx5k8497j34kxxgh060bvij0vfnraw90dmm3h9bmamcdi8wp80l"; })
(fetchNuGet { pname = "NLog"; version = "5.0.1"; sha256 = "1ln6qxm2kgq8vr4kja41y9b6mhcf2812fi7vbkmbc5q1bivawf1b"; })
(fetchNuGet { pname = "NLog.Extensions.Logging"; version = "5.0.1"; sha256 = "1z7cp2zdnaiijm6m0449h5q4mpij3985nbpayscwbifsnv8xl9ci"; })
(fetchNuGet { pname = "NLog.Web.AspNetCore"; version = "5.1.0"; sha256 = "18jaxjbyaw5q166px5n5hanlwh0swlpw0fbcwh2qhvla7ik11gyk"; })
(fetchNuGet { pname = "NuGet.Frameworks"; version = "5.11.0"; sha256 = "0wv26gq39hfqw9md32amr5771s73f5zn1z9vs4y77cgynxr73s4z"; })
(fetchNuGet { pname = "protobuf-net"; version = "3.0.101"; sha256 = "0594qckbc0lh61sw74ihaq4qmvf1lf133vfa88n443mh7lxm2fwf"; })
(fetchNuGet { pname = "protobuf-net.Core"; version = "3.0.101"; sha256 = "1kvn9rnm6f0jxs0s9scyyx2f2p8rk03qzc1f6ijv1g6xgkpxkq1m"; })
(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.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
(fetchNuGet { pname = "runtime.native.System.IO.Compression"; version = "4.3.0"; sha256 = "1vvivbqsk6y4hzcid27pqpm5bsi6sc50hvqwbcx8aap5ifrxfs8d"; })
(fetchNuGet { pname = "runtime.native.System.Net.Http"; version = "4.3.0"; sha256 = "1n6rgz5132lcibbch1qlf0g9jk60r0kqv087hxc0lisy50zpm7kk"; })
(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 = "runtime.win.Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0k1h8nnp1s0p8rjwgjyj1387cc1yycv0k22igxc963lqdzrx2z36"; })
(fetchNuGet { pname = "runtime.win.System.Console"; version = "4.3.0"; sha256 = "0x2yajfrbc5zc6g7nmlr44xpjk6p1hxjq47jn3xki5j7i33zw9jc"; })
(fetchNuGet { pname = "runtime.win.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "16fbn4bcynad1ygdq0yk1wmckvs8jvrrf104xa5dc2hlc8y3x58f"; })
(fetchNuGet { pname = "runtime.win.System.IO.FileSystem"; version = "4.3.0"; sha256 = "1c01nklbxywszsbfaxc76hsz7gdxac3jkphrywfkdsi3v4bwd6g8"; })
(fetchNuGet { pname = "runtime.win.System.Net.Primitives"; version = "4.3.0"; sha256 = "1dixh195bi7473n17hspll6i562gghdz9m4jk8d4kzi1mlzjk9cf"; })
(fetchNuGet { pname = "runtime.win.System.Net.Sockets"; version = "4.3.0"; sha256 = "0lr3zki831vs6qhk5wckv2b9qbfk9rcj0ds2926qvj1b9y9m6sck"; })
(fetchNuGet { pname = "runtime.win.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1700famsxndccfbcdz9q14qb20p49lax67mqwpgy4gx3vja1yczr"; })
(fetchNuGet { pname = "SteamKit2"; version = "2.4.1"; sha256 = "13f7jra2d0kjlvnk4dghzhx8nhkd001i4xrkf6m19gisjvpjhpdr"; })
(fetchNuGet { pname = "Swashbuckle.AspNetCore"; version = "6.4.0"; sha256 = "1jkgjnkjcb6dif0lzn7whjwwdd4fi6mzkmkdx8sfmv5cffzq4fvk"; })
(fetchNuGet { pname = "Swashbuckle.AspNetCore.Annotations"; version = "6.4.0"; sha256 = "0d01dpl4bcnrxqxyxcx0jhh9v375fqhva9w0siadj5y6m15h1sl5"; })
(fetchNuGet { pname = "Swashbuckle.AspNetCore.Newtonsoft"; version = "6.4.0"; sha256 = "0yyh74b8vlngg2mg728ds86467y9vkxys29yszl129g2n8fk5q0m"; })
(fetchNuGet { pname = "Swashbuckle.AspNetCore.Swagger"; version = "6.4.0"; sha256 = "1wccx8ig2xc6xcfh774m5z34w6jn0hjffiwc5sq9yl63zkv01vnn"; })
(fetchNuGet { pname = "Swashbuckle.AspNetCore.SwaggerGen"; version = "6.4.0"; sha256 = "1k58j6lfqcgrl5f7dw0xnbq6w5bvr42a9fc44vwbzl52kzjdlnh2"; })
(fetchNuGet { pname = "Swashbuckle.AspNetCore.SwaggerUI"; version = "6.4.0"; sha256 = "1rxgf0hbkkzywh8z7asky2rrh1gpnrr514v1aj5vnmh49sa31kiz"; })
(fetchNuGet { pname = "System.AppContext"; version = "4.3.0"; sha256 = "1649qvy3dar900z3g817h17nl8jp4ka5vcfmsr05kh0fshn7j3ya"; })
(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.3.0"; sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8"; })
(fetchNuGet { pname = "System.Collections.Immutable"; version = "1.7.1"; sha256 = "1nh4nlxfc7lbnbl86wwk1a3jwl6myz5j6hvgh5sp4krim9901hsq"; })
(fetchNuGet { pname = "System.Collections.NonGeneric"; version = "4.3.0"; sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k"; })
(fetchNuGet { pname = "System.Collections.Specialized"; version = "4.3.0"; sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20"; })
(fetchNuGet { pname = "System.ComponentModel"; version = "4.3.0"; sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb"; })
(fetchNuGet { pname = "System.ComponentModel.Primitives"; version = "4.3.0"; sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0"; })
(fetchNuGet { pname = "System.ComponentModel.TypeConverter"; version = "4.3.0"; sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x"; })
(fetchNuGet { pname = "System.Composition"; version = "6.0.0"; sha256 = "1p7hysns39cc24af6dwd4m48bqjsrr3clvi4aws152mh2fgyg50z"; })
(fetchNuGet { pname = "System.Composition.AttributedModel"; version = "6.0.0"; sha256 = "1mqrblb0l65hw39d0hnspqcv85didpn4wbiwhfgj4784wzqx2w6k"; })
(fetchNuGet { pname = "System.Composition.Convention"; version = "6.0.0"; sha256 = "02km3yb94p1c4s7liyhkmda0g71zm1rc8ijsfmy4bnlkq15xjw3b"; })
(fetchNuGet { pname = "System.Composition.Hosting"; version = "6.0.0"; sha256 = "0big5nk8c44rxp6cfykhk7rxvn2cgwa99w6c3v2a36adc3lj36ky"; })
(fetchNuGet { pname = "System.Composition.Runtime"; version = "6.0.0"; sha256 = "0vq5ik63yii1784gsa2f2kx9w6xllmm8b8rk0arid1jqdj1nyrlw"; })
(fetchNuGet { pname = "System.Composition.TypedParts"; version = "6.0.0"; sha256 = "0y9pq3y60nyrpfy51f576a0qjjdh61mcv8vnik32pm4bz56h9q72"; })
(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.3.0"; sha256 = "0z6m3pbiy0qw6rn3n209rrzf9x1k4002zh90vwcrsym09ipm2liq"; })
(fetchNuGet { pname = "System.Diagnostics.TextWriterTraceListener"; version = "4.3.0"; sha256 = "09db74f36wkwg30f7v7zhz1yhkyrnl5v6bdwljq1jdfgzcfch7c3"; })
(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.TraceSource"; version = "4.3.0"; sha256 = "1kyw4d7dpjczhw6634nrmg7yyyzq72k75x38y0l0nwhigdlp1766"; })
(fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; })
(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.3.0"; sha256 = "1xwl230bkakzzkrggy1l1lxmm3xlhk4bq2pkv790j5lm8g887lxq"; })
(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.Compression"; version = "4.3.0"; sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz"; })
(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.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.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.3.0"; sha256 = "0c87k50rmdgmxx7df2khd9qj7q35j9rzdmm2572cc55dygmdk3ii"; })
(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.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.6.0"; sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; })
(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 = "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.3.0"; sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii"; })
(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.1.1"; sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k"; })
(fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.3.0"; sha256 = "01vv2p8h4hsz217xxs0rixvb7f2xzbh6wv1gzbfykcbfrza6dvnf"; })
(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.3.0"; sha256 = "03sq183pfl5kp7gkvq77myv7kbpdnq3y0xj7vi4q1kaw54sny0ml"; })
(fetchNuGet { pname = "System.Security.Cryptography.Cng"; version = "4.3.0"; sha256 = "1k468aswafdgf56ab6yrn7649kfqx2wm9aslywjam1hdmk5yypmv"; })
(fetchNuGet { pname = "System.Security.Cryptography.Csp"; version = "4.3.0"; sha256 = "1x5wcrddf2s3hb8j78cry7yalca4lb5vfnkrysagbn6r9x6xvrx1"; })
(fetchNuGet { pname = "System.Security.Cryptography.Encoding"; version = "4.3.0"; sha256 = "1jr6w70igqn07k5zs1ph6xja97hxnb3mqbspdrff6cvssgrixs32"; })
(fetchNuGet { pname = "System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0givpvvj8yc7gv4lhb6s1prq6p2c4147204a0wib89inqzd87gqc"; })
(fetchNuGet { pname = "System.Security.Cryptography.Primitives"; version = "4.3.0"; sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby"; })
(fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "6.0.0"; sha256 = "05kd3a8w7658hjxq9vvszxip30a479fjmfq4bq1r95nrsvs4hbss"; })
(fetchNuGet { pname = "System.Security.Cryptography.X509Certificates"; version = "4.3.0"; sha256 = "0valjcz5wksbvijylxijjxb1mp38mdhv03r533vnx1q3ikzdav9h"; })
(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 = "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 = "6.0.0"; sha256 = "0gm2kiz2ndm9xyzxgi0jhazgwslcs427waxgfa30m7yqll1kcrww"; })
(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.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.Overlapped"; version = "4.3.0"; sha256 = "1nahikhqh9nk756dh8p011j36rlcp1bzz3vwi2b4m1l2s3vz8idm"; })
(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.ThreadPool"; version = "4.3.0"; sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1"; })
(fetchNuGet { pname = "System.Threading.Timer"; version = "4.3.0"; sha256 = "1nx773nsx6z5whv8kaa1wjh037id2f1cxhb69pvgv12hd2b6qs56"; })
(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 = "System.Xml.XmlDocument"; version = "4.3.0"; sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi"; })
(fetchNuGet { pname = "zxcvbn-core"; version = "7.0.92"; sha256 = "1pbi0n3za8zsnkbvq19njy4h4hy12a6rv4rknf4a2m1kdhxb3cgx"; })
]

@ -55,12 +55,6 @@
(fetchNuGet { pname = "Humanizer.Core.zh-Hant"; version = "2.14.1"; sha256 = "0qxjnbdj645l5sd6y3100yyrq1jy5misswg6xcch06x8jv7zaw1p"; })
(fetchNuGet { pname = "JetBrains.Annotations"; version = "2022.1.0"; sha256 = "0lsqpssain0v9i3jhpi1c42r5s329y31cvqk5x7gqvy17f29y002"; })
(fetchNuGet { pname = "Markdig.Signed"; version = "0.30.2"; sha256 = "094yy2hfwvnlzap919zmnbfc915v86gd1zb9hfcbfvzbly11rd7s"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "6.0.6"; sha256 = "1fv3xvqc98l3ma4s8f2g4fklifbj1i24fngcvlhfm4j6s295xjj1"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "6.0.6"; sha256 = "1z50gqg0jimk98yd0zr2vxn087h3h1qn08fdcqbaxfgpcw30yi87"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "6.0.6"; sha256 = "0ndah9cqkgswhi60wrnni10j1d2hdg8jljij83lk1wbfqbng86jm"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "6.0.6"; sha256 = "1qp64z6m7sr5ln3sa5b39vj73yd52zs7asqlsws3a9jpisns6vds"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "6.0.6"; sha256 = "0i00xs472gpxbrwx593z520sp8nv3lmqi8z3zrj9cshqckq8knnx"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "6.0.6"; sha256 = "1i66xw8h6qw1p0yf09hdy6l42bkhw3qi8q6zi7933mdkd4r3qr9n"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.JsonPatch"; version = "6.0.0-rc.1.21452.15"; sha256 = "0c3vnaag8gxlxij77n18m3hawpjkjjamsnq5kfjz5cvc7sfg3fwh"; })
(fetchNuGet { pname = "Microsoft.AspNetCore.Mvc.NewtonsoftJson"; version = "6.0.0-rc.1.21452.15"; sha256 = "1xyx358w4fqzxr9cy358agnm86rjijbnvikiqlngz2msgmldxi2z"; })
(fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "6.0.0"; sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; })
@ -77,17 +71,6 @@
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "5.0.0"; sha256 = "1rdmgpg770x8qwaaa6ryc27zh93p697fcyvn5vkxp0wimlhqkbay"; })
(fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "5.0.0"; sha256 = "0swqcknyh87ns82w539z1mvy804pfwhgzs97cr3nwqk6g5s42gd6"; })
(fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.2.0"; sha256 = "0ncnq378pk1immy2dyf75xjf2xn72r4m5gma1njhc4rvhzx9qz11"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "6.0.6"; sha256 = "0kygwac98rxq89g83lyzn21kslvgdkcqfd1dnba2ssw7q056fbgy"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "6.0.6"; sha256 = "0hvawclkpp6srhbdl0b1ma2xsvf6yy8k8s1fp4by249qzpy26w7l"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "6.0.6"; sha256 = "1wwwjldbqy6l8x9dlw0512zqac9jplsmnn0rrrwzrlb0p5amz0a4"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "6.0.6"; sha256 = "12b6ya9q5wszfq6yp38lpan8zws95gbp1vs9pydk3v82gai336r3"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "6.0.6"; sha256 = "186ammhxnkh4m68f1s70rca23025lwzhxnc7m82wjg18rwz2vnkl"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "6.0.6"; sha256 = "088ggz1ac5z4ir707xmxiw4dlcaacfgmyvvlgwvsxhnv3fngf8b6"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "6.0.6"; sha256 = "117rz4gm7ihns5jlc2x05h7kdcgrl0ic4v67dzfbbr9kpra1bmcw"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "6.0.6"; sha256 = "0fjbjh7yxqc9h47ix37y963xi9f9y99jvl26cw3x3kvjlb8x0bgj"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "6.0.6"; sha256 = "04i4d7zhw7cqhfl84p93hpib8lhvkhmprip1li64sq5zrs36dxpx"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "6.0.6"; sha256 = "0l15md6rzr2dvwvnk8xj1qz1dcjcbmp0aglnflrj8av60g5r1kwd"; })
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "6.0.6"; sha256 = "1a6hvkiy2z6z7v7rw1q61qqlw7w0hzc4my3rm94kwgjcv5qkpr5k"; })
(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 = "5.0.0"; sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc"; })
@ -156,13 +139,6 @@
(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 = "runtime.win.Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0k1h8nnp1s0p8rjwgjyj1387cc1yycv0k22igxc963lqdzrx2z36"; })
(fetchNuGet { pname = "runtime.win.System.Console"; version = "4.3.0"; sha256 = "0x2yajfrbc5zc6g7nmlr44xpjk6p1hxjq47jn3xki5j7i33zw9jc"; })
(fetchNuGet { pname = "runtime.win.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "16fbn4bcynad1ygdq0yk1wmckvs8jvrrf104xa5dc2hlc8y3x58f"; })
(fetchNuGet { pname = "runtime.win.System.IO.FileSystem"; version = "4.3.0"; sha256 = "1c01nklbxywszsbfaxc76hsz7gdxac3jkphrywfkdsi3v4bwd6g8"; })
(fetchNuGet { pname = "runtime.win.System.Net.Primitives"; version = "4.3.0"; sha256 = "1dixh195bi7473n17hspll6i562gghdz9m4jk8d4kzi1mlzjk9cf"; })
(fetchNuGet { pname = "runtime.win.System.Net.Sockets"; version = "4.3.0"; sha256 = "0lr3zki831vs6qhk5wckv2b9qbfk9rcj0ds2926qvj1b9y9m6sck"; })
(fetchNuGet { pname = "runtime.win.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1700famsxndccfbcdz9q14qb20p49lax67mqwpgy4gx3vja1yczr"; })
(fetchNuGet { pname = "SteamKit2"; version = "2.4.1"; sha256 = "13f7jra2d0kjlvnk4dghzhx8nhkd001i4xrkf6m19gisjvpjhpdr"; })
(fetchNuGet { pname = "Swashbuckle.AspNetCore"; version = "6.4.0"; sha256 = "1jkgjnkjcb6dif0lzn7whjwwdd4fi6mzkmkdx8sfmv5cffzq4fvk"; })
(fetchNuGet { pname = "Swashbuckle.AspNetCore.Annotations"; version = "6.4.0"; sha256 = "0d01dpl4bcnrxqxyxcx0jhh9v375fqhva9w0siadj5y6m15h1sl5"; })
@ -276,7 +252,6 @@
(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.Overlapped"; version = "4.3.0"; sha256 = "1nahikhqh9nk756dh8p011j36rlcp1bzz3vwi2b4m1l2s3vz8idm"; })
(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"; })

@ -1,16 +1,16 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=../../../.. -i bash -p curl gnused jq common-updater-scripts nuget-to-nix
set -euox pipefail
#!nix-shell -I nixpkgs=../../../.. -i bash -p curl gnused jq common-updater-scripts
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"
deps_file="$(realpath ./deps)"
deps_file="$(realpath ./deps.nix)"
new_version="$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/JustArchiNET/ArchiSteamFarm/releases" | jq -r 'map(select(.prerelease == false)) | .[0].tag_name')"
old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
if [[ "$new_version" == "$old_version" ]]; then
echo "Already up to date!"
if [[ "$1" != "--deps-only" ]]; then
if [[ "${1-default}" != "--deps-only" ]]; then
exit 0
fi
fi
@ -22,32 +22,8 @@ nixpkgs_path=$(pwd)
if [[ "${1:-}" != "--deps-only" ]]; then
update-source-version ArchiSteamFarm "$new_version"
fi
store_src="$(nix-build -A ArchiSteamFarm.src --no-out-link)"
platforms="$(nix-instantiate --strict --eval --json -A ArchiSteamFarm.meta.platforms | jq -r .[])"
src="$(mktemp -d /tmp/ArchiSteamFarm-src.XXX)"
trap '
rm -r "$src"
' EXIT
cp -rT "$store_src" "$src"
chmod -R +w "$src"
pushd "$src"
export DOTNET_NOLOGO=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
for i in $platforms; do
nix-shell -I nixpkgs="$nixpkgs_path" -p dotnet-sdk_6 --argstr system $i --run "
mkdir ./nuget_pkgs-$i
for project in ArchiSteamFarm/ArchiSteamFarm.csproj ArchiSteamFarm.Tests/ArchiSteamFarm.Tests.csproj; do
dotnet restore \$project --packages ./nuget_pkgs-$i
done;
nuget-to-nix ./nuget_pkgs-$i > $deps_file-$i.nix" \
|| echo "Did you set up binformat for $i?";
done;
$(nix-build -A ArchiSteamFarm.fetch-deps --no-out-link) "$deps_file"
cd "$asf_path"
./web-ui/update.sh

@ -3,13 +3,13 @@
mkDerivation rec {
pname = "AusweisApp2";
version = "1.24.1";
version = "1.24.2";
src = fetchFromGitHub {
owner = "Governikus";
repo = "AusweisApp2";
rev = version;
sha256 = "sha256-Uoi12odfJGyNc8Ap7E/zm4xklYdPPQvCGNxjb9AWJOI=";
sha256 = "sha256-p38zcTFbCyImiGVCr5o/QQ6BT8U2SMiHeYE3aTNYpJs=";
};
nativeBuildInputs = [ cmake pkg-config ];

@ -1,21 +1,22 @@
{ fetchFromGitHub, lib, rustPlatform }:
{ lib, rustPlatform, fetchFromGitHub }:
rustPlatform.buildRustPackage rec {
pname = "genact";
version = "0.12.0";
version = "1.0.2";
src = fetchFromGitHub {
owner = "svenstaro";
repo = pname;
rev = "v${version}";
sha256 = "sha256-ouDaOs72vivJBZVwcJhv4YoPKQOEBctUTqubvrpoBtI=";
sha256 = "sha256-lZNVXBIYl9niqdwNcSzQwQTdxlA4kKQ/WrEt93cQDJU=";
};
cargoSha256 = "sha256-csubycZaBUHPp8XJ1C+nWw7DzVGVJm38/Dgw41qUMYQ=";
cargoSha256 = "sha256-9IiA7KAaj9bLJ7QSB/ojLEiUVv0FGYsu9by4NSfMtiE=";
meta = with lib; {
description = "A nonsense activity generator";
homepage = "https://github.com/svenstaro/genact";
changelog = "https://github.com/svenstaro/genact/blob/v${version}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
};

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

Loading…
Cancel
Save